Как сделать, чтобы функция возвращала значение в записи SML

Я новичок в SML, пытаюсь изучить записи и типы SML, в частности, как иметь функцию внутри записи.

Например, я создал ниже type-

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
211
1

Ответы 1

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

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

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

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

Спасибо. Я сделал это - val footest:foo = {var1 = 1,f1 = fn x=> x+x}; - #var1 самое низкое; val it = 1 : int - -(#f1 самый низкий) 1; val it = 2 : int Но если я хочу передать var1 в качестве аргумента функции x, это не сработает. - #f1 (#var1 самая низкая); stdIn:202.1-202.20 Ошибка: оператор и операнд не согласованы [несоответствие типа] домен оператора: {f1:'Y; 'Z} операнд: целое

Sri 23.03.2019 22:57

Ну, это было бы (#f1 footest) (#var1 footest).

Andreas Rossberg 24.03.2019 07:15

Другие вопросы по теме