【问题标题】:Standard ml function in datatype problem数据类型问题中的标准 ml 函数
【发布时间】:2010-02-06 07:16:39
【问题描述】:

我必须创建一个关于 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

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

【问题讨论】:

    标签: sml ml


    【解决方案1】:

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

    fn (f,x) => x
    

    case 手臂的左侧,仅允许使用模式

    其他一些问题:

    1. 多余的括号使代码难以阅读(advice is available 删除它们)。
    2. 您的case 表达式是多余的;在函数定义中

       fun suc (P p) = ...
      

      应该可以只用p 进行计算而无需任何案例分析。

    3. 由于P带有一个函数,你写起来可能会更轻松

       fun suc (P f) = ...
      

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2019-06-19
      • 2015-10-06
      • 2016-01-19
      相关资源
      最近更新 更多