Rebol non ha parole chiave . È un concetto che fa parte di ciò che rende il linguaggio così versatile - ogni parola può essere riassegnata, a ogni parola può essere assegnato il valore di una funzione "integrata" e una che nel flusso generale della lingua è vero *. Tuttavia esistono notevoli eccezioni all'interno di due dei tipi di dati strutturali di base di Rebol che infrangono quella regola:
- return all'interno di una funzione e
- self all'interno di un oggetto.
Ci sono state alcune discussioni nella chat room di Rebol e Red riguardo a possibili modi per costruire funzioni e oggetti in cui queste parole non sono predeterminate, la mia domanda allude alla mia migliore comprensione di quella discussione: Esiste un approccio per rimuovere le qualità speciali di queste parole che funzionerebbero pur mantenendo le caratteristiche di ciascun tipo? Prendi ad esempio:
document: make object! [
title: none
rename: function [title][self/title: title]
]
essay: make document []
essay/rename "My Document"
Nell'esempio precedente, potremmo voler sostituire self
con this-document
:
document: object/self [
title: none
rename: function [title][this-document/title: title]
] 'this-document
Come si propagherebbe agli oggetti derivati senza richiedere una parola speciale per mantenere le schede?
essay: make document [probe this-document]
essay/rename "My Document"
Quale sarebbe il modo migliore per esprimere questa parola? Quanto sopra, o qualcosa di simile:
document: object [self: 'this-document][
title: "Untitled"
rename: function [title][this-document/title: title]
]
L'utilizzo di un approccio a due argomenti per la creazione di oggetti apre la possibilità di aggiungere più qualità a un oggetto: controllo di determinati campi, campi nascosti o protetti, ma tutto ciò dovrebbe in qualche modo essere rintracciato nell'oggetto di base struttura pure.
* I dialetti all'interno di Rebol - come parse
- contengono parole chiave, ma il dialetto di analisi non viene elaborato dal valutatore Rebol, è la sua sottoflea.