如何在横函数中添加lamda表达式?

时间:2018-05-11 17:55:52

标签: haskell

我是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表达式。

1 个答案:

答案 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