yaotti's diary

Software is Eating the World

scheme

merge sort

gaucheでマージソート. きちんとテストも書いてみた. sort-merge.scm ;; merge-sort (use srfi-1) (define (merge-sort l) (let ((len (length l))) (cond [(>= len 2) (merge (merge-sort (former l)) (merge-sort (latter l)))] [else l] ))) (define (m…

これから50年以内に裁判員になる確率

裁判員になる確率は1/100です - www.textfile.org経由. 裁判員になる確率は1/5000です | Okumura's Blog (define (pow x y) (if (= y 0) 1 (* x (pow x (- y 1))))) (exact->inexact (- 1 (pow 4999/5000 50))) ;;=>0.009951156432196987 0.995%.そういえ…

schemeの内部状態変数

テストで出た問題。Question (+ (f 0) (f 1))において、引数が右から(つまり(f 1)から)評価されるときは1を、 左から評価されるときは0を返すようfを定義せよ。Answer (define (make-func) (let ((pre-val 1)) (define (func x) (set! pre-val (* pre-val x)…

schemeグループ

schemeの勉強記録はこっちに書いていく。 http://scheme.g.hatena.ne.jp/ 知識の整理に。

lambda

(((lambda (a) (lambda (b) (- a b))) 10) 5) 結果は5。 ふーむ。

手続き

(lambda (amount) (if (<= amount balance) (begin (set! balance (- balance amount)) balance) (error "Insufficient balance" balance))) は評価してもエラー出なくて (if (<= amount balance) (begin (set! balance (- balance amount)) balance) (error…

世界のナベアツ的なもの

3の倍数と3が含まれる数のときだけpiyopiyoする。 (use srfi-1) (define (contain-tree? num) (find (cut eq? #\3 <>) (string->list (number->string num)))) (define (nabeatsu n) (map (lambda (x) (if (or (= (modulo x 3) 0) (contain-tree? x)) 'piyop…

ターミナルからtwitterへポストするgaucheスクリプト

かいた。 #!/usr/local/bin/gosh (use rfc.http) (use rfc.base64) (define (main args) (let* ((username (cadr args)) (passwd (caddr args)) (status (cadddr args)) (basic-info (string-append "Basic " (base64-encode-string (string-append username…

Emacsのinfoでgauche-glのinfoを見られるように

自分で書いた2008-03-22 - (programmer? yaotti)を参考に。blogを書いてると同じことをやろうとした時にすぐ情報が得られてよい。 覚えてろって話だけど。 自分でダウンロードしたGauche-gl-(version)/docgauche-gl-refj.info.gzを gunzipで解凍してフォルダ…

gaucheめも

Gaucheのライブラリは /usr/local/share/gauche/(version)/lib/hoge(/fuga) 以下に保存される。 使うときは (use "hoge.fuga") Gauche-gl Gauche-glが面白そう。 OpenGLをgauche用に拡張したライブラリらしい。 http://practical-scheme.net/gauche/packages…

プログラミングGauche17章

順調に読み進めている。環境モデルあたりはSICPでやったのですっとばしたけれど。 define-hogehoge という手続きが出てきておもしろくなってきた。 しかし関数、手続き、メソッドの違いがわからぬ。 関数=手続き→俺の認識 メソッド=引数の型が指定された手続…

GaucheのInfoをEmacsで見る

カーソルを合わせている関数のinfoを見られるようにする。 1. まず、http://www.katch.ne.jp/~leque/software/repos/gauche-mode/gauche-mode.el をロードパスの通ったところに入れ(ロードパスはM-x describe-variable load-pathで見れる)、 .emacsに (autol…