如果我有这样的功能:
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
让它工作?!?!
答案 0 :(得分:2)
您还必须在构造函数上进行模式匹配。
您还忘了为Arg1
指定构造函数。
func :: Arg1 -> Arg2 -> String
func (Arg1 a b Val1 d) e = "Foobar"