loc est utilisé si une erreur a lieu. Mauvais nombre d'argument/Mauvais type, normalement le système de type devrait pouvoir nous assurer qu'aucune erreur ne vas avoir lieu mais pour l'instant l'information est utile pour le débogage. De plus, lorsque les arguments sont extraits ocaml imprimerait un warning "macth not exhaustive" si le cas impossible n'était pas géré.
Ah, je vois. Ce serait mieux que le nombre d'arguments soit testé (et l'erreur signalée) par le code d'eval, plutôt que le code de la fonction.
Je pense qu'aucune fonction n'utilise le contexte en ce moment.
Ah, OK, alors on devrait pouvoir l'enlever.
depth est la profondeur de récursion de l'évaluateur. Il est utilisé pour imprimer la call trace de l'évaluateur. Avant lorsqu'un builtin était appelé s'il utilisais l’évaluateur la profondeur revenait à 0 ce qui rendait la calltrace moins lisible.
Hmm... pourquoi ne pas passer toute la "call stack" dans ce cas, plutôt que juste le "depth"?
Pour ce qui est des accesseurs, je ne suis pas sur de comprendre.
Le code suivant:
x = 2; xtype = decltype x;
devrait être transformé (apres lexp_parse) en
x = 2; xtype : Type; xtype = Int;
si decltype est une fonction le code sera transformé en
En effet, mais decltype ne devrait justement pas être une fonction, mais une macro.
Stefan