問題3.27 – SICP(計算機プログラムの構造と解釈)その125
問題3.27 (define (memoize f) (let ((table (make-table))) (lambda (x) (let ((previously-computed-result (lookup x table))) (or previously-computed-result (let ((result (f x))) (insert! x result table) (d…続きを読む
問題3.27 (define (memoize f) (let ((table (make-table))) (lambda (x) (let ((previously-computed-result (lookup x table))) (or previously-computed-result (let ((result (f x))) (insert! x result table) (d…続きを読む
WordPress テーマの日本語化 WordPress テーマの日本語化は、テーマファイルのディレクトリ(wp-content/themes/hoge)に ja.mo ファイルを配置し、 functions.php ファイルに以下の記述を追加する。 ここでは テーマ名を hoge としている。 load_theme_textdomain(‘hoge’); 日本語化ファイルの作成については、Wor…続きを読む
問題3.26 (key value left right) の形でデータを保持する。 (define (make-table) (let ((local-table ‘*table*)) (define (key-tree tree) (car tree)) (define (value-tree tree) (cadr tree)) (define (left-branch tree) (cad…続きを読む
問題3.25 多次元の表を表現する。 (define (make-table) (let ((local-table (list ‘*table*))) (define (lookup key-list) (lookup-iter key-list local-table)) (define (lookup-iter key-list local-table) (if (null? key-lis…続きを読む
問題3.24 (define (make-table same-key?) (let ((local-table (list ‘*table*))) (define (lookup key-1 key-2) (let ((subtable (same-key? key-1 (cdr local-table)))) (if subtable (let ((record (same-key? key-…続きを読む
問題3.23 (define (front-ptr queue) (car queue)) (define (rear-ptr queue) (cdr queue)) (define (set-front-ptr! queue item) (set-car! queue item)) (define (set-rear-ptr! queue item) (set-cdr! queue item))…続きを読む
問題3.22 (define (make-queue) (let ((front-ptr ‘()) (rear-ptr ‘())) (define (set-front-ptr! item) (set! front-ptr item)) (define (set-rear-ptr! item) (set! rear-ptr item)) (define (empty-queue?) (null? …続きを読む
問題3.21 (define q1 (make-queue)) (insert-queue! q1 ‘a) (display q1) gosh> ((a) a)#<undef> (insert-queue! q1 ‘b) (display q1) gosh> ((a b) b)#<undef> (delete-queue! q1) (display q1) go…続きを読む
問題3.18 1度たどった対を再度たどった場合に循環しているといえる。 1度たどった対をリスト walks に追加していって保持し、次にたどる対が walks に含まれているかどうかをチェックする。 (define (circulate? items) (define walks ‘()) (define (has-circulate? x) (if (memq x walks) #t (begi…続きを読む
問題3.17 一度数えた対を記録して保持し、カウント直前にチェックを行う。 (define (make-count-pairs walks) (define (count-pairs x) (cond ((not (pair? x)) 0) ((memq x walks) 0) (else (set! walks (cons x walks)) (+ (count-pairs (car x)) (…続きを読む