我尝试使用“let”来定义表达式定义,但我得到的只是错误。
> let double x = x * x
not an expression: `let double x = x * x'
是否有必须使用的特殊命令或javascript编译器不支持此功能?
答案 0 :(得分:8)
实际上,它不支持定义;大概是因为它只是作为一个基本的介绍,并且可能在行之间没有状态。正如它使用hint所暗示的那样,它只是简单地评估表达式。与GHCi不同的是,它不会尝试执行IO操作(幸运的是!),而只是尝试打印它们(由于IO操作没有Show
实例而失败,因此失败了。)
但是,您可以在一行上执行let square x = x * x in square 42
。
顺便说一句,Try Haskell 不使用JavaScript Haskell编译器或类似的东西;它与服务器通信以评估您输入的表达式。
总而言之,它是一个简洁的概念证明,也是让人们对Haskell感兴趣的一个很好的初始钩子,但对于任何类型的实际使用,它与GHCi之类的东西相比并不适合。