Лыцарь пичальнава образа - Haskell в императивном мозгу [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Haskell в императивном мозгу [Apr. 20th, 2008|08:19 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
А какие есть у Хаскеля специальные возможности по экономии процессорного времени путём сохранения результатов вычислений (если таковые часто повторяются например) ?
Либо какие есть приёмы написания программ с таким же свойством ?

Ну самый простой пример, как мне кажется, это проверка чисел на простоту, которая проверяет НЕ ВСЕ ДЕЛИТЕЛИ а только простые.
Мы можем захотеть, чтобы эта функция нарабатывала себе список простых чисел, и пользовалась им постоянно. и при необходимости пополняла.

P.S.
и какие есть интерфейсы к базам данных?
LinkLeave a comment

Comments:
From:[info]tristes_tigres
Date:April 20th, 2008 - 10:32 pm
(Link)
Либо какие есть приёмы написания программ с таким же свойством ?

Ну самый простой пример, как мне кажется, это проверка чисел на простоту, которая проверяет НЕ ВСЕ ДЕЛИТЕЛИ а только простые.


Простые делители из ранее сохранённого файла, например ?

Смотри IO Monad
[User Picture]
From:[info]migmit.vox.com
Date:April 22nd, 2008 - 07:41 pm
(Link)
Ленивые структуры (например, списки). Структура определяется через себя же. Фокус в том, чтобы гарантировать, что для вычисления очередной части структуры достаточно знать вычисленные ранее части. Типа:

fibs = 1 : 1 : zipWith (+) fibs (tail fibs)

Здесь для вычисления первых двух чисел Фибоначчи не нужно знать вообще ничего, а для вычисления следующих нужно знать два предыдущих. Благодаря ленивости (список fibs - ленивый и, вообще-то, даже бесконечный) всё проходит. Алгоритм имеет линейную сложность.