Я пытаюсь использовать список, возвращенный из List.fold_left в списке типа pExp (пользовательский тип). Цель этого состоит в том, чтобы создать список Times (pExp list) со списком, соответствующим типу Plus l.
let eval (lst: pExp list): pExp list =
match lst with
| [] -> []
| other patterns
| Plus l::t -> (List.fold_left (fun acc a -> Times(a::t)::acc) lst)
(* For each item a in l, append it to t and make it a Times *)
| _ -> []
Я ожидал, что List.fold_left вернет список pExp, но я получаю эту ошибку.
Error: This expression has type pExp list -> pExp list
but an expression was expected of type pExp list
Первая строка в сообщении об ошибке указывает, что fold_left возвращает pExp, что именно то, что ожидается, нет?