उदाहरण के लिए -first
हमारे पास की परिभाषा में है:
(--first (funcall pred it) list))
स्वाभाविक रूप से "इट" का अर्थ मैन्युअल में Google या खोज के लिए बहुत कठिन है।
उदाहरण के लिए -first
हमारे पास की परिभाषा में है:
(--first (funcall pred it) list))
स्वाभाविक रूप से "इट" का अर्थ मैन्युअल में Google या खोज के लिए बहुत कठिन है।
जवाबों:
वास्तव में यह मैनुअल में वहीं है: https://github.com/magnars/dash.el#anaphoric-functions ।
यदि आप लिस्पी का उपयोग कर रहे हैं , तो इसके साथ:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
और पहले बिंदु (--map
, आप xfकॉल lispy-flatten
और प्राप्त करने के लिए दबा सकते हैं :
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
यह इस कोड के साथ थोड़ा अधिक जटिल है, क्योंकि डैश प्रतिनिधि और स्थगित करने के लिए बहुत उत्सुक है:
(--reduce (max it acc) '(1 2 3 4))
के बाद xfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (--reduce-from (max it acc)
(car list-value)
(cdr list-value))
(let (acc it)
(max it acc))))
के बाद fjfxfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (let ((acc (car list-value)))
(--each (cdr list-value)
(setq acc (max it acc)))
acc)
(let (acc it)
(max it acc))))
के बाद fjxfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (let ((acc (car list-value)))
(let ((list (cdr list-value))
(it-index 0))
(while list (let ((it (car list)))
(setq acc (max it acc)))
(setq it-index (1+ it-index))
(!cdr list)))
acc)
(let (acc it)
(max it acc))))
कहने के लिए पर्याप्त, यह it
अंतर्निहित पुनरावृत्ति संस्करण acc
है और अंतर्निहित संचयकर्ता संस्करण है।
एक बिंदु पर, मैंने Emacs में एक छोटा लैम्ब्डा पैच जोड़ने की कोशिश की, जो इस अंकन को सक्षम करेगा, जो मुझे लगता है कि एनाफ़ोरिक मैक्रोज़ की तुलना में सरल है:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
हालांकि, यह कहीं नहीं चला गया।