0
A
답변
3
무한 시퀀스를 REPL에 인쇄하여 평가하려고하기 때문에.
예 : (filter #(> % 100) (iterate #(+ % 17) 0))
은 REPL이 결과 시퀀스의 첫 번째 x
요소 다음에 ...
을 인쇄하기 때문에 REPL에 인쇄 할 수 있습니다. x
은 (set! *print-length* x)
으로 설정할 수있는 값입니다.
그러나 가능한 한 6 가지 요소 만 있으므로 (filter #(< % 100) (iterate #(+ % 17) 0))
을 (를) 평가하려고하면 영원히 실행됩니다. 당신이 iterate
로 만드는 순서가 이미 정렬되어 있기 때문에
;; Oops! Don't this!!!
user=> (iterate inc 0)
;; Frantically doing C-c C-c :-P
; Evaluation aborted.
user=> (set! *print-length* 10)
10
;; Now it's perfectly fine. Yay!
user=> (iterate inc 0)
(0 1 2 3 4 5 6 7 8 9 ...)
당신은 대신 filter
의 take-while
을 사용할 수 있습니다 :
는
*print-length*
문서에서보세요. 그것은 "무한"이기 때문에, 그러나 100 이하이다 시퀀스에서만 3 개의 숫자가 있습니다
user=> (take-while #(< % 100) (iterate #(+ % 17) 0))
(0 17 34 51 68 85)
0
위의 표현식에서 볼 수 있듯이 인쇄 된 시퀀스는 완전한 결과가 아닙니다 (시퀀스 끝에서 ... 확인). 이는 시퀀스의 응답을 반환 할 때 nrepl을 나타냅니다. take
시퀀스에 더 많은 것이 있음을 나타 내기 위해 ...를 사용하여 인쇄하십시오. 마지막 케이스에서 "100 미만의 숫자"는 인쇄에 nrepl에 필요한 최소 항목 수를 생성하지 않으므로 nrepl은 시퀀스의 항목을 더 기다리게됩니다 (반복 횟수는 무한대입니다)
0
, filter
는 네 번째 요소가 존재하지 않는 것을 결정하는 요소의 "무한"수를 봐야한다 .
귀하의 예를 iterate
구조가 증가 시퀀스를 생성하기 때문에 당신은 예를 들어 100보다 작은 요소로 결과를 제한하려는 경우, 당신은 take-while
을 사용할 수
(take-while #(< % 100) (iterate #(+ % 17) 0))
유한 결과가되지 않습니다 왜 요구했다
관련 문제
- 1. 원격 nrepl에서 값을 전송
- 2. 타이머가 멈추는 이유는 무엇입니까?
- 3. GUI가 멈추는 이유는 무엇입니까?
- 4. gtk 창이 멈추는 이유는 무엇입니까?
- 5. Node.js가 작동을 멈추는 이유는 무엇입니까?
- 6. TabStop이 작동을 멈추는 이유는 무엇입니까?
- 7. Windows에서 bash가 멈추는 이유는 무엇입니까?
- 8. 이 템플릿 필터가 유효하지 않은 이유는 무엇입니까?
- 9. angularjs : 필터가 작동하지 않는 이유는 무엇입니까?
- 10. 로우 패스 필터가 신호를 확대하는 이유는 무엇입니까?
- 11. 각도 필터가 잘못된 날짜를 표시하는 이유는 무엇입니까?
- 12. 앵귤러 2에 필터가 적용되지 않는 이유는 무엇입니까?
- 13. 로깅 필터가 잘못된 처리기에 적용되는 이유는 무엇입니까?
- 14. iCloud가 때때로 작동을 멈추는 이유는 무엇입니까?
- 15. 재생시 SoundPlayer가 일시적으로 멈추는 이유는 무엇입니까?
- 16. 내 코드가 Form2Thread.Join()에 멈추는 이유는 무엇입니까?
- 17. Windows에서이 소켓 테스트에서 스레드가 멈추는 이유는 무엇입니까?
- 18. java 프로세스가 mysqldump 실행을 멈추는 이유는 무엇입니까?
- 19. neo4j 시간 트리가 멈추는 이유는 무엇입니까?
- 20. capistrano가 "배포 : 정리"에서 멈추는 이유는 무엇입니까?
- 21. 내 드로잉 스레드가 갑자기 멈추는 이유는 무엇입니까?
- 22. 예외가 발생하지 않고 프로그램이 멈추는 이유는 무엇입니까?
- 23. 내 Windows 서비스가 멈추는 이유는 무엇입니까?
- 24. eula를 보여준 후에 psexec이 멈추는 이유는 무엇입니까?
- 25. 내 웹 사이트가 계속 멈추는 이유는 무엇입니까?
- 26. IE에서 내 슬라이드 쇼가 멈추는 이유는 무엇입니까?
- 27. 파이썬 스크립트에서 http 요청이 멈추는 이유는 무엇입니까?
- 28. 이 정규식으로 Chrome이 멈추는 이유는 무엇입니까?
- 29. with 문 다음에 컨텍스트가 멈추는 이유는 무엇입니까?
- 30. fread()가 0의 문자열에서 멈추는 이유는 무엇입니까?
인쇄. 그 길이가 * print-length *보다 작기 때문에? 이상한가요? – yehe
여기에 유한 시퀀스가 없으며 반복이 무한하며 무한 시퀀스에서 필터를 실행하면 무한 시퀀스가됩니다. – Ankur
* 길이가 인쇄 길이보다 작습니까? * REPL은 첫 번째'x' 요소를 얻으려고합니다. REPL에 대해 요소를 가져 오는 데 걸리는 시간 또는 가능한 경우 REPL을 알 수있는 방법이 없습니다. 또한, 당신의 시퀀스가 유한하지 않습니다. – sloth