Это скорее запрос на обучение OCaml, чем вопрос о конкретной c проблеме в вашем коде. Как правило, читать документацию быстрее, чем задавать отдельные вопросы здесь, в StackOverflow.
При этом интерфейс Seq
выглядит следующим образом:
type 'a t = unit -> 'a node
and 'a node = Nil | Cons of 'a * 'a t
val empty : 'a t
val return : 'a -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
val filter : ('a -> bool) -> 'a t -> 'a t
val filter_map : ('a -> 'b option) -> 'a t -> 'b t
val flat_map : ('a -> 'b t) -> 'a t -> 'b t
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
val iter : ('a -> unit) -> 'a t -> unit
Как вы можете видеть , он предлагает много функций обхода высшего порядка. Вероятно, вы захотите использовать iter
, поскольку вы хотите печатать значения, а не вычислять их. То есть, нет возвращаемого значения для желаемого использования.
Однако вы должны заметить, что интерфейс Map
уже имеет функцию iter
. Насколько я могу судить, нет причин для преобразования в последовательность перед выполнением итерации. Документация Map.iter
гласит следующее:
Связывания передаются в f в порядке возрастания в отношении упорядочения по типу ключей.
Вот что Вы хотите, так что Map.iter
похоже, что это добьется цели.
PairsMap.iter my_print_function m