Haskell/Experimental Modules/Cheat sheet prototype 1
Cheat sheet[edit]
The table is built with templates to make things less tedious. Bold face usage on the function names is a naïve first approach on how to call the attention of newbies for the breadandbutter functions (when contrasted to the advanced stuff). To trigger bold face, set the "key" parameter of the template to some nonnull value.
Naming the last column "Evaluates to" is quite clever because the entries can be really short that way. Doesn't always work, but I like it.  apfeλmus 19:15, 15 May 2010 (UTC)
We can steal the categorization and such from the Prelude documentation.
Name  Type signature  Evaluates to  Example 

Basic functions  basic  
head 
:: [a] > a 
First element of a list.  head [1,2,3] = 1 
tail 
:: [a] > [a] 
All elements after the first one.  tail [1,2,3] = [2,3] 
last 
:: [a] > a 
Last element.  last [1,2,3] = 3 
init 
:: [a] > [a] 
All elements before the last one.  init [1,2,3] = [1,2] 
null 
:: [a] > Bool 
Whether the list is empty.  null ['a','x'] = False

length 
:: [a] > Int 
Number of elements.  length [True,False] = 2 
(!!) 
:: [a] > Int > a 
Element at a given position, starting at 0  [4,5,6] !! 1 = 5. 
reverse 
:: [a] > [a] 
Elements in reverse order.  reverse [1,2,3] = [3,2,1] 
map 
:: (a > b) > [a] > [b] 
Apply a function to each element.  map f [1,2,3] = [f 1, f 2, f 3] 
filter 
:: (a > Bool) > [a] > [a] 
Return only those elements that satisfy the predicate.  filter odd [1..7] = [1,3,5,7] 
(++) 
:: [a] > [a] > [a] 
Append two lists.  [1,2] ++ [3,4] = [1,2,3,4] 
[] 
:: [a] 
The empty list.  [] 
(:) 
:: a > [a] > [a] 
Prepend one element.  [1,2,3] = 1:(2:(3:[])) 
Folds and scans  advanced  
foldl 
:: (a > b > a) > a > [b] > a 
Lefttoright fold  
foldl1 
:: (a > a > a) > [a] > a 
Lefttoright fold, initialized with first element  
scanl 
:: (a > b > a) > a > [b] > [a] 
List of partial lefttoright folds  
scanl1 
:: (a > a > a) > [a] > [a] 
List of partial lefttoright folds, initialized with first element  
foldr 
:: (a > b > b) > b > [a] > b 
Righttoleft fold  
foldr1 
:: (a > a > a) > [a] > a 
Righttoleft fold, initialized with first element  
scanr 
:: (a > b > b) > b > [a] > [b] 
List of partial righttoleft folds  
scanr1 
:: (a > a > a) > [a] > [a] 
List of partial righttoleft folds, initialized with first element 
General notes[edit]
Here we might put some general discussion on the functions. In my opinion, however, general comments would fit better in the actual "Building a vocabulary" module, while the cheat sheet pages would stay as a separate appendices linked from the main body of the book.
Notes on the functions[edit]
More detailed notes. The autogenerated hyperlinks on the table point to the lv. 3 headers here.
head[edit]
I don't know if it is a good idea to repeat information from the table on the comments section. If we choose to do so, templates could be used to help with the formatting as well.
Type signature:
[a] > a
Description:
Evaluates to the first element of a given list.
Additional remarks:
Triggers an error if applied on an empty list.
tail[edit]
Type signature:
[a] > [a]
Description:
Evaluates to the list obtained by dropping the first element of the argument.
Additional remarks:
Triggers an error if applied on an empty list. Evaluates to [] if the list has just a single element.