Числа Фибоначчи в Haskell
Пример для версий
GHC 6.10.4
Этот пример использует одну из основных особенностей языка Haskell — возможность ленивых вычислений и использования бесконечных списков. Бесконечный список чисел Фибоначчи fibs
определяется при помощи фунции zipWith
, которая применяет первый аргумент (функцию двух переменных, в данном случае +
) к парам соответствующих элементов второго и третьего аргументов (списков). tail fibs
возвращает хвост списка fibs
(т.е. все элементы, кроме первого). Таким образом первый элемент списка, возвращаемого zipWith
, является суммой первого и второго элементов списка fibs
и становится третьим его элементом.
module Main where
import Text.Printf
fibs :: [Int]
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
line n = printf "%d, " $ fibs !! n
main = do
sequence_ $ map line [1..16]
putStrLn "..."
Комментарии
]]>blog comments powered by Disqus
]]>