Emacs Lisp'de foldr eşdeğeri nedir?Emacs Lisp'de foldr eşdeğeri nedir?
cevap
Eğer
(require 'cl)
sonra Common Lisp fonksiyonu reduce
kullanabilirsiniz. foldr
için :from-end t
anahtar kelimesi argümanını iletin.
ELISP> (reduce #'list '(1 2 3 4))
(((1 2) 3) 4)
ELISP> (reduce #'list '(1 2 3 4) :from-end t)
(1 (2 (3 4)))
Emacs 24.3 biz olurdu böylece, (bazı uzak bir gelecekte kaldırılması için planlanan) cl
üzerinde cl-lib
kullanımını tavsiye beri:
(require 'cl-lib)
(cl-reduce #'list '(1 2 3 4))
ve Emacs-25 yılından beri, sen Ayrıca bunun için seq
paketini kullanabilirsiniz:
(require 'seq)
(seq-reduce #'list '(1 2 3 4))
Common Lisp library haritalama gibi sequence functions bol sağlar, fil Terleme, katlama, arama ve hatta sıralama. CL kütüphanesi varsayılan olarak Emacs ile gönderilir, bu yüzden ona bağlı kalmalısınız. Ancak liste ve ağaç manipülasyonları için muazzam miktarda fonksiyon sağladığı için, dash.el
kütüphanesini gerçekten seviyorum. Aynı zamanda anaphoric macros'u destekler ve kodlamayı kısa ve zarif hale getiren fonksiyonel programlamayı teşvik eder.
Haskell'ın kıvrımlar dash.el
kat tekabül:
foldl
-reduce-from
foldr
-reduce-r
-reduce
foldr1
ilefoldl1
-reduce-r-from
ile birlikte 0 1 ila 10 kullanılarak kıvrımları Haskell bu gibi görünebilir bir dizi toplamı ve dash.el
:
foldl (+) 0 [1..10] -- Haskell
(-reduce-from '+ 0 (number-sequence 1 10)) ; Elisp
Muhtemelen kıvrımlar çok genel olduğunu, biliyorum, ve kıvrımlar aracılığıyla haritalar ve filtreler uygulamak mümkündür . Örneğin, 2 oranında her eleman artırmak için, Haskell'ın tımar ve bölümler veciz kodu sağlayacak, ancak elisp içinde genellikle böyle ayrıntılı ıskarta lambdas yazardı:
foldr ((:) . (+2)) [] [1..10] -- Haskell
(-reduce-r-from (lambda (x acc) (cons (+ x 2) acc)) '() (number-sequence 1 10)) ; Elisp
o dash.el
gerekli değildir Tahmin etmek ne, bir lambda değişkenini, it
ve acc
gibi kıvrımlarda açığa çıkararak özel sözdizimine izin veren anaporik makrolarla. dash.el
yılında
(--reduce-r-from (cons (+ it 2) acc) '() (number-sequence 1 10))
vardır bol kat benzeri fonksiyonlar: Gönderimsel fonksiyonlar 2 tire yerine 1 ile başlar
;; Count elements matching a predicate
(-count 'evenp '(1 2 3 4 5)) ; 2
;; Add/multiply elements of a list together
(-sum '(1 2 3 4 5)) ; 15
(-product '(1 2 3 4 5)) ; 120
;; Find the smallest and largest element
(-min '(3 1 -1 2 4)) ; -1
(-max '(-10 0 10 5)) ; 10
;; Find smallest/largest with a custom rule (anaphoric versions)
(--min-by (> (length it) (length other)) '((1 2 3) (4 5) (6))) ; (6)
(--max-by (> (length it) (length other)) '((1 2 3) (4 5) (6))) ; (1 2 3)
- 1. Emacs * eshell * 'de "exec" eşdeğeri *?
- 2. harita. foldr fonksiyon kompozisyonu - Haskell
- 3. Excel VBA'da "! =" Eşdeğeri nedir?
- 4. TSQL'de String.Join eşdeğeri nedir?
- 5. CoreFoundation'taki NSHomeDirectory() eşdeğeri nedir?
- 6. ControlPaint.Light'a WPF eşdeğeri nedir?
- 7. MsgWaitForMultipleObjects C# eşdeğeri nedir?
- 8. JMX'in .NET eşdeğeri nedir?
- 9. CompletableFuture'ın eşdeğeri flatMap nedir?
- 10. Java'da StringBuffer'ın .NET eşdeğeri nedir?
- 11. Arabirim için "hasOwnProperty()" eşdeğeri nedir?
- 12. Hızla "#pragma işareti -" eşdeğeri nedir?
- 13. Scala'nın flatMap'in Guava eşdeğeri nedir?
- 14. Python'un "perl -V" eşdeğeri nedir?
- 15. Python'un os.walk'unun Ruby eşdeğeri nedir?
- 16. .NET'teki PHP'nin InfiniteIterator eşdeğeri nedir?
- 17. Spark List'te itemChangeEffect eşdeğeri nedir?
- 18. PHP'de JavaScript'in encodeURIcomponent eşdeğeri nedir?
- 19. WinBB girişleri WinRT eşdeğeri nedir?
- 20. Python numpy'de "zip()" eşdeğeri nedir?
- 21. Perlbrew'ın bir Python eşdeğeri nedir?
- 22. Preg_quote() 'nin Ruby eşdeğeri nedir?
- 23. Silverlight'ın FindElementsInHostCoordinates WPF'de eşdeğeri nedir?
- 24. Coalesce operatörünün XPath eşdeğeri nedir?
- 25. C# Mathf.pingpong'un Arduino eşdeğeri nedir?
- 26. Java 8: "UseSplitVerifier" eşdeğeri nedir?
- 27. Bu her zaman doğrudur: fmap (foldr f z). sequenceA = foldr (liftA2 f) (salt z)
- 28. ASP.net Web API'sinde MVC'nin DefaultModelBinder eşdeğeri nedir?
- 29. Java'nın javascript'in String.fromCharCode öğesine eşdeğeri nedir?
- 30. Yerde düzeni koruyan .hide() eşdeğeri nedir?
Bu daha iyi ayrı bir cevap daha Gareth Rees'lerin cevaba Yorum olmalı onun kendi hakkı. – Thomas
@Thomas SO üzerine örneklerle çok satırlı yorum yazmak mümkün değildir. – ceving