私はSchemeでマージソートを書いていますが、なぜこれがうまくいかないのか不思議です...
これは私が動作すると期待する実装ですが、動作しません:
(define (mergesort op l)
(cond ((null? l) l)
((null? (cdr l)) l)
(else (merge op (car l)
(mergesort op (cdr l))))
)
)
そして、これが「適切な」実装です。
(define (mergesort op l)
(cond ((null? l) l)
((null? (cdr l)) l)
(else (merge op (cons (car l) (list))
(mergesort op (cdr l))))
)
)
再帰とマージしようとする前に、なぜ (cons (car l) (list)) しなければならないのですか?