Hyb*_*tem 2 haskell functional-programming
在学习功能编程考试时,我从之前的测试中发现了以下问题:
t1 = (reverse . take 2 . words . \ _ -> name)"!"
Run Code Online (Sandbox Code Playgroud)
任务是编写语句的输出.变量名称是指学生的姓名,以"Smith,John"的形式写成.如果我将语句输入WinHugs,我会得到以下输出:
["John","Smith,"]
Run Code Online (Sandbox Code Playgroud)
我理解功能是什么反转,采取和言语正在做什么,我理解如何.操作员连接它们.我不明白的是这里发生了什么:
\ _ -> name
Run Code Online (Sandbox Code Playgroud)
什么是斜线,下划线和"箭头"?另外,引号中的感叹号有什么作用?(没有?)
它是一个lambda函数,它丢弃它的(唯一)参数(即"!")和yield name.
作为另一个lambda示例,以下将是一个lambda函数,用于对其参数求平方:
\x -> x * x
Run Code Online (Sandbox Code Playgroud)
这\是用于引入lambda函数的符号.
该_手段"谁的我们不在乎名称变量".
将->lambda函数的参数与用于指定其结果的表达式分开.
你看到的是一个匿名函数或lambda函数(该名称来自lambda演算).反斜杠告诉您正在启动该功能.下划线说该函数接受一个参数并忽略它.箭头从参数列表指向结果 - 在这种情况下,它最终忽略其参数并返回名称.基本上,\_ -> name是一样的const name.