在下面的代码中,我可以将最后一个短语放在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 表达式来完成,它只作用于它所包含的表达式。
我的问题:所以,最后一个打印短语不应该看到可变数字。我在这里想念什么吗?