如何在Haskell中的lambda中背靠背运行几个操作?

时间:2014-12-21 01:47:50

标签: haskell

我自己教Haskell,我很难理解如何在不使用do块的情况下在lambda函数体中管理大量操作。以下面的例子为例:

par = (\c->
    c + 1
    c + 2
  )

在Ruby和其他命令式语言中,我习惯于通过在它们之间添加换行符来在lambda块中运行多个表达式。在Haskell中,我寻找了一个类似的结构,发现Haskell并不尊重纯表达式中的换行符。

所以,从语法上讲,如果我想在第一行之后运行第二行而不使用do块,我该怎么办?

1 个答案:

答案 0 :(得分:4)

除非它是有效的代码,否则在Haskell中没有副作用的多个独立表达式也没有意义(也没有任何其他语言)。您可以使用let将表达式的值存储在名称中,然后在后续表达式(lambda的返回值)或do - 块中使用它,但其他任何内容都是无意义的在Haskell中,因此不是一个有效的程序。

换句话说:仅仅提出有关语法的问题是没有意义的,因为Haskell的语法完全是关于它的语义。