我是Haskell的新手,我正在使用map函数和lambda表达式。使用map我做了横向函数,我想添加lambda表达式,但我感到困惑,它无法工作。
代码:
tfunc :: [Int] -> [Int]
tfunc xs = map tfunc1 xs
where tfunc1 x = x*3+x
输出:
F17BCSE206>tfunc [1,2,3,4,5]
[4,8,12,16,20] :: [Int]
我想使用lambda表达式。任何人都可以帮助我并在给定的函数中使用lambda表达式。
答案 0 :(得分:5)
请记住,像tfunc1 x = ...
这样的函数定义只是将名称绑定到lambda表达式的语法糖,所以tfunc1 = \x -> ...
。然后,由于=
的两边可以互换使用,您可以简单地替换
tfunc1 xs = map tfunc1 xs where tfunc1 = \x -> x*3 + x
与
tfunc1 xs = map (\x -> x*3 + x) xs where tfunc1 = \x -> x*3 + x
由于where
子句现在完全无关,你可以简单地删除它。
tfunc1 xs = map (\x -> x*3 + x) xs