Sml 数据类型问题中的标准ml函数

Sml 数据类型问题中的标准ml函数,sml,ml,Sml,Ml,我必须创建一个关于peano数字的函数,定义为以下数据类型: datatype 'a peano = P of ('a -> 'a) * 'a -> 'a val zero = P(fn (f, x) => x) 我必须实现的函数查找peano参数的连续peano编号p(p)。这是我写的: fun suc (P(p)) = case P(p) of P(fn(f,x)=>x) => P(fn(f,x)=>f(x)); 问题是我得到了以下错误: stdIn:

我必须创建一个关于peano数字的函数,定义为以下数据类型:

datatype 'a peano = P of ('a -> 'a) * 'a -> 'a
val zero = P(fn (f, x) => x)
我必须实现的函数查找peano参数的连续peano编号
p(p)
。这是我写的:

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

我不知道我做错了什么。请帮忙

此代码中存在许多问题。编译器抱怨的是你有一个函数定义

fn (f,x) => x
 fun suc (P p) = ...
臂的左侧,仅允许图案

其他一些问题:

  • 多余的括号使代码难以阅读(删除括号时)
  • 您的
    案例
    表达式是多余的;在函数定义中

    fn (f,x) => x
    
     fun suc (P p) = ...
    
    应该可以只使用
    p
    进行计算,而无需任何更多的案例分析

  • 由于
    p
    带有一个函数,因此如果您编写

     fun suc (P f) = ...
    
    并确保在结果中,
    f
    应用于一对(根据数据类型声明的要求)


  • 这段代码中有许多问题。编译器抱怨的是你有一个函数定义

    fn (f,x) => x
    
     fun suc (P p) = ...
    
    臂的左侧,仅允许图案

    其他一些问题:

  • 多余的括号使代码难以阅读(删除括号时)
  • 您的
    案例
    表达式是多余的;在函数定义中

    fn (f,x) => x
    
     fun suc (P p) = ...
    
    应该可以只使用
    p
    进行计算,而无需任何更多的案例分析

  • 由于
    p
    带有一个函数,因此如果您编写

     fun suc (P f) = ...
    
    并确保在结果中,
    f
    应用于一对(根据数据类型声明的要求)