スキームで関数を引数として渡す方法を理解しようとしていますが、チュートリアルを理解するのに苦労しています。これが私がやろうとしていることです:
(define (addone n)
(+ n 1))
(define (for-n start stop fn)
(if (< start stop)
(list)
(cons (fn start) (for-n (+ start 1) stop fn))))
基本的に、start、start+1、... start+stop の fn の値をリストで返す関数が必要です。
したがって、(for-n 1 5 (addone 0)) の期待される出力は (1 2 3 4 5) になります。ここでは非常に基本的な概念がいくつか欠けていると思います。なぜなら、インタープリターで関数を正しく呼び出しているようにも見えず、fn を通常のパラメーターではなく関数として解釈するようにスキームに指示する方法を把握していないからです。 .
私はそれを理解しました(ただし、試行錯誤を繰り返しましたが)、何をしたかわかりませんが、少なくとも機能します!
(define (function x)
x)
(define (for-n start stop fn)
(if (> start stop)
(list)
(cons (fn start) (for-n (+ start 1) stop fn)))))