После решения задачи по проекту Эйлера я наткнулся на следующий код Haskell на форуме:Haskell Кэширование
fillRow115 minLength = cache where
cache = ((map fillRow115' [0 ..]) !!)
fillRow115' 0 = 1
fillRow115' cells = sum (map cache [0..cells-minLength]) + cache (cells-1)
Я только начал изучать Haskell на этой неделе и не могу понять этот код. Может кто-нибудь, пожалуйста, объясните следующие 2 пунктов:
- Для меня это выглядит как есть только один аргумент
minLength
, но функция требует 2 аргумента для запуска в GHCI. Где этот другой аргумент вступает в игру? - Из того, что я смог найти в Интернете,
!!
является оператором индекса списка и возвращает n-й элемент при вызове[list] !! n
. Вышеприведенный код, по-видимому, вызывает его только с одним аргументом. Что это значит?
P.S. Если кто-то думает о копировании этого кода для решения проблемы Project Euler, он, похоже, не дает правильного ответа.