İki (potansiyel olarak) sıralanmamış set arasında kesişen bir özyinelemeli lambda işlevi (iki argümanın kabul edilmesi) yazmayı deniyorum. İşte en çok inanıyorum kodu, yalındır bulacaksınız geçerli:4clojure: set-intersection, yinelemeli 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 '[])
)
Ben çizgi yerine bu lambda fonksiyonu kavşak kullanmak için umut _ izlemeleri Ancak
(= (__ #{0 1 2 3} #{2 3 4 5}) #{2 3})
Bu kod, Java'nın Unable to resolve symbol: inner in this context
...
herhangi bir öneride bulunmadığı konusunda ısrar edemez.
kaynak: http://www.4clojure.com/problem/81
Hata açıklaması biraz gergindeyse kusura bakmayın, ama bu problemi çözmek için iyi bir süre içinde uğraştığımızı düşünüyoruz :( –
kesişim iki parametre alıyor ve başka bir set döndürüyor mu? O zaman neden bunun yerine bir işlev mi döndürüyorsun? – nha