如何在 haskell 中匹配此模式

How can I match this pattern in haskell

我有数据

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.

我对这个函数的语法有误吗?

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

function arg1 arg2 arg3

所以,当它说它需要两个参数时,意思是:

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

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