operator # + und # - in .sbclrc

9

Jeder weiß, was #+ und #- operators in .sbclrc bedeutet? Ich konnte es im Handbuch nicht finden. Ich sehe #- in .sbclrc , nachdem ich quicklisp installiert habe:

%Vor%

Ich sehe auch #+ im SBCL-Benutzerhandbuch, aber ich konnte keine Erklärung für ihre Funktionalität finden. Sieht aus wie etwas für das Laden einzelner Module.

Sind sie nur für die SBCL-Implementierung oder Teil von Common Lisp?

    
sudo 28.12.2011, 04:00
quelle

2 Antworten

16

Das ist eine allgemeine Einrichtung von Common Lisp, nicht nur SBCL.

Es gibt eine Variable cl:*features* , die Symbole für 'Features' auflistet, die momentan im Lisp-System vorhanden sein sollten. Typische Merkmale sind: Endian, Implementierung, Subsysteme, Prozessor, Erweiterungen, Lisp Dialekt und mehr.

In einer Lisp-Datei bedeutet der Ausdruck #+quicklisp(foo) : (foo) nur lesen und ausführen, wenn das Feature quicklisp in der Liste der Features *features* vorhanden ist.

In einer Lisp-Datei bedeutet der Ausdruck #-quicklisp(foo) : (foo) nur lesen und ausführen, wenn das Feature quicklisp NICHT in der Liste der Features *features* vorhanden ist.

Diese Funktion wird häufig verwendet, um implementierungsspezifischen Code für eine andere Common-Lisp-Implementierung auszublenden oder anzuzeigen.

Siehe Dokumentation:

Rainer Joswig 28.12.2011, 08:53
quelle
7

Sie sind Teil der Common Lisp READ er. Die Idee ist, dass sie Text "ausblenden", es sei denn, ein bestimmtes Feature (oft eine bestimmte CL-Implementierung) ist ( #+ ) oder nicht ( #- ) verfügbar.

Dies sind wahrscheinlich die CL-Konzepte, die am meisten der C / C ++ - Idee von "textuellen Makros" ähneln - konzeptionell und pragmatisch sind sie ähnlich wie

%Vor%

... und dergleichen. Sie verstecken im wahrsten Sinne des Wortes eingehende Quellcodes aus dem READ er, so dass sie nie lexed - geparst - interpretiert - kompiliert - evaluiert - interniert - nada sind. Sie hören einfach auf zu existieren, wenn die CL-Implementierung, die Sie ausführen, keine Funktion hat / ist die "falsche" Implementierung / was auch immer Flag.

    
BRFennPocock 28.12.2011 04:08
quelle