ich neu schreiben will (ich bin nicht sicher, ob die ursprüngliche Implementierung faul von nicht ist) eine faule Implementierung von Clojure mit lazy-seq
Verschachtelung, die wie folgt funktioniert:faul Neuimplementierung von Clojure Verschachtelung
(take 4 (lazy-interleave ’(1 2 3) ’(a b c)))
(1 a 2 b)
I mit so etwas wie das kam, aber ich bin mir nicht sicher, warum es nicht funktioniert:
(defn lazy-interleave [v1 v2]
(lazy-seq (concat (list (first v1) (first v2))) (lazy-interleave (next v1) (next v2)))
)
Edit:
Dank Arthur Antwort, hier ist eine modifizierte Arbeitslösung:
(defn lazy-interleave [v1 v2]
(lazy-seq
(cons (first v1) (cons (first v2) (lazy-interleave (rest v1) (rest v2))))
)
)
Danke, ich wusste nicht, dass es eine 'faule Katze' gibt. Nur eine Frage: auch ohne 'nil' Prüfung mit Lazy-Cat können wir eine begrenzte Anzahl von Elementen aus' faul-interleave' übernehmen, aber warum können wir es nicht mit Lazy-Seq machen? In meinem Beispiel bekomme ich '(1 nil)' für '(take 2 (lazy-interleave [1] []))', aber selbst mit 'take' funktioniert mein Code nicht – Yar
Als Programmierer, der Katzen mag Ich versuche, diese Funktion zu benutzen, wann immer es gemacht werden kann, um –
@ArthurUlfeldt lol total zu passen es hat. Danke noch einmal. – Yar