私は実際に楽しみのために本を読んでいますが、それは宿題と見なされるかもしれません。いずれにせよ、私はこの言語ではローカル状態変数にまったく慣れていません...たとえば次のコードを見てください。
(define flip
(let ((count 0))
(lambda ()
(if (= 0 count)
(begin (set! count 1) count)
(begin (set! count 0) count)))))
このコードが1と0の間で交互になるのはなぜですか?この関数が呼び出されるたびに、countには0の値が与えられます。Pythonに相当するものは次のとおりです。
class Flip:
def __init__(self):
pass
def __call__(self):
count = 0
if count == 0:
count = 1
return count
else:
count = 0
return count
これは毎回同じものを返します。よくわかりません...