From 14fd1caae8924a0c9fba43337c6ed47b26ba61e6 Mon Sep 17 00:00:00 2001 From: bryan newbold Date: Tue, 16 Feb 2010 13:49:22 -0500 Subject: ralt to meta trick --- software/haskell.page | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'software/haskell.page') diff --git a/software/haskell.page b/software/haskell.page index 6911315..8e7d9f8 100644 --- a/software/haskell.page +++ b/software/haskell.page @@ -21,6 +21,33 @@ lines indented to the same position as the first non-whitespace after the stuff1 stuff2 +Lists +-------- +Lists in haskell are homogenous: all elements must of the same type. They are +linked lists, so cons-ing on the front is cheap and concatonating on the end +can be expensive. + +Use ++ to concatonate two lists together: + + ['a','b','c'] ++ ['d','e','f'] + +Use : to cons (prepend) a single element: + + 0:[1,2,3,4,5,6] + +Use !! to pull out an element by index (zero indexed): + + ['c','a','t'] !! 1 + +Strings are lists of characters: "baby" is equivalent to ['b','a','b','y'], +which is equivalent to 'b':'a':'b':'y':[]. The empty set is [] and is distinct +from [[]]. + +A couple functions help; 'head' is like 'car' and gives the first element, +'tail' is like 'cdr' and gives everything except the first element, 'last' +gives the last non-empty element, and 'init' gives everything except the +'last'. 'length' gives the number of elements, 'null' is a test to see if this +is the empty list, Compilation ------------ -- cgit v1.2.3