我必须创建一个关于peano数的函数,该函数定义为以下数据类型:
datatype 'a peano = P of ('a -> 'a) * 'a -> 'a
val zero = P(fn (f, x) => x)
我必须实现的功能找到peano参数P(p)
的成功peano号。这就是我写的:
fun suc (P(p)) = case P(p) of P(fn(f,x)=>x) => P(fn(f,x)=>f(x));
问题是我遇到了这些错误:
stdIn:4.33-4.36 Error: syntax error: deleting FN LPAREN
stdIn:4.43 Error: syntax error found at RPAREN
我不知道我做错了什么。请帮忙!
答案 0 :(得分:1)
此代码中存在许多问题。编译器抱怨的是你有一个函数定义
fn (f,x) => x
位于case
手臂的左侧,只允许花样。
其他一些问题:
您的case
表达式是多余的;在函数定义
fun suc (P p) = ...
应该可以在没有任何案例分析的情况下使用p
进行计算。
由于P
带有一个功能,如果你写的话,你可能会有更轻松的时间
fun suc (P f) = ...
并确保在结果中f
应用于一对(根据数据类型声明的要求)。