Le langage n’était pas vraiment interprété. Un programme était constitué d’une liste d’objets. Un objet pouvez être un nombre, une instruction, un programme.
Les 5 premiers quartets (2,5 octets) de l’objet étaient un pointeur vers le code assembleur gérant l’objet. Par exemple pour un nombre, c’était d’ajouter le nombre dans la pile. Pour un +, le code prend les deux nombres dans la pile, les ajoutes et recrée un objet de nombre dans la pile.
La fin du code assembleur d’un objet termine toujours par une instruction JUMP vers le pointeur de l’objet suivant.
Dans les objets faits par HP, il y en avait deux un peu spéciaux : begin et end qui permettait d’agréger des objets pour faire un truc de plus haut niveau. J’ai trouvé cette façon de faire vraiment très élégante.
[^] # Re: J'ai pas écouté le podcast, mais mon grain de sel
Posté par Anthony Jaguenaud . En réponse au lien Is functional programming the hipster programming paradigm?. Évalué à 2.
Le langage n’était pas vraiment interprété. Un programme était constitué d’une liste d’objets. Un objet pouvez être un nombre, une instruction, un programme.
Les 5 premiers quartets (2,5 octets) de l’objet étaient un pointeur vers le code assembleur gérant l’objet. Par exemple pour un nombre, c’était d’ajouter le nombre dans la pile. Pour un
+, le code prend les deux nombres dans la pile, les ajoutes et recrée un objet de nombre dans la pile.La fin du code assembleur d’un objet termine toujours par une instruction
JUMPvers le pointeur de l’objet suivant.Dans les objets faits par HP, il y en avait deux un peu spéciaux :
beginetendqui permettait d’agréger des objets pour faire un truc de plus haut niveau. J’ai trouvé cette façon de faire vraiment très élégante.