Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell ‘;的固定签名++’;缺少附带的装订_Haskell - Fatal编程技术网

Haskell ‘;的固定签名++’;缺少附带的装订

Haskell ‘;的固定签名++’;缺少附带的装订,haskell,Haskell,我在ghci中这样做,它会给出错误消息 infixr 5 .++ :26:10:错误: “++”的固定性签名缺少附带的绑定 我怎样才能修好它?谢谢大家! 正如错误所说,您确实定义了固定性,但仍然需要定义签名和实现。否则,实际上就没有操作符(或者至少我们不能使用这样的操作符,这就是为什么要声明这样的操作符)。由于Haskell可以派生签名本身,因此严格来说签名是不必要的(尽管写一个签名是明智的,因为它可能是一个“顶级函数”) 例如: <interactive>:26:10: err

我在ghci中这样做,它会给出错误消息

infixr 5 .++
:26:10:错误:
“++”的固定性签名缺少附带的绑定

我怎样才能修好它?谢谢大家!

正如错误所说,您确实定义了固定性,但仍然需要定义签名和实现。否则,实际上就没有操作符(或者至少我们不能使用这样的操作符,这就是为什么要声明这样的操作符)。由于Haskell可以派生签名本身,因此严格来说签名是不必要的(尽管写一个签名是明智的,因为它可能是一个“顶级函数”)

例如:

<interactive>:26:10: error:
    The fixity signature for ‘.++’ lacks an accompanying binding
这里第二行是签名,第三行是实现。当然,您可以选择另一个签名和实现

如果在解释器中运行,则需要在同一“语句”中定义所有这些。您可以通过分组行来完成此操作,例如使用
:{
:}
命令:

infixr 5 .++
(.++) :: [a] -> [a] -> [a]
(.++) = (++)

您需要添加绑定、签名和实现。现在,你只定义了固定性。那么你的意思是我不能只用ghci写这个?我必须在文本编辑器中添加竞价,然后运行竞价?不,你可以在ghci中编写竞价,但你需要对行进行分组,好的,得到它&谢谢你也可以在ghci中的同一行中进行竞价<代码>infixr 5++;(.++)=(++)
Prelude> :{
Prelude| infixr 5 .++
Prelude| (.++) :: [a] -> [a] -> [a]
Prelude| (.++) = (++)
Prelude| :}