Common Lisp에서는 (null x) 함수를 사용하여 빈리스트와 nil 값을 확인한다.클로저의 공통 리스프에서 (null x) 함수를 대체하는 관용적 인 방법
대부분의 논리적이 Clojure의에서
(or (nil? x) (= '() x))
에 매핑됩니다. 누군가 Clojure에서보다 관용적 인 방법을 제안 할 수 있습니까?
Common Lisp에서는 (null x) 함수를 사용하여 빈리스트와 nil 값을 확인한다.클로저의 공통 리스프에서 (null x) 함수를 대체하는 관용적 인 방법
대부분의 논리적이 Clojure의에서
(or (nil? x) (= '() x))
에 매핑됩니다. 누군가 Clojure에서보다 관용적 인 방법을 제안 할 수 있습니까?
Common Lisp에서와 마찬가지로 Clojure에서 빈 목록에 대해 과 동일한 결과를 얻으려면 empty?
함수를 사용하십시오. 이 기능은 핵심 라이브러리에 있습니다. 가져 오기가 필요 없습니다.
은 또한 술어이며, 정확하게 코드에서 무슨 일을하는지 조금 더 명확하게하는 ?
접미사. J-g의 faustus 이미 언급 한 바와 같이
=> (empty? '())
true
=> (empty? '(1 2))
false
=> (empty? nil)
true
, seq
도 유사한 효과를 사용할 수있다.
이미 관용적, 엔드 테스트의 역할을서열도 의미가 있습니다 clojure.org lazy
에서
(when (seq coll) ...)
(seq nil)
및
(seq())
모두 반환 전무하기 때문이다.
nil
은 false
을 의미하므로 명시 적 nil 테스트가 필요하지 않습니다.
Lisp에서'NIL'과'()'(빈리스트)는 하나이며 같은 것입니다. 귀하의 코드 스 니펫은 일종의 pleonasm입니다. – Svante
Clojure에는 없습니다 :'(= '() nil) => false'. 다른 Lisps에서는 이것이 사실입니다. – Isaac
Svante : 귀하의 진술은 Clojure에서 진실이 아니지만 새로운 좋아하는 단어가 있습니다. – Ken