2012-10-06 2 views
0

이 코드의 기능을 이해하는 데 도움이 필요합니다. fcombine 변수가 무엇인지 모르겠습니다. 누군가 코드가하는 일을 연습 해 줄 수 있습니까?LISP에서 코드 조각을 이해하는 데 문제가 발생했습니다.

(define (reduce fcombine L) 
    (cond 
    ((null? (cdr L)) (car L)) 
    (#t (fcombine (car L) (reduce fcombine (cdr L)))))) 
+0

여기 CLHS의'reduce' 함수 스펙을보실 수 있습니다 : http://www.lispworks.com/documentation/HyperSpec/Body/f_reduce.htm 표시된 기능은 전체 사양의 부분적 구현입니다 . – msandiford

+0

고마워요, 그 대답을 할 수 있도록 받아 들일 수 있어요? – cougar

+0

참고 사항 :이 항목은 * fold-right * 함수의 정의와 매우 유사합니다. 단, 여기에있는 초기 누적 기가 목록의 마지막 요소라는 점만 다릅니다. 기본적으로 * L *을 가로 지르는 루프입니다. * fcombine *을 사용하여 개별 요소를 방문 할 때 어떤 결과가 누적됩니다. 이 * reduce * 함수는 빈 목록에서 작동하지 않으므로 * fold-right *보다 약간 덜 일반적입니다. – dyoo

답변

4

CLHS reduce function 사양을 살펴볼 수 있습니다.

당신이 보여준 기능

그냥 기능순서 인수, 전체 사양의 부분 구현입니다.

+0

이것은 Common Lisp 프로그램이 아니며 Scheme 프로그램이며 Scheme의'reduce'의 꽤 일반적인 버전입니다. –

+0

나는 이것을 scheme 코드로 인식했다 :) @ foldoo의 질문에 대한 의견도 참조하라. 여기에는'fold- *'에 관한 유용한 정보가있다. – msandiford

관련 문제