;; なんか普通のオブジェクト指向っぽい感じだ。 (define (make-from-mag-arg r a) (define (dispatch op) (cond ((eq? op 'real-part) (* r (cos a))) ((eq? op 'imag-pert) (* r (sin a))) ((eq? op 'magnitude) r) ((eq? op 'angle) a) (else (error "Unk…
;; a ;; それぞれの事業所のファイルには個別の型がついている。 ;; placeという手続きによって型名を呼び出せる。 (define (get-record file name) ((get 'get-record (place file)) (records file) name)) (define (place obj) (car obj)) (define (record…
スキップします。あとで
スキップします。あとで
;;n = 5 '(1 2 4 8 16) 31--15--7--3--1 | | | |-2 | | |-4 | |-8 |-16 ;;n = 10 '(1 2 4 8 16 32 64 128 256 512) 1023--511--255--127--63--31--15--7--3--1 | | | | | | | | +-2 | | | | | | | +-4 | | | | | | +-8 | | | | | +-16 | | | | +-32 | | | +-…
(define rock-1950-tree (generate-huffman-tree '((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1)))) (define song '( GET A JOB SHA NA NA NA NA NA NA NA NA GET A JOB SHA NA NA NA NA NA NA NA NA WAH YIP YIP YIP YIP YIP YIP YIP Y…
(define (generate-huffman-tree pairs) (successive-merge (make-leaf-set pairs))) (define (successive-merge leaf-set) (if (> (length leaf-set) 1) (successive-merge (adjoin-set (make-code-tree (car leaf-set) (cadr leaf-set)) (cddr leaf-set)))…
(define (encode message tree) (if (null? message) '() (append (encode-symbol (car message) tree) (encode (cdr message) tree)))) ;; rec (define (encode-symbol message tree) (if (leaf? tree) '() (if (memq message (symbols (left-branch tree))…
define (make-leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? object) (eq? (car object) 'leaf)) (define (symbol-leaf x) (cadr x)) (define (weight-leaf x) (caddr x)) (define (make-code-tree left right) (list left right (append…
(define (lookup given-key set-of-records) (if (null? set-of-records) #f (let ((record (entry set-of-records))) (cond ((= given-key (key record)) record) ((< given-key (key record)) (lookup given-key (left-branch set-of-records))) ((> given…
(define (union-tree tree1 tree2) (let ((list1 (tree->list-2 tree1)) (list2 (tree->list-2 tree2))) (list->tree (union-set list1 list2)))) (define (intersection-tree tree1 tree2) (let ((list1 (tree->list-2 tree1)) (list2 (tree->list-2 tree2)…
(define (list->tree elements) (car (partial-tree elements (length elements)))) (define (partial-tree elts n) (if (= n 0) (cons '() elts) (let ((left-size (quotient (- n 1) 2))) (let ((left-result (partial-tree elts left-size))) (let ((left…
SICP超久しぶり。 思えば学部2-3年のころに一生懸命やっていたな。 ranobaの開発に移ってから、ずっとほったらかしにしていた。 やっぱり難しい。あまり成長してないのか。。。。 なんにしろ、いい加減に終わらせないとね。ぱっぱと飛ばしてこう。 (define (…
最近はjavascriptを書いています。 javascriptとしてはそれなりに大規模になってきました(2万行ぐらい?)。 最近のjavascriptトレンドのやり方は、コードチェッカを通して、信頼性を向上させるのがプロ技らしいです。 僕も早くプロの仲間に入りたいです。…
d:id:nagayoru:20110131:1296500717を多少綺麗にしてみました。 ソースは下 XMLtoJSONをimportして使えます。 Python 2.6.5 でテストしてあります。 引き続き突っ込み募集です! jsでevalする場合は eval("("+ str ")"); としないとラベル文に解釈されてシン…
pythonでXMLからJSONへのトランスレータを書いたので載せてみます。 クライアント側のjavascriptがとても重くて、サーバ側のパワーがあまりまくってるので作りました。 一応調べてみたけど単純なやつはさっと出てこなかったので作りました。 移植性が目的でP…
前々からDiCE使ってましたが、なぜか無駄にCPU食ってるので、 スクリプト作ってcronでまわそうかと思って作りました。 (それにしても、何でほとんどアイドルのはずなのに10%とかとるんだろ?) 調べてみたら何人もやってる人が居ましたが…さっき出来たので…
サーバ壊れたので直しました。 バックアップがあったので良かった。 ranoba.comのデータは無事です。
あけおめです。 今年もがんばりません。 うそですよ…がんばりますよ。いつもどおり。 そういや今年は厄年です。 やだなー
Lamport's bakery algorithm experiment in C ランポートのパン屋のアルゴリズム例をC言語で書いてみる PCDPはもう大体良いといわれたけど、微妙にわかってないので実装してみる。 まずはじめに、沢山のthreadで排他処理せずに、共有メモリをインクリメント…
Chapter 4 Semaphores 4.1 Introduction セマフォについて論議する。 Wait(S) : Sが0以上の場合、Sをデクリメントする。それ以外のとき、waitを実行したプロセスを一時停止する。 Signal(S) : このセマフォによって一時停止させられているプロセスがあった場…
Chapter3 The Mutual Exclusion Problem 3.1 Introduction Mutexの実装方法について議論する 1. Critical_Sections の中の処理は2プロセス以上にinterleavedされてはならない(同時に実行されてはならない) 2. Critical_Sectionは??(英語が読めない…) 3. …
Chapter2 The Concurrent Programming Abstraction 2.1 Introduction ok 2.2 Interleaving 処理時間が違っても、処理順番が同じであれば同じと考える。 システムの処理速度は時とともに変わってしまうので、それで動かなくなっては困るため。 どのようなInte…
Principles of Concurrent and Distributed Programming (Prentice-Hall International Series in Computer Science)作者: M. Ben-Ari出版社/メーカー: Addison Wesley発売日: 2006/02/24メディア: ペーパーバック クリック: 14回この商品を含むブログ (3件)…
19章「クエリコンパイラ」 19.1 データベース ok 19.2 パターンマッチングクエリ ok 19.3 クエリインタプリタ かなり複雑な再帰だ 19.4 束縛に関する制限 notの挙動が今ひとつわからない。 19.5 クエリコンパイラ やべー鬼難しい。 とりあえず読み飛ばす。後…
(defun read-all (output-stream) (if (null output-stream) "" (with-output-to-string (lines) (awhile (read-line output-stream nil nil) (format lines "~a~%" it))))) (defun execute (command &key (wait t)) (destructuring-bind (program &rest arg…
18章「分配」 18.1リストに対する分配 ok 18.2他の構造 > (dbind (a b c) #(1 2 3) (list a b c)) (1 2 3) > (dbind (a (b c) d) '( 1 #(2 3) 4) (list a b c d)) (1 2 3 4) > (dbind (a (b . c) &rest d) '(1 "fribble" 2 3 4) (list a b c d)) (1 #\f "rib…
15章 関数を返すマクロ 15.1 関数の構築 引数ひとつだし、あまり強力でない気がする。 mapなどに使うのにはいいかもしれない。 ok 15.2 Cdr部での再帰 (defmacro alrec (rec &optional base) "cltl2 version" (let ((gfn (gensym))) `(lrec #'(lambda (it ,g…
13章「コンパイル時の計算処理」 新しいユーティリティー この例は微妙な気がする。 Bezier曲線 定数値が与えられるなら、コンパイル時に計算を移せる。 普通ならコンパイラがやる機能を人間ができる。 ok 14章「アナフォリックマクロ」 アナフォリックな変…
12章 「汎変数」 概念 ok lispらしくなってきた。 複数回の評価に関わる問題 副作用コードを評価してから渡したいが、評価すると場所を表す式じゃなくなってしまう。 define-modify-macroは3個の引数を取る. 定義したいマクロの名前 (汎変数の後に)取るか…