Commit 7a5c8242 authored by Pietro Abate's avatar Pietro Abate

[r2005-06-18 05:39:22 by afrisch] id

Original author: afrisch
Date: 2005-06-18 05:39:22+00:00
parent 9f7522dd
======================================================================
Alain 2005-06-18
Simplifier la sérialisation/déserialisation des structures internes;
utiliser les fonctions de sérialisation de Caml.
Plan d'attaque:
- utiliser des clés de hachage au lieu d'entiers séquentiels pour représenter
les namespaces, tags, labels, identificateurs; signaler quand même
les collisions dans chaque espace de nommage.
type 'a t
val mk: int -> 'a t = "%identity"
val get: 'a t -> int = "%identity"
(autre avantage: possibilité de generer statiquement tables de dispatch
sur les atomes)
- pour les structures cycliques (types, patterns, automates): attacher
un identifiant unique d'unité de compilation dans chaque noeud;
interdire deux unités avec même id. Accepter que les mêmes noeuds
se retrouvent dupliqués en mémoire (on peut quand detecter l'égalité
en regardant id d'unité + id séquentiel).
Autres idées:
- applatir la representation des valeurs.
| Atom of ns * local
| Xml of ns * local * fields * v
(support du système de types pour interdire autre chose en position
de tag / attribut - bonne chose de toute manière).
======================================================================
Alain 2005-03-04
......@@ -22,24 +58,3 @@ Alain 2003-05-15
Il faut faire attention: on ne veut pas de commentaires dans la
representation interne, on ne veut pas distinguer section CDATA, etc...
======================================================================
Alain 2004-01-22
Bug signalé par Cedric:
CDuce version 0.2.0-pre3
# let fun toto ( String -> String)
|Int -> x
|_ -> raise "";;
Warning at chars 35-43:
This branch is not used
Fatal error: exception Failure("Compile: cannot find x")
La branche inutilisée n'est pas du tout type-checkée.
Solutions possibles:
- type-checker quand même les branches inutilisées
- eventuellement, vérifier seulement la definition des variables utilisées
- calculer les variables libres d'une fonction après la detection
des branches inutilisées, pour ne pas en tenir compte
\ No newline at end of file
......@@ -18,7 +18,6 @@ let split (MPerson -> Man ; FPerson -> Woman)
match argv [] with
| [ f ] ->
(match load_xml f with
| <doc>(l & [Person*]) -> <doc>(map l with x -> split x)
| _ -> raise "Invalid document")
(match (load_xml f :? <doc>[ Person* ]) with
| <_>l -> <doc>(map l with x -> split x))
| _ -> raise "Invalid command line"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment