式を取得して挿入し、それをプレフィックスに変更する関数を書きたいと思います。まず、+ 演算子のみを扱うと仮定して、式 1+1+1 を (+ (+ 1 1) 1) に変更します。
私は foldl または foldl のような問題を使用してそれを行いたい: リストの 2 番目の項目 (常にオペランド) を取得し、最初と 3 番目の項目を (この順序で) 追加してから、先ほどの式を使用したいと思いますリストの最初の項目になるように追加されるので、リストの残りの部分で同じことを再帰的に行います。
私は次のことを試しました:
(lambda (lst)
(fold-left (lambda (pmLst)
`(,((cadr pmLst) ,(car pmLst) (caddr pmLst)) ,(cddr pmLst)))
'()
lst))
しかし、左折に与えられたラムダには2つの引数が必要であることに気付きましたが、リストの最初の3つの項目を処理したいと思います。
少しトリッキーになったので、私が自分自身を明確にしたことを願っています..