我在Haskell写了一些代码来学习haskell。它看起来像:
first :: [Int] -> Int -> Int
first [] x = x
first xs y = y
我想表达我得到一个列表([]或xs)和一个参数(x或y),无论列表如何,都应该提供参数。
所以,当我写下以下内容时:首先[1,2,3] 4,然后ghci说:
Couldnt match expected type ´a0 -> t´ wth actual type ´[t0]´. Relevant bindings
include it :: t(boudn at <>:6:1)but its type ´[t 0]´ has none
In the expression : [1,2,3] 4
In an equation for ´it´: it = [1,2,3] 4
我该如何解决?我犯了什么错误?有人能帮助我吗?
答案 0 :(得分:2)
您好像使用[1,2,3,4] 4
代替first [1,2,3,4] 4
。
> [1,2,3,4] 4
<interactive>:1:0:
Couldn't match expected type `t1 -> t' against inferred type `[a]'
In the expression: [1, 2, 3, 4] 4
In the definition of `it': it = [1, 2, 3, 4] 4
顺便说一句,您对first
的定义与以下内容相同:
first :: [Int] -> Int -> Int
first _ x = x
这意味着无论第一个参数是什么,总是返回第二个参数。