Ich versuche eine rekursive Lambda-Funktion (die Annahme von zwei Argumenten) zu schreiben, die den Schnittpunkt zwischen zwei (möglicherweise) unsortierten Mengen findet. Hier ist der Code, die ich die meisten glauben, finden einfach:4clojure: set-intersection, rekursives Lambda
(fn intersection [a b]
(fn inner [x y out]
(if (empty? x) out
(if (nil? (some ((set (first x)) y)))
(inner (rest x) y out))))
(inner (rest x) y (cons (first x) out))
(inner a b '[])
)
Ich hoffe, das Lambda-Funktion zu verwenden Kreuzung anstelle des Strich _, dass folgt:
(= (__ #{0 1 2 3} #{2 3 4 5}) #{2 3})
jedoch , dieser Code kann nicht kompiliert werden und besteht darauf, dass Java Unable to resolve symbol: inner in this context
...
Irgendwelche Vorschläge?
Quelle: http://www.4clojure.com/problem/81
Sorry, wenn die Fehlerbeschreibung ist ein wenig knapp, aber es fühlt sich an, als ob wir in Kreisen bewegt haben, um dieses Problem für eine gute Weile zu lösen :( –
Kreuzung nimmt zwei Parameter und gibt einen anderen Satz, richtig? Dann warum gibst du stattdessen eine funktion zurück? – nha