我怎样才能在haskell中匹配这个模式

时间:2015-04-28 15:52:29

标签: haskell pattern-matching

我有数据

LNode(TypedL(2.72489e12,"http://www.w3.org/2001/XMLSchema#double"))

我想要一个匿名函数从此匹配到2.72489e12

myfunc (LNode(TypedL(c, d))) = c

给出

Constructor `TypedL' should have 2 arguments, but has been given 1.

我的这个函数的语法错了吗?

1 个答案:

答案 0 :(得分:4)

问题在于您调用函数的方式。在Haskell中,函数和构造函数的调用方式如下:

function arg1 arg2 arg3

所以,当它说它需要两个参数时,就意味着:

myfunc (LNode (TypedL c d)) = c
--                    ~~~ 

元组((a, b, c))是不同的数据类型。如果定义它们,它们可以用作函数参数,但这通常被视为单一的Haskell。