Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/HASKELL/Comprehensions1.hs.html -- http://angg.twu.net/HASKELL/Comprehensions1.hs -- (find-angg "HASKELL/Comprehensions1.hs") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Notes on the chapter "5. List Comprehensions" of Hutton's book. -- (find-books "__comp/__comp.el" "haskell-hutton") -- (find-books "__comp/__comp.el" "haskell-hutton" "List comprehensions") -- (find-es "haskell" "list-comprehensions") -- (find-angg "HASKELL/DoNotation1.hs") -- -- (defun hc () (interactive) (find-angg "HASKELL/Comprehensions1.hs")) import Control.Monad {- * (eepitch-ghci) * (eepitch-kill) * (eepitch-ghci) :load Comprehensions1.hs [x^2 | x <- [1..5]] [(x,y) | x <- [1,2,3], y <- [4,5]] [(x,y) | y <- [4,5], x <- [1,2,3]] [(x,y) | x <- [1..3], y <- [x..3]] -} concat :: [[a]] -> [a] concat xss = [x | xs <- xss, x <- xs] firsts :: [(a,b)] -> [a] firsts ps = [x | (x,_) <- ps] -- length :: [a] -> Int -- length xs = sum [1 | _ <- xs] factors :: Int -> [Int] factors n = [x | x <- [1..n], n `mod` x == 0] prime :: Int -> Bool prime n = factors n == [1,n] primes :: Int -> [Int] primes n = [x | x <- [2..n], prime x] find :: Eq a => a -> [(a,b)] -> [b] find k t = [v | (k',v) <- t, k == k'] pairs :: [a] -> [(a,a)] pairs xs = zip xs (tail xs) sorted :: Ord a => [a] -> Bool sorted xs = and [x <= y | (x,y) <- pairs xs] positions :: Eq a => a -> [a] -> [Int] positions x xs = [i | (x',i) <- zip xs [0..], x == x'] lowers :: String -> Int lowers xs = length [x | x <- xs, x >= 'a' && x <= 'z'] count :: Char -> String -> Int count x xs = length [x' | x' <- xs, x == x'] {- * (eepitch-ghci) * (eepitch-kill) * (eepitch-ghci) :load Comprehensions1.hs factors 15 factors 7 prime 15 prime 7 primes 40 find 'b' [('a',1),('b',2),('c',3),('b',4)] zip ['a','b','c'] [1,2,3,4] pairs [1,2,3,4] sorted [1,2,3,4] sorted [1,3,2,4] positions False [True, False, True, False] "abcde" !! 2 take 3 "abcde" length "abcde" zip "abc" [1,2,3,4] lowers "Haskell" count 's' "Mississippi" -} -- TODO: -- (find-books "__comp/__comp.el" "haskell-hutton") -- (find-books "__comp/__comp.el" "haskell-hutton" "The Caesar cipher") -- Local Variables: -- coding: utf-8-unix -- End: