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 aがありData.Listます。に変換する必要がありListます。また、あなたが持っているものは次のように解析されます

(print 1) : [2, 3]

私はあなたが欲しいと思います

print (1 : toList [2, 3])

また

print $ 1 : toList [2, 3]
于 2015-08-11T21:59:03.663 に答える
5

psi で、(:) のタイプを見てください。

> :t (:)
forall a. a -> Data.List.List a -> Data.List.List a

[2, 3] の型

> :t [2, 3]
Prim.Array Prim.Int

(:) 関数が 2 つの値を想定していることがわかります。値と、同じ型のリストです。あなたの質問では、Int の配列を指定しました。Data.List.toList 関数を使用して、(:) が期待する型を取得できます。

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