background preloader

Haskell tutorials

Facebook Twitter

Haskell Lectures - CS 1501. Lecture 1 Outlines class structure, syllabus, grading policies, and reference text.

Haskell Lectures - CS 1501

Introduces the origin and theory behind Haskell. Lecture 2 Introduces Lists and Tuples, the most important data structures in Haskell. Lecture 3. Learn Haskell Fast and Hard. Tl;dr: A very short and dense tutorial for learning Haskell.

Learn Haskell Fast and Hard

Thanks to Oleg Taykalo you can find a Russian translation here: Part 1 & Part 2 ; Table of Content I really believe all developers should learn Haskell. I don’t think everyone needs to be super Haskell ninjas, but they should at least discover what Haskell has to offer. Category Theory, The essence of interface-based design - Erik Meijer. A QuickCheck Tutorial: Generators.

QuickCheck is a Haskell library for testing properties using randomly generated values.

A QuickCheck Tutorial: Generators

It's one of the most popular Haskell libraries and part of the reason why functional programming has mattered. In short, we can use functions to express properties about our programs and QuickCheck to test that such properties hold for large numbers of random cases. For example, given a function to reverse the elements of a list: Lecture notes and assignments. NICTA/course. A Gentle Introduction to Parsec ¶ blog.barrucadu.

It seems to me that there aren’t many step-by-step introductions to parsec, where you build up a parser as you go.

A Gentle Introduction to Parsec ¶ blog.barrucadu

This is especially the case for applicative parsec, which is a shame as applicative functors are nice. So, I wrote one. Today, we are going to learn how to use applicatives and parsec to parse a CSV file. We’ll start off with a very basic one where there can be no commas or escape characters in the fields, then add support for quoted fields which can contain any character, and then we’ll add support for special escape characters (numeric literals and the like).

Finally, I’ll leave two small exercises that you might want to work on, just to check that you managed to get everything. The Basic Parser > import Text.Parsec> import Control.Applicative ((<$), (<*), (*>), liftA)> import Data.Char (chr)> > parseCSV :: String -> Either ParseError [[String]]> parseCSV = ... Great things have small beginnings. > parseCSV = parse csvp "" See, no variables! Haskell from C: Where are the for Loops? If you're coming from a language like C, Haskell can take some getting used to.

Haskell from C: Where are the for Loops?

It's typical for a new language to feel a little different, but in Haskell the differences are more dramatic, and more fundamental. In particular... Where are the for loops? In most imperative languages, for loops are all over the place, and are used for a wide variety of different things. Whether you're squaring every value of an array or finding its sum, you're probably using a for loop. YouTube. C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13. Welcome to a new technical series on Channel 9 folded into a different kind of 9 format: C9 Lectures.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13

These are what you think they are, lectures. They are not conversational in nature (like most of what you're used to on 9), but rather these pieces are entirely focused on education, coming to you in the form of a series of high quality technical lectures (1 or more per topic) on a single topic. We kick off C9 Lectures with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. Erik Meijer (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13. C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 3 of 13. C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 4 of 13.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 5 of 13. In Chapter 5, Dr.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 5 of 13

Meijer introduces and digs into List Comprehensions. In mathematics, comprehension notation is used to construct new sets from old sets. In Haskell, you can create new lists from old lists using a similarcomprehension syntax: [x^2 | x <- [1..5]] The above notation represents the list [1,4,9,16,25] of all numbers x^2 such that x is an element of the list [1..5]. You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain): C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 6 of 13. C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 7 of 13. In Chapter 7, Dr.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 7 of 13

Meijer teaches us about Higher-Order Functions. A function is called higher-order if it takes a function as an argument and returns a function as a result: twice :: (a -> a) -> a -> atwice f x = f (f x) The function twice above is higher order because it takes a function (f x) as it first argument and returns a function (f(fx)) C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 8 of 13. In Chapter 8, Functional Parsers, it's all about parsing and parsers.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 8 of 13

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 9 of 13. In Chapter 9, Interactive Programs, Dr.

C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 9 of 13

Meijer will teach us how to make programs in Haskell that are side-effecting:interactive. Haskell programs are pure mathematical functions with no side effects. That said, you want to be able to write Haskell programs that can read input from the keyboard and write output to the screen which are in fact side effects. So, interactive programs have side effects... C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 10 of 13. In Chapter 10, Declaring Types and Classes, Dr. Meijer teaches us about type declarations, data declarations, arithmetic expressions, etc. In Haskell, a new name for an existing type can be defined using atype declaration:type String = [Char]String is a synonym for the type [Char]. Like function definitions, type declarations can also have parameters.

Type declarations can be nested, butnot recursive. Nested: type Pos = (Int,Int) C9 Lectures: Dr. Graham Hutton - Functional Programming Fundamentals Chapter 11 of 13. Yes. You read the title correctly! C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 12 of 13. C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 13 of 13. Well, my friends, the day has arrived. For thirteen weeks, you have been provided all the conceptual tools to take the leap into the deep end of the functional programming pool and float safely. The great Dr. Erik Meijer has generously given his value time to teach us the fundamentals as delivered by Graham Hutton in his book Programming in Haskell. Of course, Erik merged his own extensive knowledge, unique perspective and experience into the educational weave: so, you got the best of two worlds. We hope you enjoyed this series, the first in a new a format of Channel 9 content (lectures).

The Channel 9 team and Niner nation thank our dear friend Erik for this stellar contribution to Channel 9 and programming education, generally. In Chapter 13, Equational Reasoning (and also revealing why Erik says 'uhm' and 'you know' so often), the grand finale, Dr. Informatics 1 – Functional Programming Homepage. Questionnaire Please fill out the anonymous course questionnaire. Deadline: 9 Feb 14 Feb 2014. Answers to "What would you say to students considering taking this course? " will be made available to students choosing courses next year. Next year's students will thank you! Resit Exam The contents of this web page will remain intact for use in revision until after the resit exam has passed.

1 - Haskell course 20/Sep/2011 Lab Week. Some interesting features of Haskell’s type system « Wolfgang Jeltsch. One of the most important ingredients of Haskell is its type system. Standard Haskell already provides a lot of useful mechanisms for having things checked at compile time, and the language extensions provided by the Glasgow Haskell Compiler (GHC) improve heavily on this.

In this article, I will present several of Haskell’s type system features. Some of them belong to the standard, others are only available as extensions. This is a write-up of a talk I gave on 31 January 2013 during the Theory Lunch of the Institute of Cybernetics. This talk provided the basics for another Theory Lunch talk, which was about the Constraint kind. Data Visualization, Infographics, and Statistics. Research papers/Functional pearls. Applications and libraries/Theorem provers. Tools for formal reasoning, written in Haskell. 1 Applications Agda. Talk. Hayoo! - Haskell API Search. Found 3181 functions, 73 packages and 32 completions. Character properties and classes for XML and Unicode Character proprties defined by XML and Unicode standards. These modules contain predicates for Unicode blocks and char proprties and character predicates defined by XML.