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
,这告诉Haskellx
必须是Floating
的一个实例,因此[1..10]
必须是Floating a=>[a]
的一个实例。。。我想当发生奇数x
时x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码>(1…10)< />代码类型<代码>浮动< /代码>自动?@马克Haskell认为<代码> [ 1…10 ] < /代码>是<代码> Num A= > [A] < /COD>任何您需要的实例。在你的例子中,你做了x**2
,这告诉Haskellx
必须是Floating
的一个实例,因此[1..10]
必须是Floating a=>[a]
的一个实例。。。我想当发生奇数x
时x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码>(1…10)< />代码类型<代码>浮动< /代码>自动?@马克Haskell认为<代码> [ 1…10 ] < /代码>是<代码> Num A= > [A] < /COD>任何您需要的实例。在你的例子中,你做了x**2
,这告诉Haskellx
必须是Floating
的一个实例,因此[1..10]
必须是Floating a=>[a]
的一个实例。。。我想当发生奇数x
时x
是源代码列表中的一个整数。。。或者Haskell考虑列表<代码> [1…10 ] < /代码>类型<代码>浮动< /代码>自动?@马克
[1.0,9.0,25.0,49.0,81.0]