мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | Следующая версияСледующая версия справа и слева | ||
haskell:fibb [19/02/2014 18:50] – vlasov | haskell:fibb [19/02/2014 18:57] – vlasov | ||
---|---|---|---|
Строка 41: | Строка 41: | ||
<code haskell> | <code haskell> | ||
fib 0 1 n | fib 0 1 n | ||
+ | </ | ||
+ | |||
+ | Другой вариант из сайта [[http:// | ||
+ | |||
+ | <code haskell> | ||
+ | {-# LANGUAGE BangPatterns #-} | ||
+ | fib n = go n (0,1) | ||
+ | where | ||
+ | go !n (!a, !b) | n==0 = a | ||
+ | | otherwise = go (n-1) (b, a+b) | ||
+ | </ | ||
+ | |||
+ | Вот // | ||
+ | |||
+ | <code haskell> | ||
+ | import Control.Monad.State | ||
+ | fib n = flip evalState (0,1) $ do | ||
+ | forM [0..(n-1)] $ \_ -> do | ||
+ | (a,b) <- get | ||
+ | put (b,a+b) | ||
+ | (a,b) <- get | ||
+ | return a | ||
+ | </ | ||
+ | |||
+ | А статья [[http:// | ||
+ | |||
+ | <code haskell> | ||
+ | fib = 1 : 1 : [ a+b | (a,b) <- zip fib (tail fib) ] | ||
</ | </ | ||