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

问题描述 投票:1回答:1

我是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
 };

请分享您的意见。

sml smlnj
1个回答
1
投票

您需要使用函数表达式:

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

不,您无法在类型定义中定义记录字段的值。但是你可以将一个小辅助函数定义为“构造函数”:

fun new_foo i = {var1 = i, f = fn x => x+x}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.