如何在SML记录中让函数返回值

时间:2019-03-23 05:47:30

标签: sml smlnj

我是SML的新手,他试图探索SML记录和类型,特别是如何在记录中发挥作用。

例如,我在下面创建类型-

type foo={
    var1:int,
    f1: int -> int    // want to have result of function f1 here
 };

现在,如果我声明类型为'foo'的记录-

val rec1 = { var1= 10, ....}

我没有得到如何填充记录中的第二个参数。 f1(10)给出了错误。同样,我们可以在'type'内声明和定义函数吗?

type foo ={
    var1:int,
    f1 (x)=x+x
 };

请分享您的意见。

1 个答案:

答案 0 :(得分:1)

您需要使用函数表达式:

val r = {var1 = 10, f = fn x => x}

否,您不能在类型定义中定义记录字段的值。但是您可以定义一些辅助函数作为“构造函数”:

fun new_foo i = {var1 = i, f = fn x => x+x}