Сумма 4-элементного поплавкового кортежа в OCaml - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно написать функцию, которая принимает четырехэлементный кортеж действительных чисел в качестве входных данных, и на выходе возвращает сумму этих чисел.

Например: вызов: sum (3., 2., 5., 1) ;; результат: 11.

Я знаю, что это работает: (fun (x,y,z,u) -> x+y+z+u) (4,5,6,7);; Но я хочу иметь возможность ввести цифры позже.

Редактировать, мой маленький следующий вопрос: Есть только fst *Селекторы 1011 * и и в OCaml, я прав?

1 Ответ

0 голосов
/ 16 октября 2019

Ну, код, который вы даете, использует выражение функции (также известное как лямбда) и не дает функции имя.

Если вы хотите вызвать функцию позже, вам просто нужно дать ееимя. Вы можете использовать точно такое же выражение, если хотите:

let sum = fun (x, y, z, u) -> x + y + z + u

(Существует некоторое несоответствие типов между описанием проблемы и этим решением.

Это правда, предварительно нет-определенные функции OCaml для извлечения компонентов кортежей с более чем 2 элементами. Конечно, вы можете легко написать свой собственный:

let fst3 (a, b, c) = a
let snd3 (a, b, c) = b
let thd3 (a, b, c) = c
...