Как получить функцию, возвращающую значение в записи SML - PullRequest
1 голос
/ 23 марта 2019

Я новичок в 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 foo ={
    var1:int,
    f1 (x)=x+x
 };

Пожалуйста, поделитесь своим мнением.

1 Ответ

1 голос
/ 23 марта 2019

Вам необходимо использовать выражение функции:

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

Нет, вы не можете определить значение поля записи в определении типа. Но вы можете определить небольшую вспомогательную функцию как «конструктор»:

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