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

コマンドで連番を作る

Perl で連番のファイル名を作る にチャレンジ。私だったら日付計算するならやっぱり date かな。 $ i=1; while [ $i -le 5 ]; do echo $(date --date "$i day" +%Y%m%d); ((i=$i+1)); done 20080928 20080929 20080930 20081001 20081002 seq や printf とい…

Gauche の真偽値と条件判断 : 1

呼称: 真偽値の判定 目的: 真偽を判定する手続きを学ぶScheme では、真偽を判断する手続きを特に述語(predicate)と呼び、述語の中でも等価性を判断する手続きを等価述語(equivalence predicate)と呼びます。 また、仮引数に pred(predicate の略) を取る手続…

Gauche の手続き : 5

呼称: 部分適用と多値 目的: cut 式と複数の結果を返す・受け取る方法を学ぶlambda 式を簡略化する方法として cut 式があります。cut 式の中に現れる <> が引数のプレースホルダーになります。<> は複数あっても良く、また は可変長引数を表します。 (cut <…

Gauche の手続き : 4

呼称: 可変長引数とその他の引数 目的: 可変長引数の渡し方と、省略可能引数/キーワード引数を学ぶ可変長引数を渡す場合、apply を使用する。の各要素を引数としてを呼び出す。 (apply <手続き> <引数リスト>) 使用例。 (define (map/log . args) (print "ar…

Gauche の手続き : 3

呼称: ローカル変数と可変長引数 目的: ローカル変数とスコープ、可変長引数の取得方法を学ぶローカル変数には let 式を使用します。 ;; <初期値式> が評価され、その値が <変数> に束縛される ;; これが一般形? (let ((<変数1> <初期値式1>) (<変数2> <初…

Gauche の手続き : 2

呼称: 高階手続き 目的: 高階手続きを学ぶ手続きを受け取る手続きや、手続きを返す手続きを高階手続きと呼びます。Scheme では手続きを基本的な構成要素として、高階手続きを組み合わせることで大きなシステムを作成する。言葉では簡単そうに説明されている…

Gauche の手続き : 1

呼称: 手続きオブジェクト 目的: 様々な手続きを学ぶ (define (add a b) (+ a b)) gosh> add #<closure add> 手続きを評価すると、# が返される。# は、リテラルで書けないオブジェクトを示す。 (define (<名前> <引数> ... ) <式> ...) と (define <名前> (lambda (<引数</closure>…

入門 vi から知らなかったけれど、あっ、これ便利かも?と思った内容だけをすっぱ抜く

入門vi 第6版作者: リンダラム,アーノルドロビンス,Linda Lamb,Arnold Robbins,福崎俊博出版社/メーカー: オライリー・ジャパン発売日: 2002/05メディア: 単行本購入: 14人 クリック: 193回この商品を含むブログ (75件) を見る先日、Python のソースを読むの…

Gauche のリスト処理手続き : 4

呼称: リストの末尾再帰呼び出し 目的: 2種類の再起呼び出しがあることを学ぶ 備考: 末尾再帰の方が、効率が良い場合が多いので推奨第6章のリストを勉強するのに4回(4日)費やしてしまいました。ページ数は20ページ弱です。それだけ私にとっては難しかったで…

Gauche のリスト処理手続き : 3

呼称: リストの簡単な処理 目的: Gauche のリスト処理の再帰呼び出しに慣れる 備考: car/cdr で再帰呼び出しするのが基本(?)慣れないうちは「Scheme とこういうものだ」と思って付き合うべし、とあったのでサンプルをそのまま写経して体で覚える。条件や手…

Python のソースを読むのにタグジャンプ機能を利用する

vi(vim) で Python のソースを読むのに ctags を使ってみました。調べていると、別途、ptags.py と言うものもあり、それを用いてもタグファイルを作成してくれるようです。 basic Tip #1188: Use ptags.py to generate tags file for python によると、Pytho…

笑顔がいっぱい

Smileys Triangle に挑戦。 ちょっと趣旨を違えているような気もするけど、短くできたからいっかなーと(^ ^;; print ':\n:-' for i in range(32):print ':-)'+'))'*i 実行結果。 size: 52 time: 0.089752 sec status: 0 22位。初めて名前が乗った! 22 t2y-1…

Gauche のリスト処理手続き : 2

呼称: リストの捜査 目的: Gauche のリストの要素を処理する方法を学ぶ 備考: 式の前に #?= を置くと評価値を表示できる (fold ) は、最初の呼び出しの第2引数となる 次にの結果が、次の呼び出しの第2引数となって繰り返す リストの要素がなくなれば終了する…

CentOS 5.2 で Gauche を RPM パッケージからインストールする

CentOS 5.2 のデフォルトインストールだと、ビルド関連のパッケージがインストールされないようです。先ず、ビルド環境を構築するために yum を使ってビルド関連のパッケージをインストールします。その後、Gauche の tar ボールから RPM パッケージを作成し…

Python の split() の仕様

ディスクスペースの使用状況を取得する でたまたま気付きました。split() の動作をまとめたいなと思っていたら、良い記事を発見しました。私が気付いたの以下の内容ですが、幾つかの動作や他言語の動作についても書かれています。 分割パターン省略時は空白…

Python の対話型プロンプトで補完機能を使う

メーリングリストに目を通していて、補完機能の存在について知りました。以下の2行でさらっと使えます。 >>> import readline, rlcompleter >>> readline.parse_and_bind('tab:complete') 例えば、リストの(特殊)メソッドを調べるには "L." の状態で TAB を2…

Gauche のリスト処理手続き : 1

呼称: リストの基本操作 目的: Gauche のリストの代表的な操作を学ぶ #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- ;;; basic list operation ;; make list (print "using quote : " '(1 2 3)) (print "using list : " (list 1 2 3)) ;; list operations…