Bonjour, je viens de modifier comment les macros sont gérés. J'ai une question sur le comportement attendu des macros. Voici l'exemple que j'utilise: sqr_fun = node_ (symbol_ "lambda_->_") (symbol_ "x") (node_ (symbol_ "_*_") (symbol_ "x") (symbol_ "x")); sqr_type = node_ (symbol_ "_->_") (symbol_ "Int") (symbol_ "Int"); give_type : Sexp -> Sexp -> Sexp; give_type = lambda expr -> lambda tp -> node_ (symbol_ "_:_") expr tp; sqr = Macro_ (give_type sqr_fun sqr_type); main = (sqr 2); Est-ce que l'on s’attend à sqr = (lambda x -> x * x) : Int -> Int ou sqr = Macro_ (give_type sqr_fun sqr_type); main = (((lambda x -> x * x) : Int -> Int) 2) Pour l'instant (commit 6967d92) fait le premier cas. Mais je pense que le second est le comportement attendu. Pour lexp_decls, j'ai un problème parce que pour certain cas nous avons besoin d'avoir le Type et l'expression ensemble (pour lexp_p_check) mais nous avons aussi besoin d'avoir le Type tout seul (pour les définitions récursives). -- Pierre Delaunay