【发布时间】:2014-08-05 16:57:03
【问题描述】:
Learn You a Haskell 呈现shortLines 函数:
shortLinesOnly :: String -> String
shortLinesOnly input =
let allLines = lines input
shortLines = filter (\line -> length line < 10) allLines
result = unlines shortLines
in result
从这个有用的post,我似乎很清楚以下let ... in 是正确的:
> (let x = 2 in x*2) + 3
7
但是,在上面的shortLinesOnly 示例中,为什么let 的in 放在in result 上?
【问题讨论】:
-
它还能放在哪里?
-
@KevinMeredith 这是一个多行的
let-in语句。let-in语法允许您定义一个或多个可在in后面的表达式中使用的中间值。这就像where语句一样,您可以在其中定义任意数量的本地表达式。 let-in 和 where 之间有一些微妙之处,即let ... in ...可以在子表达式中使用。你不能把上面写成(x * 2 where x = 2) + 3,Haskell 不允许。
标签: haskell