Haskell程序员通常如何表达\x -> y
表达式?
我问,因为我通常说“lambda eks dot为什么”,因为它是在一般语境中写的λx.y
,我通过书籍和笔记介绍了lambda演算,但没有听到任何人将这些术语翻译成语音。但是在Haskell中它是一个箭头,而不是一个点。
据我所知,计算机科学界人士常常忽视语音中的点(“lambda eks [短暂停顿] y”)。网络告诉我,F#和C#程序员经常将等效表达式x => y
发音为“eks为什么会这样”。我不知道在其他情况下如何表达类似的结构。
所以在Haskellers中,它是“lambda eks arrow为什么”,或者是什么?
答案 0 :(得分:11)
我通常将其称为“lambda x to y”。这非常简短,与您在TeX中输入的方式相匹配:\lambda x \to y
。 (作为一个可爱的注释,我的编辑器中有一个TeX输入模式,所以我可以输入上面的内容来获取λ x → y
。:P)
那就是说,我相信如果你说“lambda x dot y”,每个人都会理解你 - 大多数人至少都熟悉这种符号,并且很容易从上下文中猜出你的意思。
然而,我从来没有听过有人说“去”。
答案 1 :(得分:2)
回答我自己:在我看来,我经常把它称为“x转到y”,或简称为“x到y” - 但我认为它适用于一些常见的高阶函数。如果你有map (\x -> (x * 2) - 1) foo
,我会把它想象成“在foo上将x映射到x乘以2减1”。但是,对于像filter (\x -> x /= 6) foo
这样的东西,我把它读作“过滤器x,x不等于6,在foo上” - 实际上,箭头在这种情况下变为逗号。