OCaml основное использование функции

#ocaml

Вопрос:

В настоящее время я изучаю OCaml, и я не ладю с синтаксисом. Я не нашел в Интернете ни одного подходящего совета. Я в основном хочу вызвать функцию и повторно использовать ее результат в той же функции.

find_by_name это функция, которая находит пищу по ее названию

ingredients является частью записи и списка

avg это функция, которая вычисляет среднее значение

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

let avg_veggie_kcal name fd = find_by_name name fd -gt; avg x.ingredients

Ответ №1:

Вы можете использовать локальную привязку let let ... = ... in ... для обозначения промежуточных результатов некоторых вычислений:

 let some_function input =  let intermediary_result = first_computation_step input in  second_computation_step intermediary_result  

Ответ №2:

 let avg_veggie_kcal name fd =   match find_by_name name fd with   x -gt; avg x.ingredients  

…предполагая find_by_name , что возвращает запись с ingredients полем, и ingredients поле имеет тип ввода to avg .

Комментарии:

1. Сопоставление шаблонов в этом случае дает тот же результат, что и при использовании локальной привязки let, но более подробное. Теперь, если find_by_name name fd бы в результате мы хотели сопоставить несколько шаблонов, это имело бы больше смысла. Кроме того, если это возвращает тип записи, для облегчения доступа к этому полю можно использовать привязку match или local let. match find_by_name name fd with { ingredients=i; _ } -gt; avg i