Emacs Lisp에서 foldr, foldl과 동일한 것은 무엇입니까?Emacs Lisp에서 foldr, foldl과 동일한 것은 무엇입니까?
답변
당신이
(require 'cl)
다음은 CL의 기능 reduce
을 사용 할 수 있습니다. foldr
에 키워드 인수 :from-end t
을 전달하십시오.
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)))
이맥스 - 24.3은 우리가 될 수 있도록, (먼 미래에 제거 될 예정입니다) cl
이상 cl-lib
의 사용을 권장합니다 이후 :
(require 'cl-lib)
(cl-reduce #'list '(1 2 3 4))
와 이맥스 25 이후를, 당신 또한의 seq
패키지를 사용할 수 있습니다
(require 'seq)
(seq-reduce #'list '(1 2 3 4))
Common Lisp library 매핑 같은 sequence functions을 많이 제공하고, FIL 조롱, 접기, 검색, 심지어 정렬. CL 라이브러리는 기본적으로 이맥스와 함께 제공되기 때문에이를 고수해야한다. 그러나 목록과 트리 조작을위한 엄청난 양의 함수를 제공하기 때문에 실제로는 dash.el
라이브러리를 좋아합니다. 또한 anaphoric macros을 지원하며 코드 작성을 간결하고 우아하게 만드는 기능 프로그래밍을 권장합니다.
하스켈의 주름은 dash.el
주름 해당합니다
foldl
-reduce-from
foldr
-reduce-r
-reduce
foldr1
와foldl1
-reduce-r-from
와 함께 0 1 ~ 10 사용하여 주름이 하스켈이에 같이 수있는 범위의 합계와 dash.el
:
foldl (+) 0 [1..10] -- Haskell
(-reduce-from '+ 0 (number-sequence 1 10)) ; Elisp
당신은 아마 주름은 매우 일반적인 것을 알고, 주름을 통해지도와 필터를 구현할 수 . 예를 들어, 2에 의해 모든 요소를 증가, 하스켈의 태닝 및 섹션은 간결한 코드를 허용,하지만 Elisp에서 보통 같은 자세한 버리는 람다를 작성합니다
foldr ((:) . (+2)) [] [1..10] -- Haskell
(-reduce-r-from (lambda (x acc) (cons (+ x 2) acc)) '() (number-sequence 1 10)) ; Elisp
는 dash.el
에 필요하지 않습니다 무엇을 추측 애매한 매크로를 사용하여 람다의 변수를 it
및 acc
과 같은 단축키로 표시함으로써 특수 구문을 허용합니다. dash.el
에
(--reduce-r-from (cons (+ it 2) acc) '() (number-sequence 1 10))
이 있습니다 많은 배와 같은 기능 : Anaphoric 기능이 대시 대신 1로 시작
;; 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 lisp에서 strstr()?
- 2. Lisp에서 emacs 설정을 변경하는 방법
- 3. Emacs Lisp에서 문자열을 디코드하는 방법은 무엇입니까?
- 4. Emacs Lisp에서 현재 디렉토리 얻기
- 5. Emacs Lisp에서 퀴즈를 생성 하시겠습니까?
- 6. emacs lisp에서 기호와 변수 이름의 차이점
- 7. Emacs Lisp에서 문자열이 비어 있는지 확인하는 방법?
- 8. Emacs Lisp에서 임시 함수를 만드는 법
- 9. Emacs Lisp에서 가변 폭 텍스트 줄 바꾸기
- 10. Emacs Lisp에서 선택된 텍스트를 얻는 방법?
- 11. emacs lisp에서 어떤 쉘 명령을 사용합니까?
- 12. Emacs Lisp에서 현재 영역의 내용에 어떻게 접근합니까?
- 13. Emacs Lisp에서 apply를 올바르게 사용 했습니까?
- 14. Emacs Lisp에서 함수를 매개 변수로 전달하는 방법은 무엇입니까?
- 15. Lisp에서 벡터와리스트의 관계는 무엇입니까?
- 16. Emacs Lisp에서 모든 구두점을 일치 시키지만 " '"를 제외한 우아한 정규식?
- 17. emacs lisp에서 SQL 쿼리를 어떻게 수행 할 수 있습니까?
- 18. 어떻게하면 emacs lisp에서 자동 완성 입력 필드를 가질 수 있습니까?
- 19. Haskell에서 foldr HOF를 작성하는 방법
- 20. Lisp에서 1과 1의 차이점은 무엇입니까?
- 21. 동일한 프로세스에서 멀티 스레드가 공유하는 것은 무엇입니까?
- 22. MySQL에서 'go'와 동일한 것은 무엇입니까? TSQL에서
- 23. C에서 주소를 전달하는 것과 동일한 것은 무엇입니까?
- 24. C#에서 Java의 enum과 동일한 것은 무엇입니까?
- 25. Spring MVC에서 Struts ActionMessages와 동일한 것은 무엇입니까?
- 26. PHP에서 JavaScript의 encodeURIcomponent와 동일한 것은 무엇입니까?
- 27. Linux에서 DNS 용 Tomcat과 동일한 것은 무엇입니까?
- 28. Objective C가 Java에서 'long'과 동일한 것은 무엇입니까
- 29. Emacs 플러그인을 다른 디렉토리에 두는 것은 정상입니까?
- 30. Lisp에서 테스트하기
이 더 나은에서 별도의 대답보다는 가레스리스 '대답에 설명해야 그 자신의 권리. – Thomas
@ 토마스 SO에 예제와 함께 여러 행 주석을 쓸 수 없습니다. – ceving