2

这是我的代码:

print 1: [2,3]

当我运行它时,我得到

  Cannot unify type
    Data.List.List
  with type
    Prim.Array

这是怎么回事?

4

2 回答 2

7

[2, 3]有类型Array Int(:)有输入a -> List a -> List aData.List您需要转换为List. 此外,您所拥有的将解析为

(print 1) : [2, 3]

我想你想要

print (1 : toList [2, 3])

或者

print $ 1 : toList [2, 3]
于 2015-08-11T21:59:03.663 回答
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。在你的问题中,你给了它一个整数数组。您可以使用 Data.List.toList 函数来获取 (:) 期望的类型

> import Data.List
> show $ 1 : (toList [1, 2])
"Cons (1) (Cons (1) (Cons (2) (Nil)))"
于 2015-08-11T22:05:52.367 回答