2012-09-14 16 views
12

Gelecek jeton bir seq almak için ClojureBir makroyu Clojure'da nasıl eşleyebilirim?

(map future exprs) 

yılında aşağıdakileri yapmaya çalıştım. Ne yazık ki bu hata, future'un kendisi bir makro değil, bir işlevdir.

map sözdizimini devam ettirirken bu işi yapmanın bir yolu var mı? for makrosunu kullanmamayı tercih ederim (kişisel bir tarz gibi).

mmap veya makro harita arıyorum. Daha önce Marcin belirttiği

+3

Bir lambda kullanmayı denediniz mi? – Marcin

cevap

15

, sen yürütülecek görevlerin bir demet oluşturmak için map kullanıyorsanız, arada bir lambda (anonim işlev)

user=> (map and [true false 0 nil]) 
java.lang.Exception: Can't take value of a macro: #'clojure.core/and (NO_SOURCE_FILE:1) 
user=> (map #(and %) [true false 0 nil]) 
(true false 0 nil) 

düzenlemek

kullanmak diğer konularda, sorunlarınız olabilir. map tembel, ve onlar için bir şey sorana kadar gelecek oluşturulmaz. Değerlendirilmesi için zorlamanız gerekir (bu, repl sonucunu yazdığında replede ne olur) veya başka bir yol bulmak zorundadır.

+0

... "map" yerine "mapv" yi kullanalım? ... '(ertelemeyi kaldır [exprs] (mapv # (gelecekteki%) exprs)) – Thumbnail

+0

Değerlendirmeyi, örn. '([] 'ye (harita # (...) xxx)' Ben de bu amaç için de dorun olduğunu düşünüyorum.Ancak o anda bakma zamanı yok. – Bill

+5

'doall' ne istiyorsun '' dorun '' sekansı fark ettiği gibi diziyi unutur – Thumbnail

İlgili konular