kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

定理証明手習い (79) exprs-recsとそういえば

exprs-recs 式のリストから再帰的な関数適用を抽出する
expr-recs 式から再帰的な関数適用を抽出する

変数なら数えない
クォートなら数えない
ifならQ、A、E部の関数適用を抽出
関数適用で名前が一致したらそれ自身+引数に含まれる関数適用を抽出
名前が一致しなければ引数に含まれる関数適用を抽出

行数が多くてインデントが深いから一瞬ビビるけど読めば単純

ところでmapみたいなの使わないの?って思ったことがあったけど
J-Bobの仕様では高階関数は使えない、ってことだろうか
lambdaはないし、Common Lisp系だとするとfuncallもない

今はSchemeベースでやってるからこういうのも定義できるけど

(defun map (f xs)
  (if (atom xs)
      '()
      (cons (f (car xs)) (map f (cdr xs)))))

(定義はできてもlambdaがないと不便、というのは置いといて)
Common Lispだったらこう書かないといけないんだっけ?

      (cons (funcall f (car xs)) (map f (cdr xs)))))

しらんけど
考えてみるとこれまでも出てきてないかそう言えばそんな気がする