2008-04-01から1ヶ月間の記事一覧

追記

上のcycle?だとcarの所でできた循環を見つけることができない。 (define no-ret2 ;;carのところで循環するループ (let ((lst (list 1 2 3))) (set-car! (cdr lst) lst) lst)) (define rets (list ret3 ret4 ret7 no-ret no-ret2)) ;;m3.18 (define (cycle? s…

(sicp35)m3.12~3.19

他の人って図の所はどうやって書いているんだろう? (define orig-pair (cons '() '())) (define (get-new-pair) orig-pair) ;;get-new-pairはlispの実装に必要らしい。 (define (my-cons x y) (let ((new (get-new-pair))) (set-car! new x) (set-cdr! new …

htmlizeって便利ですね。

M-x htmlize-bufferとかでバッファ内の表示と同じような色のついたhtmlを出力してくれる。

firebugでletとか使うのはどうやるんだろう?

js

(function(n){ function range(i,j){for(i;i

pascalの三角形

昔は、こんな風に作ってた。 でも、この方があとで見たとき分かりやすいような気がする。 (明示的な再帰を避けるとあとで読みやすいのかもしれない) (define (shift-left seq) (cons 0 seq)) (define (shift-right seq) (reverse (shift-left seq))) (defi…

カーソル移動

(defun change-prev-lines (n) (interactive "n") (unless (boundp 'configured-prev-lines-n) (defvar configured-prev-lines-n n)) (setq configured-prev-lines-n n) (global-set-key "\C-p" (lambda () (interactive) (previous-line configured-prev-li…

unfoldの使い方を把握する

foldと対になるunfoldという関数が存在するみたい。 fold unfold list -> anything anything -> list foldは使い方が大体分かったような気がする。 でも、unfoldの使い道がよくわからない。 しばらく、unfoldを使ってできそうなことを探してみようと思った。…

(sicp36)sicp m3.6 ~ 3.8

;;m3.6 ;;線形合同法で乱数をつくる。 (define (rand A B M) ;M > A > 0 ;M > B > 0 ;B, M が互いに素 ;A - 1 がmの持つすべての素因数で割り切れる ;M%4=0 => (A-1)%4=0 ;M > Xn ;;面倒なのでA,B,Mの値を以下からパクります>< ;;http://wiki.fdiary.net/v…

(sicp35)m3.1 ~ m3.5

やる気がでないので、3章を先に始める。 ;;m3.1 (use srfi-1) (define (make-accumulator sum) (lambda (n) (set! sum (+ sum n)) sum)) (define A (make-accumulator 5)) ;;適用する回数によって値が変わる。 (map (lambda (x) (A 10)) (iota 10)) ;; gosh>…

project euler problem 18

下から上がっていった方が楽。 (define (f seq) (define (iter result rest) (match rest ((a b . _) (iter (cons (cons a b) result) (cdr rest))) (_ (reverse result)))) (iter '() seq)) (f '(1 2 3)) ;;=> ((1 . 2) (2 . 3)) (define (g seq1 seq2) (le…

project-euler problem 17

これはキモい。 thirtyがthirityになっていることに気づくのに苦労しました>< パターンマッチがとても便利でした (define (num->list n) (define (iter re n) (if (= n 0) re (iter (cons (remainder n 10) re) (floor (/ n 10))))) (iter '() n)) (define…

javascriptは確かに変わった言語なのかもしれない。

js

javasriptはjavaに似せたまったく異なる言語。 普通なら指定した数の引数で関数を呼ばなくちゃいけないのに こんな風に書くことができる。 function sum(){//何も引数を取らない関数? return Array.reduce(arguments,function(x,y){return x+y}); } print(su…

gaucheのリファレンス

gaucheをインストールすると、日本語のリファレンスが一緒に入っているはずです。便利です。 (確か、ubuntuだとdefaultで入っていた気がします><) もし、emacsを使っているなら、.emacsに以下を付け加えると"C-ci"でリファレンスが見れるようになります…

deepmapってこんな感じでいいのかな?

(define (deepmap p f seq) (apply (lambda (x y) (let ((fx (f x)) (fy (f y))) (if (eqv? fx (p fx fy)) x y))) seq)) (deepmap min car '((3 p) (2 q))) ;; => (2 q) applyじゃだめだった。 引数の数が3つの時、失敗する。 (foldみたいな感覚でいたけど…

screenを入れた。

escapeはC-zにすることにしました*1。 .screenrc autodetach on bell_msg "^G" defkanji utf-8 defencoding utf-8 encoding utf-8 utf-8 defscrollback 10000 escape ^z^z startup_message off vbell off caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w …

プログラミングgauche買った

本屋さんに行ったら プログラミングgaucheが置いてあったので買いました。 とりあえず、9章まで読みました。 多値って便利ですね (define (even>odd? . args) (receive (evens odds) (partition even? args) (> (length evens) (length odds)))) (even>odd? …