Ferruccio Guidi [Mon, 29 Jun 2009 17:46:08 +0000 (17:46 +0000)]
lambda-delta:
- lib/output: infrastructrure for reduction reporting
we found just one instance of "referene typing" in the "Grundlagen"
rt.txt reports where it occurs
- lib/time: bugfix
- basic_rg: bugfix (some relocations were missing)
the "Grundlagen" now typechecks :)
Ferruccio Guidi [Tue, 23 Jun 2009 21:00:06 +0000 (21:00 +0000)]
- procedural: basic support for lapply (solves a problem in the reconstruction of algebra/groups.ma)
- lambda-delta: bugfix in line counts and nodes counts
1) NCicTypechecker.typecheck_obj removed, since it did not add to the
environment (and thus all objects were type-checked at least twice)
2) NCicEnvironment.check_and_add_obj that checks and add an object
3) added NCicEnvironment.invalidate_obj that invalidate all objects after a
given one (that comprised)
4) NCicLibrary.add_obj now calls the NCicEnvironment.check_and_add_obj;
NCicLibrary.time_travel now calls NCicEnvironment.invalidate_obj
Note: it could happen that an object is in the environment but not in the
library and thus it could not be invalidated by time_travel.
In practice, this is safe anyway and it will never happen.
- Bug fixed: removed URIs were not removed from the dependencies DB.
- The assert failure has been removed since in some situations (????) an
empty dir (no new objects) was not created and thus it was normal that it
was not removed. TO BE BETTER UNDERSTOOD
NG decompilation is now activated. However, it is called from the old
decompilation that cannot detect when a NG-only file A is used by another
NG-only file B. As a consequence, decompiling A does not decompile B too.
Good:
1) all set_* methods are now polymorphic
2) no more :> coercions
3) no more technical class types
Bad:
1) some polymorphic set_* methods have explicit row types that are
problematic when extending another class in another file. The
row types should just be #classname, but ocaml rejects them that
way.
Enrico Tassi [Thu, 18 Jun 2009 14:46:17 +0000 (14:46 +0000)]
callbacks were taking in input a status bu were not using them.
thanks to the new #type for statuses this was a problem, and Obj.magic
was required to fix them. Removed both the dummy parameter and the
unsafe cast
Stricter type: the type now shows that disambiguation only alter the lexicon.
In this way we are forced to manually set the content of the object in place of
setting the whole object, that leads to information loss since in the meanwhile
new commands may have altered the rest of the state.
Initial implementation of statuses using objects in place of nested records.
So nicer!
The only major problem is that the NCicLibrary functor does not return a
function #status as 'status -> 'status, but a function status -> status.
Thus I have to painfully wrap NCicLibrary.Realizer(...).require in NRstatus.
TO REMEMBER:
- every function that works on a data type that used to be put in the status
(e.g. a db) must now work on a functional class with just two members
(db and set_db). Moreover, every function in the module must work on the
open variants of the class type, i.e. #status
1) unification hint now takes NG terms (as it should have been from the very
beginning)
2) refresh_uris_in_term is now passed to the constructor of the
existential/universal data type in NCicLibrary
3) URIs are now refreshed in unification hint data
1) NCicLibrary (which is untrusted) moved after NCicUntrusted.
NCicLibrary registers get_obj to NCicEnvironemnt (and to NCicPp)
2) URIs are now refreshed when objects are included from disk
Observation: even NCicPp is untrusted. Thus its implementation should be put
at the end and some references set to one early module. Which one? Two
choices: NCic or NCicPp (two modules, one with the implementation follows).
Could the same be done for NCicLibrary too in order to bring back the explicit
dependency of NCicEnvironment over NCicLibrary? [ In that case, remember to
change back the exception caught by GrafiteDisambiguate ]