단순히 데이터를 똑똑하게 하는것 이상의 무슨 이점이 있는거 같다. DataDirectedProgramming 은 사용 할려면 table을 확인을 해야하는데 MessagePassing은 구현하는거 몰라도 인터페이스만 알면 잘 쓸 수 있다.
이것 뿐만아니라, 아이디어는 간단하긴 한데,, 파생되는 이점이 많다.(그냥 봐서는 몰랐는데, 문제를 풀어보니깐 알껫다.) 아래처럼..
(define (regular->message-passing lst)
(if (null? lst)
'()
(make-pair (car lst)
(regular->message-passing (cdr lst))))) ;;요기
(define (make-pair x y)
(define (dispatch msg)
(cond ((eq? msg 'the-car-please) x)
((eq? msg 'the-cdr-please) y)
((eq? msg 'the-cadr-please)
(y 'the-car-please)) ;;요기
((eq? msg 'the-length-please)
(+ 1 (if (null? y) 0 (y 'the-length-please)))) ;;요기
(else (error "I don't understand: " msg))))
dispatch)