Как вы могли бы воссоздать функцию List.iter в ocaml? - PullRequest
0 голосов
/ 16 марта 2020

Я довольно новичок в языке Ocaml и вообще новичок ie в программировании. Поэтому я чувствую, что этот вопрос очень простой c, но вот он: я хотел бы воссоздать функцию List.iter в Окамле, чтобы лучше ее понять и потому, что мой учитель попросил меня об этом. Вот что я сделал:

let rec iter f = function
|[]->()
|e::q-> f e (iter f q);;

Две мои очень простые проблемы:

  1. Я не очень понимаю, как List.iter работает
  2. это приводит in ('a -> unit -> unit) ->' список -> unit =, и я знаю, что мой 'f' должен быть только
    'a-> единицей, и я не знаю, как его изменить

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

1 Ответ

2 голосов
/ 16 марта 2020

Определение List.iter выглядит примерно так. Вызов этой функции:

List.iter f [x1; x2; ...; xn]

эквивалентен этим отдельным вызовам:

f x1;
f x2;
. . .
f xn

Ваша проблема в основном в том, что вы пропускаете точку с запятой (;) для разделения операторов, которые должны быть сделано последовательно.

Это выражение:

f e (iter f q)

- это одно большое выражение, которое вызывает f с тремя параметрами. Вам нужно разделить его на две части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...