No puede. El caso es que begin
tiene dos roles: uno es una secuencia un montón de expresiones de efectos laterales, y el otro es que se usa para "empalmar" resultados de macro. El hecho de que pueda usar begin
con una definición como la anterior es el resultado de esta segunda característica, y no puede escribirlo usted mismo.
Si realmente quiere seguir toda la historia, entonces usted podría definir begin
como el macro simple que hace que sea hacer que el aspecto de secuenciación (y que de hecho puede ser implementado como tal, aunque por lo general no lo es) . Pero, debe agregar el reconocimiento explícito de begin
s para empalmar definiciones (a nivel o interno). Esto significa que una implementación de macro está bien, pero realmente no puede ser una biblioteca porque el expansor de núcleo debe saberlo. (Y debido a que el lenguaje tiene un alcance léxico, no hay una buena forma para que el expansor núcleo identifique begin
s que no están definidos en el lenguaje central.)
Para resumir todo esto, podría decir que R5RS solo está mal clasificando begin
como "sintaxis de biblioteca", ya que no se puede definir en una biblioteca ... pero incluso eso no es del todo exacto ya que R5RS define "sintaxis de biblioteca" como solo "expresiones derivadas". El verdadero punto equivocado es, por lo tanto, el hecho de que una de las dos caras de begin
se implementa en otro lugar, en el expansor (para contextos de definición).
Tenga en cuenta también que R6RS aclara todo: las dos caras de begin
se hacen explícitas, y ahora es parte del lenguaje central, no una "forma de biblioteca", ni siquiera una forma derivada.
Entonces, ¿por qué se considera una "sintaxis de biblioteca", y no simplemente "sintaxis" en R5RS? Pensé que podrías reescribir los formularios de la biblioteca solo con formularios fundamentales. – eljenso
Eso es un error (junto con el artículo de wikipedia). –
[citación necesitada] – Javier