2008-01-01から1年間の記事一覧

SRFI日本語訳リンク

http://www.chino-js.com/tech/srfi/final-srfis.html 後で読むリンク。

Schemeのお勉強その6 スコープについて(後編)

再帰と関数内関数 理由は良く知りませんが、Lisp/Scheme では繰り返し処理には再帰が好まれます。どんなループも再帰に変換できる、ということを昔C言語で試行錯誤したことがありますが、どんな内容だったかは覚えていません。(このテーマはまた後日)。 再…

文字数無制限で標準入力からの一行読み込み。

std::getline(std::istream&, std::string&);いつも関数名が分からなくなるので書いておく。どうもreadlineって書いてしまう。

(equal? Schemeのスコープ Cの型)

Schemeのスコープについてここ数日考え続けています。考えながらプログラミングGaucheを読み進めたら「環境フレームモデル」って章がありました。ややこしい話で最初ちょっと混乱したけどじっくり考えたらなんとなく分かってきました。 C/C++のような静的型…

IronSchemeで遊ぶ。

「プログラミングGauche」が面白くて勉強ブログさぼり気味。気分転換に IronScheme をいじってみる。 System.WIndows.Forms でウィンドウ表示。ほぼ example で付いてきたコードそのまま。 (import (rnrs) (ironscheme clr)) (clr-reference System.Windows.…

Schemeのお勉強 その5 スコープについて(前編)

前回レキシカル変数についてC言語の例をあげて書いてみました。が、どうも腑に落ちない感じがしています。そこで今回はSchemeのスコープについて整理してみます。 変数と関数の名前空間 スコープとはちょっと違いますが、最初に変数・関数の名前空間について…

Schemeのお勉強 その4 レキシカル変数

MIT-Scheme 入れてみた。 Gauche と他の Scheme 処理系との違いを試す目的で MIT-Schemeをインストールしました。だけど同梱のエディタ edwin は微妙な使い心地だし、コマンドプロンプトから scheme.exe を起動すると専用のシェルウィンドゥが起動しちゃった…

書籍購入

ようやく「プログラミングGauche」を宅急便屋さんから受け取りました。ぼちぼち読んでみましたが1章あたりのページ数がほどほどで読みやすいですね。このブログのお勉強の復習とGauche独自仕様の理解のために役立てたいと思います。 他にも3冊購入。「On L…

Schemeのお勉強 その3 条件判定

if, when, unless lisp の if 式は、他のどの言語の if 文 よりもシンプルだと思う。一切の無駄が無い。 gosh> (define x 10) x gosh> (if (< x 100) "small" "big") "small" gosh> (if (< x 100) (begin (display "A") (display "B") (display "C")) (displ…

Schemeのお勉強 その2

amazon購入本4冊の不在届け到着。平日は時間がよめない。土曜日までお預けだ。 lambda と クロージャー lambda式はクロージャーになる(用語の使い方合ってるだろうか?) gosh> (lambda (x y) (+ x y)) #<closure #f> gosh> ((lambda (x y) (+ x y)) 10 20) 30 define </closure>…

Schemeのお勉強 その1

amazonにプログラミングGaucheを注文して、届くまではこちらでscheme独習中。 シンボル シンボル。schemeでは大文字小文字区別無しらしいけど。 gosh> (eqv? 'ABC 'abc) #f gosh> (eqv? 'ABC 'ABC) #tgaucheでは区別するみたい。リファレンスみたらそう書い…

なんとなく流行のGaucheに手を出す。

ちなみに自分は、lispはEmacsLispをかじった程度。したがって初歩的な内容しか書けません。 set!, push!, pop! なんでビックリマーク付いてるんだ? Ruby? まず変数への代入。commonLisp では、いきなり > (setq a "hoge") "hoge" と変数束縛できるが、Gauc…

PyDev インストール

Editra をいろいろいじってみて、日本語文字コードに問題があることが分かった。問題点に気をつけながら使えば使えないことは無いが、初心者に布教することを考慮したツール選びをしたいので他をあたることにした。 今日は真打 PyDevを試した。 このwiki を…

Editraを入れたが…

wxPythonをインストールしたら Editraが一緒にインストールされた。 このエディタ存在は知っていたけど、どんなもんかとちょっといじってみた。見た目は上々。(エディタ部分はフォントと色をカスタマイズ済)。 ファイルツリーのペインや、PyShellのペイン…

重複順列パフォーマンス比較

重複順列の話 その4 何点かチューニングをしました。 xrange() をリストへ置換 ローカルスコープでの名前束縛の制限 1.は全般に言えることですが、呼び出し回数の多い関数内での for ループは、毎回 xrange() でまわすより、あらかじめ range() でリストを…

続続☆重複順列

重複順列の話 その3 前回のイテレータクラスを見てて、なんかまた別のジェネレータに出来そうだと思った。 それで出来たのがこれ。 #[NonRecurseGenPerm] def repeated_permutation_n(dimension, n): buf = [0] * dimension max_val = n - 1 max_dim = dime…

重複順列が倒せない

重複順列の話 その2 正直最初はもっと簡単な話だと思ってました。まさかシリーズ物になるとは…… まず 前回 の訂正・改良。 #[EvalPerm] def repeated_permutation(dimension, iterable): """ 順列生成ジェネレータ作成 dimension 次元数(リストの長さ) it…

文字列リテラルと '\'

'\n' などの 特殊文字を特殊文字と扱いたくないとき、Python では raw string(生文字列)を使う。 文字列の最初の ' または " の直前に r をつければ、スクリプト内の表記通りの文字列として扱われる。 >>> print '[\t]' [ ] >>> print r'[\t]' #raw string…

svn の trunk は 2.7 だった。

話題のPython2.6を使いたいけど、サードパーティ製ライブラリが使えないと困る。 加えてWindowsだと、拡張子関連付けがあってごにょごにょ…… そういえば最近使って無いけど Cygwinが入ってる。 新機能確認する程度ならCygwinに入れればいいや。 python.org …

TkとWmとMiscの関係

Tkinter のルート widget(?) である Tkinter.Tk は Wm と Misc, 2つのクラスを継承してる。 とっつきやすそうな Wm (Window Manager)に目をつけて闇雲にメソッドを呼んでみる。 >>> import Tkinter >>> wm = Tkinter.Wm() >>> wm.wm_aspect() File "", line…

重複順列生成 - evalで再帰いらず -

擬似多次元配列 の動作確認をしていて気になった。 >>> g = ((x,y,z) for x in range(2) for y in range(2) for z in range(2)) >>> for pos in g: print pos, ma[pos] (0, 0, 0) 100 (0, 0, 1) -1 (0, 1, 0) -1 (0, 1, 1) -1 (1, 0, 0) -1 以下略 ma は三次…

Pythonの辞書で擬似多次元配列

Pythonでは辞書のキーに tuple を使える。 >>> d = {(1,2,1):100, (2,2,2):200, (2,0,1):300} >>> d[(1,2,1)] 100 キーとしている tuple を三次元配列のインデクス(三次元空間の座標)とみなせば、d は三次元配列のように見える。 [ ] の中では tuple の ( …