2009-05-01から1ヶ月間の記事一覧
問題2.30 高階手続きを使わない版 (define (square-tree tree) (cond ((null? tree) '()) ((not (pair? tree)) (* tree tree)) (else (cons (square-tree (car tree)) (square-tree (cdr tree)))))) 高階手続きを使う版 (define (square-tree tree) (map (la…
長くなってしまったので、分けて掲載することにしました。
この節では、リストを使って木構造を表現しています。ここから、込みいったリストの使い方をしてくるので、リストについて理解しておかないと、キツくなってきます。(←私)
catコマンドで各行を出力する「-n」オプションをgaucheで実装するためには、一行ずつファイルを読み込まなければなりません。では、逆に今まではどのようにファイルを読み込んでいたかというと、 (copy-port in (current-output-port))))) という記述の中の…
人狼というゲームをご存知でしょうか。この人狼を大ざっぱにいうと、「村人と人狼に分れて、どちらが生き残るか」というゲームです(詳しいゲーム内容はググッみてください)。主にネットで多くプレイされているゲームで、数多くの人達が熱中しています。 この…
正直申し上げて、お金を払ってまで使いたい機能がないなあと。ブックマークをメールでよこしてくれるぐらいだったら、キーワード別のエントリを、ブックマーク数でソートしてくれる機能を付けてくれた方が、よっぽど金の出し甲斐があるんだけどな。
ここではリストの各要素に対して、なんらかの作用させる手続きを定義する。例として、 リストの各要素の値を、n倍する手続きscale-list scale-listをより抽象化した手続きmap が定められている。
delciousで話題になっていたTwitterサービス。 このサービスの概要は、気になるWebページで、ブックマークレットを押すと、そのWebぺーじについて発言しているつぶやきを、収集して表示しくれます。「今ほにゃらら見てる」のブックマークレットと、対象のWeb…
問題2.7 (define (lower-bound x) (car x)) (define (upper-bound x) (cdr x)) 問題2.8 (define (sub-interval x y) (make-interval (- (lower-interval x) (lower-interval y)) (- (upper-interval x) (upper-interval y)))) 問題2.9〜問題2.16 段々こみい…
この節では、リストを操作する手続きを作成する。例題として、 リストの各要素にアクセスする手続き(配列のように扱う) list-ref リストの要素の個数をかえす手続き length 二つのリストを連結する手続き append が、提示してあった。 これらの手続きを利用…
コマンド解析についてのソースを探ってた時に、 (define (main args) (let1 predef-syms '() (let-args (cdr args) ((#f "D=s" => (lambda (sym) (push! predef-syms sym))) (else _ (usage)) . args) (match args ((file) (do-it file predef-syms)) (_ (us…
ここでデータの定義にふれているのだが、いまいち言っていることが飲み込めないでいる。ここはしばらくしたら、もう一度読み直した方がよさそうである。
http://pastorale.jpn.org/2009-05-12-1.html オープンソースの日本語入力ソフト「SKK」は便利! | 日経 xTECH(クロステック) 作業の快適さにひかれて、導入してみた。
コマンドにおけるオプションとは コマンドにおけるオプションとは、ある実行させたいコマンドに、細かな指示を与えるものです。たとえばcatコマンドなら cat -n filenameとすることによって、各行の先頭に行数を表示することができます。 オプションの解析 …
問題2.2 (define (make-segment x y) (cons x y)) (define (start-segment x) (car x)) (define (end-segment x) (cdr x)) (define (make-point a b) (cons a b)) (define (x-point x) (car x)) (define (y-point y) (cdr y)) (define (midpoint-segment a) …
何らかのエラーが起こった場合(例外が投げられた場合)の処理を加えてみました。以下がソース。 #!/usr/bin/gosh (define (main args) (if (null? (cdr args)) (copy-port (current-input-port) (current-output-port)) ; start guard phase (guard (ex ; c…
この辺は正直、例題が難しく(数値計算問題的に)、実際に手を動かすことができなかった。おそらく言ってることとしては、「適切なレベルで抽象化しろ」ということなんだろうけど。なにか良い例題の代わりとなる問題を見つけたり、思いついたりしたら書こう…
問題2.1 正負の有理数を扱えるようにする。以下が、とりあえず書いてみたソース。 (define (make-rat n d) (cond ((or (and (< n 0) (< d 0)) (and (> n 0) (> d 0))) (cons n d)) ((or (and (< n 0) (> d 0)) (and (> n 0) (< d 0))) (cons -n d)))) で実行…
計算機プログラムの構造と解釈作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一出版社/メーカー: ピアソンエデュケーション発売日: 2000/02メディア: 単行本購入: 35人 …
プログラミングGauche作者: Kahuaプロジェクト,川合史朗出版社/メーカー: オライリージャパン発売日: 2008/03/14メディア: 大型本購入: 22人 クリック: 713回この商品を含むブログ (244件) を見る SICPばかりやってるんじゃ飽きちゃうよね、ということでUnix…
指定したinfoファイルのあるディレクトリに、 gauche-refj.info*があるのを確認。で、mode-info-make-all-indicesを実行したが、gaucheのインデックスだけ (setq indexer-version "0.8.5") (setq function-alist '()) (setq variable-alist '()) のように、…
SICPばかりやってるんじゃ飽きちゃうよね、ということでUnixコマンドをgaucheで作ってみようという試み。コマンドを作ることによって色々なプログラミングのエッセンスを吸収できるんじゃないのぐへへ、という下心満載でやっていこうと思います。 第一回目は…
zshの履歴インクリメンタルサーチの機能があることはずっと前から知っていたのだが、なぜか使えなくてあきられめていた。で、今日ふと思い立ってもう一度調べてみたところ、.zshrcに以下のように書かねばならぬことが発覚した。 # "bindkey"の第一引数は、任…
結論から言うと、未解決。 エラーがでたので、ググってみたところ Error in init file: End of file during parsing などと言われた時は ~/.emacs のかっこが正しく閉じていない。 Mark, eval-region を使ってどこがおかしいか調べて場所を限定して行く。調…
なんとなしに思いついたので、書いてみることにする。 ソフトウェアの開発方法にアジャイル開発手法というのがあるのだけれど、それを学習プロセスに応用できないかなあと。アジャイル開発手法というのは、簡単にいうと、「ソフトウェアを短期間のうちに、徐…
はじめてやるゲームばかりなので、リンク集を作ってみました。ルールが気になるという方は、予習にでも使っていただければ是幸。 2日目 バルバロッサ アウフアクセ ワードバスケット 1日目 ドミニオン カタン ゴキポ(ごきぶりポーカー) ブラフ キャッシュ&…