В 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, которое распространяется только на выражениекоторый он заключает.

Мой вопрос: так, переменные цифры не должны быть видны до последней печатной фразы. Я что-то здесь скучаю?

Ответы на вопрос(4)

Ваш ответ на вопрос