第一个Haskell计划

时间:2014-04-19 11:20:54

标签: haskell

我在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

我该如何解决?我犯了什么错误?有人能帮助我吗?

1 个答案:

答案 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

这意味着无论第一个参数是什么,总是返回第二个参数。