Pythonの実装
import sys
def move(src, dst, tmp, num):
if num == 1: print 'Move from', src, 'to', dst
else:
move(src, tmp, dst, num-1)
move(src, dst, tmp, 1)
move(tmp, dst, src, num-1)
move('left', 'right', 'middle', int(sys.argv[1]))
ハノイの塔に適切なソリューションを提供します。しかし、私のスキームポート、
(define move
(lambda (src dst tmp num)
(if (= num 1) (printf "Move from ~s to ~s \n" src dst)
((move src tmp dst (- num 1))
(move src dst tmp 1)
(move tmp dst src (- num 1))))))
正しい解決策を提供しますが、最終的には次のエラーがスローされます。
procedure application: expected procedure, given: #<void>; arguments were: #<void> #<void>
エラーをスローしているのは私のprintステートメントですが、なぜこれが発生しているのか理解できません。