这可能是一个相当明显的问题,但我无法弄清楚.
我正在尝试编写一个在列表中对偶数进行平方的函数.当我尝试运行它时,我收到有关使用偶数函数的错误.我怎样才能解决这个问题?
module SquareEvens where
squareEvens :: [Integer] -> [Integer]
squareEvens n = [ns * ns | ns <- n, even n]
Run Code Online (Sandbox Code Playgroud)
dav*_*420 11
如果您更改even n为even ns以下代码可以正常工作:
squareEvens n = [ns * ns | ns <- n, even ns]
Run Code Online (Sandbox Code Playgroud)
但请注意,约定是使用复数来命名列表,使用单数来命名该列表中的元素.所以交换n并ns遵循惯用的Haskell用法:
squareEvens ns = [n * n | n <- ns, even n]
Run Code Online (Sandbox Code Playgroud)
如您所见,变量名称很容易出错.那么为什么不在没有呢?
squareEvens = map (^2) . filter even
Run Code Online (Sandbox Code Playgroud)
我认为这比理解更清楚.你可以从右到左阅读:只保留偶数,然后将它们平方.
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |