% define sqrt sqr = lambda (x : Nat) -> x * x;
(sqr 2);
Ce n'est pas du code Typer valide: le top-level d'un fichier doit contenir une liste de *déclarations* séparée par des ";". sqr = lambda (x : Nat) -> x * x; est une déclaration valide. Mais (sqr 2); ne l'est pas. C'est une expression. Il te faudrait qqch du genre: result = sqr 2; à la place. Ce problème se retrouve dans beaucoup de tes fichiers d'exemples.
+let rec eval_toplevel ltop ctx: (value_type * runtime_env) =
"eval_toplevel" ne devrait jamais rien faire d'autre que d'évaluer des déclarations (vu que c'est la seule chose qu'il peut y avoir), donc il ne renvoie jamais de valeur. Donc tu ne devrais pas avoir besoin de définir le type `value_type' ou `ltop'. Bien sûr, il faut pouvoir exécuter du code d'une certaine manière. Pour ça, je pensais faire comme en C/Haskell/... et déclarer `main' comme un identificateur spécial qui contient le point d'entrée (i.e. l'exécution du programme se fait en appelant `main'). Stefan