ich gerade angefangen habe Common Lisp lernen - und fallen schnell in ihn verliebt - und ich habe gerade auf den Typ-System bewegt. Ich scheine eine besondere Vorliebe für anwendungsbezogene Programmierung zu entwickeln.Applicative Programmierung und Common Lisp Typen
Wie ich es verstehe, sind in CL-Strings und Listen beide Sequenzen, aber es scheint nicht alle Standardfunktionen für die Zuordnung über eine Sequenz zu sein, nur Listen. Ich kann sehen, warum sie für Listen bereitgestellt werden, was mit ihnen der grundlegende Datentyp und alles ist, aber warum war es nicht entworfen, um mit Sequenzen zu arbeiten? Da es sich um einen allgemeineren Typ handelt, scheint es sinnvoller zu sein, anwendungsbezogene Funktionen auf sie und nicht auf Listen auszurichten. Oder irre ich völlig falsch, wie es funktioniert?
Edit:
Was ich besonders verwirrt fühlte sich über die Art und Weise war, die Sequenzen - die Abstraktion - und Listen - eine Implementierung - scheint in CL konfus werden. Der Konsens scheint zu sein, dass dies aus historischen Gründen geschieht; Lisp gibt es schon so lange, dass man mit seinen Funktionen und Makros die Entwicklung von Softwareentwicklungspraktiken ziemlich genau abbilden kann; welche Funktionen für Sequenzen gelten und welche für Listen auf den ersten Blick willkürlich erscheinen, weil CL eine Mischung aus Vorsequenz-Abstraktionsfunktionen hat, die nur auf Listen operieren, und Funktionen, die das Gleiche allgemein auf Sequenzen tun. Als jemand, der gerade CL im Moment lernt, denke ich, dass es nützlich wäre, wenn Autoren zuerst Sequenzen als sauberere Abstraktion einführten und dann Listen als grundlegendste Implementierung dieser Abstraktion kauften. Listen würden immer noch als Syntax benötigt werden, aber zu dem Zeitpunkt, wo es notwendig ist, dies ausdrücklich zu erklären, hätten viele Leser das selbst herausgefunden, was für den Anfang ein ziemlicher Ego-Boost wäre.
COUNT, FIND, REMOVE funktioniert gut über Sequenzen. Überprüfen Sie das Sequenzwörterbuch des ANSI CL-Standards. –
Nun gut, nun, was weißt du? Ich sprach dort ein bisschen vor mir. Vielen Dank! –
Sie haben vielleicht vor sich gesprochen, aber Sie haben mir die Antwort gegeben, die ich brauchte. Was mich verwirrte, war, warum die Abstraktion zwischen Sequenzen als allgemeinem Fall und Listen als die Implementierung so in CL verworren schien; Jetzt weiß ich, dass es aus historischen Gründen ist. Vielen Dank! –