Clojure는 하스켈의 g . f
과 같은 구조를 구현할 수 있습니까 (g ∘ f)? 현재 (fn [n] (not (zero? n)))
과 같은 해결 방법을 사용 중입니다. 어느정도 좋지는 않습니다.Clojure의 함수 구성?
답변
clojure.core
에 comp
이라는 기능이 있습니다. 예 :
((comp not zero?) 5)
; => true
는 또한, ->
/->>
예를 들어, 사용을 고려 할 수 있습니다
(-> 5 zero? not)
; => true
또 다른 방법은 (reduce #(%2 %1) n [zero? not])
하지만 난 이미 마이클에 의해 언급 (comp not zero?)
, 더 좋아한다.
익명 함수에 대한 Clojure의 reader-macro 단축키를 사용하면 더 적은 키 입력으로 버전을 다시 작성할 수 있습니다.
not
및 다른 기능을 구성의 구체적인 사례를 들어
user=> (#(not (zero? %)) 1)
true
, 당신은 complement
를 사용할 수 있습니다.
user=> ((complement zero?) 1)
true
when
와 함께 not
을 사용하고 if
는 if-not
및 when-not
핵심 기능이다 충분히 일반적이다.
user=> (if-not (zero? 1) :nonzero :zero)
:nonzero
reader-macro 단축키는 코드가 간결하고 읽기 쉽기 때문에 매우 유용하게 보입니다. 나는 또한 "if-not"와 "when-not"에 대해 몰랐다. 고마워! – StackedCrooked
* 코어 매크로. 'if-not'와'when-not'가 매크로이기 때문에 런타임 비용이 들지 않습니다. – Carcigenicate
- 1. Clojure의 추상 함수 또는 함수 인터페이스?
- 2. Clojure의
- 3. Clojure의
- 4. Clojure의
- 5. 는 Clojure의
- 6. 호출 Clojure의 고차 기능
- 7. 인쇄 및 Clojure의
- 8. Clojure의 다형성
- 9. Clojure의 액터
- 10. Clojure의 루프
- 11. Emacs + Slime/leiningen-Swank + Clojure의 함수 정의로 이동
- 12. Clojure의 함수에 대한 힌트 유형
- 13. Clojure의 케이크 빌드 도구가 나는이 Clojure의 TextMate를 번들을 설치 제대로
- 14. Clojure의 : 줄일 대
- 15. 스칼라/그루비/Clojure의 GUI
- 16. Clojure의 스핑크스 도메인
- 17. Akka가 Clojure의 동시성 모델로
- 18. Clojure의 구문 분석 문자열
- 19. Clojure의 Aspect-Oriented Programming
- 20. clojure의 체인 콜?
- 21. Clojure의 동적 범위 지정?
- 22. Clojure의 원격 인스턴스에 연결
- 23. Clojure의 매크로 확장
- 24. Clojure의 컴파일러 오류
- 25. 문제 이해 : Clojure의 상태
- 26. Clojure의 시퀀스와 일치하지 않습니까?
- 27. Clojure의 Threadlocal 카운터
- 28. 네임 스페이스는 Clojure의
- 29. Clojure의 롤링 평균 시퀀스
- 30. PHP 코드 구성. 클래스와 함수
하스켈에서 "currying"을 할 때는 'partial'을 사용해야합니다. 그래서 map/reduce의 경우,''(감속기 my-things))'(감속기 (comp)) (부분 축소 값 +) (부분 감속 +))' –
또한 대체 할 수 있습니다. '(complement zero?) 5)' – defhlt