拆分构造函数进行模式匹配?

时间:2012-09-12 21:22:32

标签: haskell

如果我有这样的功能:

func:: Arg1->Arg2->String

和Arg1有一个构造函数,如:

data Arg1 = something1 something2 something3

我想在func中的一个Arg1构造函数上进行模式匹配(下面我在“Val1”上匹配了模式):

func:: Arg1->Arg2->String
func (a b Val1) e = "Something"

但它一直说解析符号'a'

时遇到问题

括号中的变量只代表Arg1 ??? “e”是Arg2参数。

编辑:这似乎有效:

func:: Arg1-> Arg2-> String
func (A b Val1) e = "Something"

但是我无法在A上进行模式匹配,因为我并没有为这个值感到困扰。

EDIT2:好像我需要这样做:

data Arg1 = Arg1 something1 something2 something3

让它工作?!?!

1 个答案:

答案 0 :(得分:2)

您还必须在构造函数上进行模式匹配。 您还忘了为Arg1指定构造函数。

func :: Arg1 -> Arg2 -> String
func (Arg1 a b Val1 d) e = "Foobar"