Liste mit 2 Elementen in ein gepunktetes Paar umwandeln?


7

F: Wie kann ich eine Liste mit zwei Elementen in eine consZelle mit gepunkteten Paaren konvertieren ?

Ich kann eine Liste mit 2 Elementen in ein gepunktetes Paar konvertieren mit:

(let ((list '(1 2)))
  (cons (car list) (cadr list)))        ; => (1 . 2)

Ich blende: Gibt es eine eingebaute Funktion, die dies tut, oder sollte ich meine eigene rollen?


5
Schamloser Stecker: Schlagen Sie vor, ist in solchen Fällen großartig. Setzen Sie Ihre Eingabe als '(1 2), Ihre Ausgabe als '(1 . 2)und es wird (apply #'cons '(1 2))für Sie vorschlagen !
Wilfred Hughes

Antworten:


11

consmacht aus zwei Argumenten eine Nachteile-Zelle. applyverwendet eine Liste als Argumente für eine Funktion. Wenn sich ihre Kräfte kombinieren: (apply #'cons x)Konvertiert eine Liste mit zwei Elementen in eine Nachteile-Zelle (ohne in der Liste herumstöbern zu müssen) und löst einen Fehler aus, wenn die Liste nicht 2 lang ist.


Es ist fantastisch, wie dies sowohl präziser ist als auch die richtige Fehlerbehandlung beinhaltet.
Daniel Jour
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.