【发布时间】:2019-12-23 22:00:56
【问题描述】:
我正在学习 Haskell,这将是我的第一篇文章。
在伟大的在线书籍http://learnyouahaskell.com/syntax-in-functions#where 中有一个例子largestDivisble。在 where 子句中引入了变量 x,但它来自哪里?到目前为止,函数体的模式匹配部分中的变量是有界的。
正如我现在解释的那样:
where p x 部分声明了函数p 和一些变量x 的应用。在 filter p [some-list] 正文中,some-list 代表 x。
我认为这有点模糊。有人可以帮我解释一下这段代码吗?
largestDivisible :: (Integral a) => a
largestDivisible = head (filter p [100000,99999..])
where p x = x `mod` 3829 == 0
【问题讨论】:
-
呸,多么好的实现啊。
largestDivisible = 100000 - 100000 `mod` 3829似乎更直接。 -
是的,这是聪明的方式,当然,这是一个演示过滤功能的例子:)
标签: haskell