2010-03-03 15 views
5

Hat R6RS oder Chez Scheme v7.9.4 eine Bibliotheksfunktion, um zu prüfen, ob eine Liste doppelte Elemente enthält?Schema: Erkennen von doppelten Elementen in einer Liste

Verfügen Sie alternativ über eine integrierte Funktionalität für Sätze (die doppelte Elemente nicht zulassen)? Bis jetzt konnte ich nur ein Beispiel finden here.

Das Problem dabei ist, dass es nicht wirklich Teil der Chez Scheme-Bibliothek zu sein scheint. Obwohl ich meine eigene Version davon schreiben könnte, würde ich lieber eine wohlbekannte, getestete und gepflegte Bibliotheksfunktion verwenden - vor allem wenn man bedenkt, wie grundlegend eine Operation dies ist.

So ein einfaches "Verwenden dieser integrierten Funktionen" oder eine "keine integrierte Bibliothek implementiert dies" wird ausreichen. Vielen Dank!

Antwort

4

SRFI 1 on list processing has a delete-duplicates function (also könnten Sie das verwenden und überprüfen Sie die Länge danach) und möglicherweise auch andere Funktionen, die Sie nützlich finden könnten.

+0

Dank - sieht aus wie dies eine nützliche Funktion sein würde. Irgendeine Idee, wenn SRFI 1 es in Chez Scheme machen wird? Es scheint bereits viel von dem zu haben, was dieser SRFI zu bieten hat, aber ich sehe nirgendwo in v7.9.4 Lösch-Duplikate. –

+0

Ich benutze PLT und ich weiß nichts über Chez, aber viele SRFIs sollten für jede populäre Scheme-Implementierung verfügbar sein; Sie sind im Grunde die großen Standardbibliotheken für Scheme. Google hat das sofort gefunden: https://code.launchpad.net/~scheme-libraries-team/scheme-libraries/srfi Diese SLS-Dateien (Scheme library source) sollten über Chez geladen werden, vielleicht so: http: // www .scheme.com/csug8/libraries.html – mquander

+0

Danke. Es sieht so aus, als würde das wahrscheinlich funktionieren, obwohl ich keine Möglichkeit hatte, genügend Quellen herunterzuladen, um es in Chez zu laden. –

3

Kyle,

Vor einiger Zeit brauchte ich ein paar SRFIs mit Chez Scheme zu verwenden. Ein paar, dass ein für die Verwendung mit Chez Scheme umgewandelt (einschließlich SRFI-1) sind bei:

http://github.com/dharmatech/chez-srfi

Nachdem Sie den Pfad zu 'chez-Srfl' auf Ihrem CHEZSCHEMELIBDIRS hinzufügen, können Sie SRFI-1 importieren:

(Import (Srfl: 1))

Ed

+0

Das sieht sehr nützlich aus, aber ich bekomme "Ausnahme: Bibliothek (srfi: 1) nicht gefunden", wenn ich den Importbefehl im Schema-Interpreter ausprobiere. Ich habe versucht, CHEZSCHEMELIBDIRS einzustellen, mit --libdirs zu laufen und Schema von .../chez-srfi auszuführen, aber es ist immer das gleiche Ergebnis. Ich bin mir nicht sicher, ob das verwandt ist, aber Git schien nicht die Dateien mit '*' zu mögen, wenn ich das Repository geklont habe. –

+0

Huch, Entschuldigung, dass ich nicht früher geantwortet habe; Ich habe in letzter Zeit den Stapelüberlauf nicht überprüft. Bist du auf Windows? Leider verwenden diese srfi-Bibliotheken eine Namenskonvention, die von Windows nicht unterstützt wird (verrückt, ich weiß ...). Ich denke darüber nach, eine Kopie dieser Sammlung herauszugeben, die "portable" Namen verwendet. – dharmatech

+0

Kein Problem. Ich bin auf Windows, also kannst du mindestens einen Fan zählen, wenn du die Möglichkeit hast, die portable Version der Bibliothek zu veröffentlichen :) –