cs_lang:haskell
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
cs_lang:haskell [2012/04/29 11:37] – cedric | cs_lang:haskell [2012/04/30 09:36] – [Increment a number] cedric | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Presentation ====== | ====== Presentation ====== | ||
- | Paradimg | + | ===== Paradigm ===== |
- | * functionneal | + | * purely-functional; |
- | * lazy evaluation; | + | * lazy evaluation. |
- | Typing discipline | + | ===== Typing discipline |
- | * Unordered List Item | + | |
* static typed; | * static typed; | ||
- | * strong types; | + | * strongly typed; |
- | * inferred; | + | * inferred. |
- | * lazy evaluation; | + | |
====== Learning Haskell ====== | ====== Learning Haskell ====== | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ====== Simple examples ====== | ||
+ | |||
+ | You can compare functions below with the [[cs_lang: | ||
+ | |||
+ | ===== Increment a number ===== | ||
+ | <code haskell> | ||
+ | let inc = (+) n | ||
+ | |||
+ | -- Alternative: | ||
+ | let inc n = succ n | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Caeser cipher ===== | ||
+ | |||
+ | <code haskell> | ||
+ | -- Shifts a character to the right if positive, left if negative. | ||
+ | shift :: Int -> Char -> Char | ||
+ | shift n c | isUpper c = chr $ ord ' | ||
+ | | isLower c = chr $ ord ' | ||
+ | | otherwise = c | ||
+ | |||
+ | |||
+ | encode :: Int -> String -> String | ||
+ | encode _ [] = [] | ||
+ | encode n xs = map (shift n) xs | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Parity ===== | ||
+ | <code haskell> | ||
+ | parity :: Integral a => [a] -> [Bool] | ||
+ | -- Using recursion | ||
+ | parity [] = [] | ||
+ | parity (x:list) = [even x] ++ parity list | ||
+ | |||
+ | -- Using map | ||
+ | parity list = map even list | ||
+ | </ |
cs_lang/haskell.txt · Last modified: 2012/04/30 16:51 by cedric