Que devrait donner > sqr = lambda x -> x * x; alors ?
let sqr = lambda x -> x * x in sqr
Est bien parsé sans Pcall mais c'est parce que Plet est parsé de façon différente.
Je pense que l'erreur doit venir de pexp. Le dernier pattern matché est:
| Node (f, args) -> Pcall (pexp_parse f, args)
Donc tout les patterns qui sont inconnus devienne des PCall.
Une solution serait d'ajouter un nouveau cas
type pexp = Pdecl of Pvar * pexp
(* Node(sexp, sexp) *) | Node (Symbol (_, "_=_"), [Symbol s; t])-> Pdecl(var, t)
Devrait maintenant transformer tout les top level expression en Déclaration.