繁体   English   中英

Haskell function 使用 lambda 实现

[英]Haskell function implementation using lambdas

是否有必要将 Haskell 中的所有输入转换为 lambda?
我实现了 map function 仅将 f 转换为 \f。
并且在运行时发生错误(附在下面)。

map_ xs = \f -> case xs of
                  [] -> []
                  y:ys -> (f y):(map f ys)
map_ square [3, 4]
ERROR - Type error in application
*** Expression     : map_ square [3,4]
*** Term           : [3,4]
*** Type           : [c]
*** Does not match : a -> b

是否有必要将 Haskell 中的所有输入转换为 lambda?

不。事实上,lambdas 通常只出现在花哨的高级抽象中。

case xs of
  [] -> ...
  y:ys -> ...

编译器推断xs的类型是一个列表。

map_ xs = ...

编译器推断 list 是map_的第一个参数。

但是在调用map_时,您将 function 作为第一个参数; 第二个列表。 Preludemap的标准型号是

map :: (a -> b) -> [a] -> [b]

IOW function 第一,排名第二。

那你打算哪一个?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM