Haskell 复制数字并返回列表的自定义函数? myreplica::(numa,orda)=>a->b->[b] myreplica num val |num
用括号括住负数,即Haskell 复制数字并返回列表的自定义函数? myreplica::(numa,orda)=>a->b->[b] myreplica num val |num,haskell,Haskell,用括号括住负数,即myreplica(-1)123。然而,您可能希望在第一个参数中为负数添加一个使用error的特殊情况,因为重复负数次是没有意义的 用括号将负数括起来,即myreplica(-1)123。然而,您可能希望在第一个参数中为负数添加一个使用error的特殊情况,因为重复负数次是没有意义的 您实际上不需要(Num a,Ord a),但它是可识别的,还请注意,最好使用(:)函数而不是“(++”)函数,如下所示: "ghci> " replicate' -1 123 <i
myreplica(-1)123
。然而,您可能希望在第一个参数中为负数添加一个使用error
的特殊情况,因为重复负数次是没有意义的
用括号将负数括起来,即
myreplica(-1)123
。然而,您可能希望在第一个参数中为负数添加一个使用error
的特殊情况,因为重复负数次是没有意义的
您实际上不需要
(Num a,Ord a)
,但它是可识别的,还请注意,最好使用(:)
函数而不是“(++”)函数,如下所示:
"ghci> " replicate' -1 123
<interactive>:72:1:
Non type-variable argument in the constraint: Num (i -> a -> [a])
(Use FlexibleContexts to permit this)
When checking that ‘it’ has the inferred type
it :: forall i a a1.
(Num i, Num a1, Num (i -> a -> [a]), Num (a1 -> i -> a -> [a]),
Ord i) =>
i -> a -> [a]
myreplica::(numa,orda)=>a->b->[b]
myreplica num val
|num您实际上不需要(num a,Ord a)
,但它是可重新编码的,还请注意,最好使用(:)
函数而不是“(++”)函数,如下所示:
"ghci> " replicate' -1 123
<interactive>:72:1:
Non type-variable argument in the constraint: Num (i -> a -> [a])
(Use FlexibleContexts to permit this)
When checking that ‘it’ has the inferred type
it :: forall i a a1.
(Num i, Num a1, Num (i -> a -> [a]), Num (a1 -> i -> a -> [a]),
Ord i) =>
i -> a -> [a]
myreplica::(numa,orda)=>a->b->[b]
myreplica num val
|num感谢您的快速响应。您能解释一下为什么我们必须使用(num a,Ord a)吗?谢谢您的快速响应。您能解释一下为什么我们必须使用(num a,Ord a)吗?上面的内容被解析为(replicate')-(1 123)
,其中最后一部分的意思是“function1
应用于参数123
”,这毫无意义。然后类型检查器抱怨replicate'
没有数字类型:Num(i->a->[a])
没有实例。@chi感谢解释。上面被解析为(replicate')-(1123)
,其中最后一部分表示“函数1
应用于参数123
”,这是没有意义的。然后类型检查器抱怨replicate'
没有数字类型:Num(i->a->[a])
没有实例。@chi感谢您的解释。
myreplica :: (Num a,Ord a) => a -> b -> [b]
myreplica num val
| num <= 0 = []
| otherwise = val : myreplica (num-1) val