그래서 윌 네스의 예를 주셔서 감사합니다. 나는 심지어 더 단순한 것들을 조사했다. 그래서 "그게 뭐 그리 나쁘니?" - (leave '())
없이 get-first
에.
짧은 답변 : 우리가 get-first
또는 get-next
를 호출 할 때 내 코드
I)에서 leave
항상마다 다시됩니다
참고. get-first
또는 get-next
중 하나로 돌아갑니다.
ii) fill
은 이전 fill
에 따라 체인이되며 항상 get-first
으로 돌아갑니다.
예
입력 :
'(1)
그래서 우리가 '(1)
에 get-first
을 평가하여 시작합니다.
제가 ) leave
는 ⅱ) 1
는 원자 때문에 (waddle '(1)
는 ⅲ) 때문에 전류 연속으로 fill
설정 시작 설정. 우리가 fill
을 사용한다면, (waddle (cdr l))
을 수행하고 을 입력하면 get-first
으로 돌아갑니다. iv) leave
및 반환 값 1
을 사용하여 get-first
으로 돌아갑니다.
그런 다음 우리는 (T? 1)
으로 가서 get-next
을 실행합니다.
난) leave
는 ⅱ) fill
는 ⅲ) (waddle '())
는 IV) 다음 get-first
로 돌아가 waddle
에서 ()
를 반환 시작 실행 설정. 우리가 (leave '()
이없는 경우
주
1), 다음 get-first
이 '()
를 반환합니다, 다음 two-in-a-row*
반환 #f
. 그래서 우리는 똑같은 대답을 얻을 수 있지만 그 행동은 우리가 원하는 것이 아닙니다.
2) leave
이 get-next
으로 생성 된 leave
이므로 '()
을 get-next
으로 전송할 예정입니다.
3) fill
을 생성 할 때 목록에 입력이 두 개 이상일 경우 이전 fill
을 기반으로 만들어 지므로 결과는 fill
에 따라 달라집니다.
안녕하세요, SO에 대한 질문은 실제로 자급 자족해야합니다. 적어도이 기능이 무엇을해야하는지 설명해야합니다. 샘플 입력에 대한 예상 출력을 표시 할 수 있습니다. –