Я подозреваю, что проблема не в вашем коде печати списка - он будет работать нормально, если он вызывается с некоторыми данными.
Для справки, есть более хороший способ оценки эффектов со списками: List.app : ('a -> unit) -> 'a list -> unit
. Это похоже на List.map
, но оно не создает список как возвращаемое значение. Еще один, который вам может понравиться - это String.concatWith
, который часто облегчает печать кода, например ::10000
print (String.concatWith "\n" (map xx lst))
И, наконец, вы использовали множество ненужных скобок в вашем примере кода. Вам редко нужно заключать выражения в скобки - особенно если нет приложения, в котором нет функций (т. Е. Запись (lst)
или (xx)
всегда будет означать lst
или xx
и не устраняет какую-либо двусмысленность (поскольку нет.) Точно так же в ваших шаблонах их можно так же легко написать (IntToken a)
без изменения значения (и, возможно, увеличения читабельности).