【问题标题】:How do I add lamda expressions in transverse function?如何在横向函数中添加 lambda 表达式?
【发布时间】:2018-05-12 02:00:45
【问题描述】:

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

【问题讨论】:

  • 你的意思是map (\x -> x*3 + x) xs?
  • 是的。能用吗?
  • 迂腐:x*3 + x 就是x*4,而函数\x -> x*4 就是(*4)

标签: haskell


【解决方案1】:

请记住,像 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

【讨论】:

  • 非常感谢。它确实有效,您的描述使我的困惑清晰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-02
  • 2017-06-13
  • 1970-01-01
  • 2021-10-13
  • 2019-08-01
  • 1970-01-01
相关资源
最近更新 更多