Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_List Comprehension - Fatal编程技术网

Haskell 为什么操作员**在操作员工作的地方失败?

Haskell 为什么操作员**在操作员工作的地方失败?,haskell,list-comprehension,Haskell,List Comprehension,因此,这里有两个列表理解,第一个使用^,第二个使用**: > [x ^ 2 | x <- [1..10], odd x] [1,9,25,49,81] > [x ** 2 | x <- [1..10], odd x] <interactive>:9:1: No instance for (Show t0) arising from a use of ‘print’ The type variable ‘t0’ is ambiguous

因此,这里有两个列表理解,第一个使用
^
,第二个使用
**

> [x ^ 2 | x <- [1..10], odd x]
[1,9,25,49,81]
> [x ** 2 | x <- [1..10], odd x]

<interactive>:9:1:
    No instance for (Show t0) arising from a use of ‘print’
    The type variable ‘t0’ is ambiguous
    Note: there are several potential instances:
      instance Show Double -- Defined in ‘GHC.Float’
      instance Show Float -- Defined in ‘GHC.Float’
      instance (Integral a, Show a) => Show (GHC.Real.Ratio a)
        -- Defined in ‘GHC.Real’
      ...plus 23 others
    In a stmt of an interactive GHCi command: print it

实际的问题是:为什么第二个列表理解失败?

正如您所说的
**
适用于浮动ponint。但是,
odd
仅适用于
Integral
s。因此,您的第二个列表理解仅适用于同时是
浮动
积分
实例的类型,并且这种类型不存在


但是,我不确定为什么错误消息声称有26个可能的实例,而它提到的实例中没有一个实际满足要求的约束。

正如您所说的
**
适用于浮动ponint。但是,
odd
仅适用于
Integral
s。因此,您的第二个列表理解仅适用于同时是
浮动
积分
实例的类型,并且这种类型不存在


但是,我不确定为什么错误消息声称有26个可能的实例,而它提到的实例中没有一个实际满足要求的约束。

正如您所说的
**
适用于浮动ponint。但是,
odd
仅适用于
Integral
s。因此,您的第二个列表理解仅适用于同时是
浮动
积分
实例的类型,并且这种类型不存在


但是,我不确定为什么错误消息声称有26个可能的实例,而它提到的实例中没有一个实际满足要求的约束。

正如您所说的
**
适用于浮动ponint。但是,
odd
仅适用于
Integral
s。因此,您的第二个列表理解仅适用于同时是
浮动
积分
实例的类型,并且这种类型不存在


但是,我不确定为什么错误消息声称有26个可能的实例,而它提到的实例中没有一个实际满足要求的约束。

那么
(^)
(**)
的类型是什么?您可以通过GHCi中的
:type
:t
命令来查找。@bheklir,
(^):(Num a,Integral b)=>a->b->a
(**):浮动a=>a->a
。。。但是我可以做:
10^2
以及GHCi中的
10**2
。第一个给出输出
100
,第二个给出输出
100.0
。如果我删除条件
奇数x
两种理解都有效。。。奇怪……那么
(^)
(**)
的类型是什么呢?您可以通过GHCi中的
:type
:t
命令来查找。@bheklir,
(^):(Num a,Integral b)=>a->b->a
(**):浮动a=>a->a
。。。但是我可以做:
10^2
以及GHCi中的
10**2
。第一个给出输出
100
,第二个给出输出
100.0
。如果我删除条件
奇数x
两种理解都有效。。。奇怪……那么
(^)
(**)
的类型是什么呢?您可以通过GHCi中的
:type
:t
命令来查找。@bheklir,
(^):(Num a,Integral b)=>a->b->a
(**):浮动a=>a->a
。。。但是我可以做:
10^2
以及GHCi中的
10**2
。第一个给出输出
100
,第二个给出输出
100.0
。如果我删除条件
奇数x
两种理解都有效。。。奇怪……那么
(^)
(**)
的类型是什么呢?您可以通过GHCi中的
:type
:t
命令来查找。@bheklir,
(^):(Num a,Integral b)=>a->b->a
(**):浮动a=>a->a
。。。但是我可以做:
10^2
以及GHCi中的
10**2
。第一个给出输出
100
,第二个给出输出
100.0
。如果我删除条件
奇数x
两种理解都有效。。。奇怪……嗯。。。我想当发生
奇数x
x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码>(1…10)< />代码类型<代码>浮动< /代码>自动?@马克Haskell认为<代码> [ 1…10 ] < /代码>是<代码> Num A= > [A] < /COD>任何您需要的实例。在你的例子中,你做了
x**2
,这告诉Haskell
x
必须是
Floating
的一个实例,因此
[1..10]
必须是
Floating a=>[a]
的一个实例。。。我想当发生
奇数x
x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码>(1…10)< />代码类型<代码>浮动< /代码>自动?@马克Haskell认为<代码> [ 1…10 ] < /代码>是<代码> Num A= > [A] < /COD>任何您需要的实例。在你的例子中,你做了
x**2
,这告诉Haskell
x
必须是
Floating
的一个实例,因此
[1..10]
必须是
Floating a=>[a]
的一个实例。。。我想当发生
奇数x
x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码>(1…10)< />代码类型<代码>浮动< /代码>自动?@马克Haskell认为<代码> [ 1…10 ] < /代码>是<代码> Num A= > [A] < /COD>任何您需要的实例。在你的例子中,你做了
x**2
,这告诉Haskell
x
必须是
Floating
的一个实例,因此
[1..10]
必须是
Floating a=>[a]
的一个实例。。。我想当发生
奇数x
x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码> [1…10 ] < /代码>类型<代码>浮动< /代码>自动?@马克
[1.0,9.0,25.0,49.0,81.0]