% 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