继承我的代码:
print 1: [2,3]
当我运行它时,我得到了
Cannot unify type
Data.List.List
with type
Prim.Array
怎么回事?
答案 0 :(得分:6)
[2, 3]
的类型为Array Int
。 (:)
在a -> List a -> List a
中的Data.List
类型。您需要转换为List
。此外,您将解析为
(print 1) : [2, 3]
我想你想要
print (1 : toList [2, 3])
或
print $ 1 : toList [2, 3]
答案 1 :(得分:5)
在psci中,查看(:)
的类型> :t (:)
forall a. a -> Data.List.List a -> Data.List.List a
和[2,3]的类型
> :t [2, 3]
Prim.Array Prim.Int
你可以看到(:)函数需要2个值:一个值和一个相同类型的List。在你的问题中,你给它一个Ints数组。您可以使用Data.List.toList函数来获取(:)期望
的类型> import Data.List
> show $ 1 : (toList [1, 2])
"Cons (1) (Cons (1) (Cons (2) (Nil)))"