-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= example codes for Haskell, a functional language -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ---- list ---- Main> length [0,1,2,3] +---------------------------------+ 4 | length [] = 0 | Main> length ['a', 'b'] | length (x:xs) = 1 + length xs | 2 +---------------------------------+ Main> length [[1,2], [2,3,4,5], [7,8]] 3 Main> ---- list comprehension ---- +----------------------------------------------------------+ | qsort [] = [] | | qsort (x:xs) = qsort(left) ++ [x] ++ qsort(right) where | | left = [ y | y <- xs, y < x ] | | right = [ z | z <- xs, z >= x ] | +----------------------------------------------------------+ Main> [ x+1 | x <- [1,2,3,4,5] ] [2,3,4,5,6] Main> [ x | x <- [1,2,3,4,5], x > 3 ] [4,5] Main> qsort [44, 22, 1, 101, 23] [1,22,23,44,101] Main> ---- higher order function ---- Main> map addone [1,2,3,4,5] +---------------------------+ [2,3,4,5,6] | addone x = x + 1 | Main> alladdone [1,2,3,4,5] | alladdone = map addone | [2,3,4,5,6] | sum = foldr (+) 0 | Main> map (+ 4) [1,2,3,4,5] +---------------------------+ [5,6,7,8,9] Main> map (* 2) [1,2,3,4,5] [2,4,6,8,10] Main> foldr (+) 0 [1,2,3,4,5,6] 21 Main> sum [1,2,3,4,5,6] 21 Main> ---- infinite list, lazy evaluation ---- Main> take 3 n +---------------------------+ [1,2,3] | from n = n : from(n + 1) | Main> sum (take 100 n) | n = from 1 | 5050 +---------------------------+ Main>