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