(wat-aro)

生きてます

2016-01-15から1日間の記事一覧

SICP 問題 4.59

(meeting accounting (Monday 9am)) (meeting administration (Monday 10am)) (meeting computer (Wednesday 3pm)) (meeting administration (Friday 1pm)) (meeting whole-company (Wednesday 4pm)) ;; a 金曜の朝に今日ある会議をすべて質問する (meeting …

SICP 問題 4.58

ある人が,自分の勤める部署に勤める監督者がいない場合,その人をbig shotであるとする規則を定義する (rule (big-shot ?person) (and (job ?person (?division . rest)) (supervisor ?person ?boss) (job ?boss (?boss-division . rest2)) (not (same ?div…

SICP 問題 4.57

;; jiroの仕事をtaroができるかどうか (rule (replacible ?person1 ?person2) (and (or (and (job ?person2 ?job2) (job ?person1 ?job2)) ;person2とperosn1の仕事が同じ (and (job ?person1 ?job1) (can-do-job ?job1 ?job2))) ;person1はperson2の仕事job…

SICP 問題 4.56

;; 合成質問を形成する ;; a Ben Bitdiddleが監督している人すべての名前とその住所 (and (supervisor ?x (Bitdiddle Ben)) (address ?x ?y)) ;; b Ben Bitdiddleより給料が少ない人と,Ben Bitdiddleの給料 (and (salary (Bitdiddle Ben) ?Ben-amount) (sal…

SICP 問題 4.55

データベースへの単純質問を示せ ;; a Ben Bitiddleに監督されているすべての人々 (supervisor ?x (Bitdiddle Ben)) ;; b 経理部門のすべての人々の名前と担当 (job ?x (accounting . ?type)) ;; c Slumervilleに住む人すべての名前と住所 (address ?x (Slum…

SICP 問題 4.54

requireを特殊形式で実装する. (define (require? exp) (tagged-list? exp 'require)) (define (require-predicate exp) (cadr exp)) (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ((quoted? exp) (analyze-quoted…

SICP 問題 4.53

permanent-set!でpairsに成功する組み合わせを束縛するが, (amb)で必ず失敗するので全ての成功する組み合わせをpairsに束縛する. 失敗継続が呼ばれ,if-failの第二引数のpairsが評価される. この時permanent-set!で束縛されているのでバックトラックで戻…

SICP 問題 4.52

利用者が失敗を捉えることができるif-failを実装する. (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ((quoted? exp) (analyze-quoted exp)) ((variable? exp) (analyze-variable exp)) ((assignment? exp) (analyz…

SICP 問題 4.51

バックトラックで戻らないpermanent-set!の実装 ;; permanent-set! (define (analyze-permanent-assignment exp) (let ((var (assignment-variable exp)) (vproc (analyze (assignment-value exp)))) (lambda (env succeed fail) (vproc env (lambda (val fa…

SICP 問題 4.50

ランダムな順に探すrambを実装する. (use srfi-27) (define (random-car lst) (list-ref lst (random-integer (length lst)))) (define (rember item lst) (cond ((null? lst) '()) ((eq? (car lst) item) (cdr lst)) (else (cons (car lst) (rember item (…