Suppression des types "quotés" inexistants

Registered by Luc Bruninx

La gestion des types "quotés" a été revue.

En effet, les révisions précédentes permettaient de "quoter" n'importe quel type de données.

Or, il faut faire une distinction entre les données "vivaces" des objets actifs en mémoire et les éléments abstraits.

Ainsi, si on écrit '(function {display "Hello!"}) qu'a t-on quoté ?...

On a quoté l'expression (function {display "Hello!"}) qui est une représentation abstraite de la fonction qui sera "vivace" dans la mémoire de l'ordinateur lorsque ce code aura été évalué.

On comprend donc mieux la notion de "quotation". Il s'agit d'une forme particulière de sérialisation.

Rappelons que la sérialisation consiste à transcrire un objet "vivace" en une forme "abstraite" que l'on pourra dé-sérialiser pour obtenir un nouvel objet "vivace" conforme au premier. Le deuxième objet est un clone du premier. Mais ce qu'il faut bien retenir, c'est que l'objet résultant de la sérialisation n'est pas "vivace", il s'agit d'une forme abstraite.

Cela dit, il est possible de sérialiser dans une multitude de formats (XML, properties, binaire, etc...). Lorsqu'on quote un objet "vivace", on doit donc obtenir une forme sérialisée de l'objet qui permet lorsqu'on la dé-sérialise d'obtenir une copie conforme au premier.

La quotation est donc une forme de sérialisation qui respecte un format établi : le langage lui-même. Ainsi, on peut sérialiser un objet dans une multitude de formats, mais on ne peut peut quoter que dans un seul et unique format, le code d'un programme Abstrasy.

Bien sûr, pour que ce code ne soit pas immédiatement évalué, l'opérateur syntaxique 'quote' indique que l'expression doit être prise tel quel sans l'évaluer (jusqu'à un 'unquote' qui force l'évaluation).

Les types suivants n'existent donc pas sous forme quotée:
   - nothing
   - scope
   - namespace
   - external
   - function
   - pattern
   - interface

Tous sont "quoté" sous la forme d'une expression.

Ceci est très important car il est maintenant possible d'améliorer encore d'avantage la généricité du langage et la métaprogrammation.

Blueprint information

Status:
Complete
Approver:
Luc Bruninx
Priority:
Essential
Drafter:
Luc Bruninx
Direction:
Approved
Assignee:
Luc Bruninx
Definition:
Approved
Series goal:
Accepted for 1.0
Implementation:
Implemented
Milestone target:
None
Started by
Luc Bruninx
Completed by
Luc Bruninx

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.