let、letrec、let* の違いに苦労しています...スキームは私の主要なプログラミング言語ではないため、私の記憶は長い間存在していません..私はこの機能を持っています..今、私はここで letrec と非常に混乱しています..これも再帰です。理解できます...しかし、このコードでは十分に接続できません..(再帰についてまだ混乱しているかもしれません)誰かがここでletrecが必要な理由を説明できますか
(define myFunc
(lambda (start end res func)
(letrec ((func:rec_func
(lambda (x i y)
(if (>= i start)
(func:rec_func (cons i x) (- i res) (cons (func i) y)) ;; line6
(cons x (cons y '())))))) ;; line7
(func:rec_func '() end '()))))
(編集済み)私が理解しているのは末尾再帰です
⇒【Q1】末尾再帰ですか?
⇒【Q2】では、末尾再帰は常にletrecを使うべきでしょうか?
この関数は、開始、終了の境界を持つ x、y のリストを返すため、インデックス i が境界内にあるかどうかをチェックし、そうであれば 6 行目を実行します。
→【Q3】では、line6は何をしているのですか?line6が届かない