次のコードでは、最後のフレーズを前に置くことができ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
編集
さて、人々は私が言っていることを理解していないようです。言い換えると、上記のコンテキストを考えると、次の2つは同じですか?
1.1。
let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
2.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式では実行できないことに注意してください。
私の質問:それで、可変数字は最後の印刷フレーズに表示されるべきではありません。ここで何かが恋しいですか?