为什么我们需要将let放在列表中的函数前面

use*_*628 0 syntax haskell let

这是原始功能

[let square x = x * x in (square 5, square 3, square 2)]
Run Code Online (Sandbox Code Playgroud)

我试图从上面的行中删除let,但它不起作用.

[square x = x * x in (square 5, square 3, square 2)]

<interactive>:21:11: error:
    parse error on input ‘=’
    Perhaps you need a 'let' in a 'do' block?
    e.g. 'let x = 5' instead of 'x = 5'
Run Code Online (Sandbox Code Playgroud)

为什么有必要在那里?

She*_*rsh 5

列表是从表达式创建的.引入局部变量名称的表达式应该以let(或者更具体地说,应该使用let ... in语法)开头.square x = x * x是一个顶级函数声明.