Clojure'da iki veya daha fazla s ifadesi döndüren bir makro (veya varolanını kullanarak) yazmanın bir yolu var mı?İki veya daha fazla s ifadesi döndürmek üzere küme makrosu
Örnek.
(map * (repeat 2 (range 10)))
:
(map * (range 10) (range 10))
Şimdi denemek ve bir parametre olarak daha sonra (şimdilik 2) güç sağlar, böylece tekrarı kullanmak istiyorum: Ben ilk 10 kareler üretmeye çalışıyorum Say
Yukarıdakiler, tekrarı olarak çalışmamaktadır, iki aralıkla değil, iki aralıklı tek bir ifade döndürür.
Lütfen "ilk 10 kareyi iade et" işlevinin alternatif uygulamalarını sağlamaz. Bu tür durumlarla veya genel olarak uygulanabilir geçici çözümlerle ilgilenmek için deyimsel yollarla ilgileniyorum.
Ben aşağıda patlayabilir Ben uygulamak için bir yol arıyorum varsayalım:
(explode '(a b c)) ;; evals to a b c
(map * (explode (repeat 2 (range 10)))
Sorunuz biraz kafa karıştırıcı.İş görmek istediğiniz sözdizimine bir örnek vermeniz yararlı olacaktır; Şimdilik, Clojure'da belirli tanımları olan 'map' ve' repeat' işlevlerini kullanın. – JohnJ
@JohnJ Mesajımın güncellenmiş kuyruğunu gör –