[英]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 作为第一个参数; 第二个列表。 Prelude
中map
的标准型号是
map :: (a -> b) -> [a] -> [b]
IOW function 第一,排名第二。
那你打算哪一个?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.