取りあえず書いてみました。
組み合わせて作っていく感じ。car + car で caar を作る、みたいな。
以下コード。
自分なりに考えてみたもの。もといし、効率も悪いけど意図通り動きます。
こちらは (define-cxr caar) とされたら a と d を car と cdr として手続きを組み立てる感じ。でも入力を制限していないので、my-caaar が caaar 相当の手続きに、ashitahadounaru? が caaadar 相当の手続きになります。。
追記
下のコード貼り間違えてました。修正。追記2
map-accum でなくてもよかったですね。fold-right でよさそうです。(define (cxr->ad-fun-lis sym) (fold-right (lambda (e acc) (let1 p (coalesce ((eq? e 'a) car) ((eq? e 'd) cdr)) (if p (cons p acc) acc))) '() (symbol->list sym)))
0 件のコメント:
コメントを投稿