【问题标题】:language ML function val a’ * a’ * int -> bool语言 ML 函数 val a' * a' * int -> bool
【发布时间】:2018-03-26 11:50:50
【问题描述】:

在机器学习语言中

假设f(x,y,z) 是一个函数。给出一个 f 的定义示例,它会导致 f 的参数具有以下类型:a’ * a’ * int

示例代码

fun f1 (x,y,z) =  z<5 ;

val f1 = fn : 'a * 'b * int -> bool

如何将此 val 更改为 a’ * a’ * int -&gt; bool ??

【问题讨论】:

  • 你是否在 StackOverflow 上发布了所有的家庭作业问题?

标签: function types sml ml


【解决方案1】:

类型:

a’ * a’ * int -> bool 

表示函数接受三个参数,第一个是 'a 类型,第二个也是 'a 类型,第三个是 int 类型。

你的定义:

fun f1 (x,y,z) =  z<5 ;

是正确的,因为它需要一个元组,现在为了将 x,y 的类型限制为相等,您可以编写:

fun f1 (x :'a ,y :'a ,z) =  z<5 ;

【讨论】:

    【解决方案2】:

    如果您想避免显式类型注释,使xy 相同类型的最简单方法是在不同情况下从函数中返回它们。
    真实世界的例子:

    - fun f (x,y,z) = if z < 0 then x else y;
    val f = fn : 'a * 'a * int -> 'a
    

    (由于问题描述中没有提到bool 结果类型,我假设这只是您返回z &lt; 5 的结果,而不是原始问题的一部分。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2019-07-27
      • 1970-01-01
      • 2016-04-27
      • 2021-06-10
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多