是什么原因造成的;没有因使用“print'&引用;尝试在Haskell中为函数指定类型时出错?

是什么原因造成的;没有因使用“print'&引用;尝试在Haskell中为函数指定类型时出错?,haskell,typing,Haskell,Typing,写入以下内容时出现错误: definition x = x definition :: Int -> Int 您正在GHCi中逐行输入代码 第一行定义了您的函数 第二行要求打印,这是不可能的 不要在GHCi中逐行编写代码。将其写入文件,然后加载到GHCi中。您首先在此处定义了一个函数定义x=x。在第二行中,有一个表达式definition::Int->Int。但是函数不是Show的实例,因此解释器无法打印函数 但是,看起来第二行是要添加到函数中的签名。您可以使用:{和:}编写多行语句,如

写入以下内容时出现错误:

definition x = x
definition :: Int -> Int

您正在GHCi中逐行输入代码

第一行定义了您的函数

第二行要求打印,这是不可能的


不要在GHCi中逐行编写代码。将其写入文件,然后加载到GHCi中。

您首先在此处定义了一个函数
定义x=x
。在第二行中,有一个表达式
definition::Int->Int
。但是函数不是
Show
的实例,因此解释器无法打印函数

但是,看起来第二行是要添加到函数中的签名。您可以使用
:{
:}
编写多行语句,如:

Prelude> :{
Prelude| definition :: Int -> Int
Prelude| definition x = x
Prelude| :}
序曲>:{
前奏曲|定义::Int->Int
前奏曲|定义x=x

前奏曲:}
您不能显示
定义
本身,因为这是一个函数,您可以显示
定义5
的结果。这里出现错误的原因是,您没有在多行语句中定义函数,而且签名应该写在定义之前。@WillemVanOnsem,实际上不要求签名在定义之前(我刚刚学到)。否则做是非常不传统的