Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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_Types - Fatal编程技术网

haskell中(:==)的类型签名无效

haskell中(:==)的类型签名无效,haskell,types,Haskell,Types,如果我定义以下函数: (:==) :: a -> b -> (a,b) x :== y = (x,y) 我得到一个错误: Op.hs:2:1: error: Invalid type signature: (:==) :: ... Should be of form <variable> :: <type> | 2 | (:==) :: a -> b -> (a,b) | ^^^^^ Op.hs:2:1:错误: 无效的类

如果我定义以下函数:

(:==) :: a -> b -> (a,b)
x :== y = (x,y)
我得到一个错误:

Op.hs:2:1: error:
    Invalid type signature: (:==) :: ...
    Should be of form <variable> :: <type>
  |
2 | (:==) :: a -> b -> (a,b)
  | ^^^^^
Op.hs:2:1:错误:
无效的类型签名:(:==):。。。
格式应为:
|
2 |(:==)::a->b->(a,b)
| ^^^^^
有人能解释原因吗?

(:==)
不是Haskell中函数或变量标识符的有效符号。以
开头的符号是为构造函数保留的(
data MyData a b=a:==b
是有效的替代方案)。
为函数选择不同的名称,或者使用
(,)
,这是一个完全有效的函数,可以实现函数的功能,或者使用类似于上面括号中的数据类型的内容

来源:

(:==)
不是Haskell中函数或变量标识符的有效符号。以
开头的符号是为构造函数保留的(
data MyData a b=a:==b
是有效的替代方案)。
为函数选择不同的名称,或者使用
(,)
,这是一个完全有效的函数,可以实现函数的功能,或者使用类似于上面括号中的数据类型的内容


源:

:=
不是函数的有效标识符。以冒号“:”开头的运算符标识符保留给构造函数

请考虑定义自己的配对类型:

data MyPair a b = a :== b

如果您正在构造某种小型的特定于域的嵌入式语言,这是一个为类型指定有意义名称的机会,以将其与普通对区分开来。

:==
不是函数的有效标识符。以冒号“:”开头的运算符标识符保留给构造函数

请考虑定义自己的配对类型:

data MyPair a b = a :== b

如果您正在构造某种小型的特定于域的嵌入式语言,这是一个为类型指定一个有意义的名称的机会,以区别于普通对。

根据经验规则,
被认为是“大写”——它可以用于启动类型和构造函数名称,但不是值的其他变量。根据经验法则,
被认为是“大写”——它可以用于启动类型和构造函数名称,但不能用于值的其他变量。