フィボナッチ数列:次の数字は前の数字とその前の2つを足した数字。
ghci> let fib=0:1:[a+b|(a,b)<-zip fib (tail fib)] ghci> take 20 $ fib [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181]
素数:1と自分自身以外のどんな自然数によっても割り切れない数。
ghci> take 20 $ map (\[a,b]->b) $filter (\a->length a==2) [(filter (\a->x `rem` a == 0) [1..x])|x<-[2..]] [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]
素数(エラトステネスの篩):リストの先頭の数を素数リストに記録し、残りのリストからその倍数を削除したリストを作成する。そのリストの先頭の数を素数リストに追加し・・・と言う再帰。
ghci> let prime (x:xs) = x:prime(filter (\a->a `rem` x /=0) xs) ghci> take 20 $ prime [2..] [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]