我试图编写一个带有不确定数量参数的操作,因此如果用户选择不填充其中一个参数,那么操作员会更改其功能。
oper
gen_NP = overload{
gen_NP : N -> NP =
\noun ->
mkNP(noun);
gen_NP : Str -> N -> NP =
\mdfir, noun ->
mkNP(mkN(mdfir) (noun));
....
}
但是用这种方法编写每个新的未确定参数都会产生大量的重载。所以我用了这个方法
oper
gen_NP : {noun : N ; mdfir : Str ; ....} -> NP =
\obj
case eqStr (obj.mdfir) ("") of {
PFalse =>
mkNP(mkN(mdfir) (noun));
PTrue =>
mkNP(noun);
};
}
当我尝试第二种方法时,程序继续报告: Applying Predef.eqStr: Expected a value of type String, got VP (VGen 1 []) (LIdent(Id{rawId2utf8 = "mdfir"}))
有没有办法解决这个问题,或者有更好的方法来处理不确定数量的参数?
谢谢