В Haskell, когда мы используем с let?
В следующем коде последнюю фразу я могу поставитьin
спереди. Это что-нибудь изменит?
Еще один вопрос: если я решу поставитьin
перед последней фразой, нужно ли сделать отступ?
Я пробовал без отступов и обнимает жалуется
Последний генератор в do {...} должен быть выражением
import Data.Char
groupsOf _ [] = []
groupsOf n xs =
take n xs : groupsOf n ( tail xs )
problem_8 x = maximum . map product . groupsOf 5 $ x
main = do t <- readFile "p8.log"
let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
редактироватьИтак, люди, кажется, не понимают, что я говорю. Позвольте мне перефразировать: следующие два одинаковы, учитывая контекст выше?
1.
let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
2.
let digits = map digitToInt $concat $ lines t
in print $ problem_8 digits
Еще один вопрос, касающийся объема привязок, объявленных вlet
: Я читаюВот это:
where
Морозы.
Иногда удобно связывать привязки с несколькими защищенными уравнениями, для чего требуется условие where:
f x y | y>z = ...
| y==z = ...
| y<z = ...
where z = x*x
Обратите внимание, что этого нельзя сделать с помощью выражения let, которое распространяется только на выражениекоторый он заключает.
Мой вопрос: так, переменные цифры не должны быть видны до последней печатной фразы. Я что-то здесь скучаю?