Scheme

Schemeを覚える。
http://www.shiro.dreamhost.com/scheme/index-j.html

Gauche
Schemeインタープリタ
http://www.shiro.dreamhost.com/scheme/gauche/index-j.html

debian にインストール

# aptitude install gauche

確認

# gosh -V
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]

終了

gosh> (exit)

traceを使う

gosh> (use slib)
gosh> (require 'trace)
gosh> (trace fac)

Eclipse + Java 5.0

Eclipseで使用するjavaのバージョンを変更
System.out.printfでビルドに失敗するときはjavaのバージョンを1.4から5.0にする。
"ウィンドウ(W)" - "設定(P)..."で「設定」ダイアログを開く。
「設定」ダイアログで"Java"-"インストール済みの JRE"を選択し、jre1.5.0_06を追加する。
"Java"-"コンパイラー"で"コンパイラー準拠レベル(I):"を"5.0"にする。

objective-C

Objective-Cの覚書


◆クラスの宣言
@interface クラス名 : 親クラス名
{
  インスタンス変数;
@public
  公開するインスタンス変数;
@protected
  サブクラスからのみアクセス可能なインスタンス変数;
@private
  非公開のインスタンス変数;
}
メソッド宣言
@end

◆メソッド宣言(インスタンスメソッド)

  • (戻り値型) メソッド名 : 仮引数リスト … ;

◆メソッド宣言(クラスメソッド)

  1. (戻り値型) メソッド名 : 仮引数リスト … ;

◆ラベル

  • (戻り値型) メソッド名 : (引数型1) 仮引数名1 ラベル名2 : (引数型2) 仮引数名2 … ;


◆クラスの定義
@implementation クラス名
メソッド定義

@end

◆クラスメソッドの呼び出し

[クラス名 メソッド名 : 引数0 引数1 …];

インスタンスメソッドの呼び出し

[インスタンス名 メソッド名 : 引数0 引数1 …];

◆コンストラク
メソッド( -(id)init; )を用意する。

◆デストラク
メソッド( -(id)free; )を用意する。

インスタンスの生成と開放
id obj = [HogeClass new];
[obj free];

◆クラスオブジェクトの生成
Class hogeClass = [Hoge class];
[hogeClass free];

◆カテゴリ
メソッドが追加できる。
@interface クラス名 : (カテゴリ名)
@implementation クラス名(カテゴリ名)

プロトコル宣言
@protocol プロトコル名 <親プロトコル1 , ...>
プロトコル本体
...
@end
プロトコルの継承
@interface クラス名 : 親クラス名 <プロトコル1, ...>

xyzzy Lispの勉強

Lispの勉強

ツール:xyzzy(Windowsのエディタ)
使い方:xyzzyを起動すると *scratch*というモードで立ち上がる。
    コードを書いたら、行末でCtrl-Jして実行する。
参考:http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp01.html


Hello Worldと出力する。

(format t "Hello, World\n")

要素を並べて括弧で括ってリストを作る。
要素はシンボルとデータに分けられる。

シンボルに数値を代入する。

(setf hoge 100)
または
(setq hoge 100)

リストを順番に実行することを"評価する"という。

シンボルやリストに引用符'を付けると評価を行わない。


リストの分解
first
car リストの先頭の要素を取り出す
rest
cdr リストの先頭の要素を含まない部分を取り出す

リストの合成
cons リストの先頭にデータを付け加える
list 引数のアトムからリストを作成する
append 引数のリストを結合する

16進は #x1234、8進は #o5678

分数を浮動小数点にするには float関数を使う

1+、1- はそれぞれ引数を1加減する
infc, decfはそれぞれ引数を1加減する

関数の定義
(defun 関数名 (仮引数) (処理) ・・・)

関数の内部で有効な変数はレキシカル変数(lexical variable)という。
ずっと有効な変数をスペシャル変数(special variable)という。
let を使うとレキシカル変数を定義できる。

比較にはeq, eql, equal, equalpがある。eqはアドレスで、equalpは型違いでも比較できる。

データ型を比較する述語:atom, numberp, integerp, floatp, symbolp, stringp, listp, consp
型指定子:number, integer, float, symbol, string, list, cons
型を調べる:typep述語、type-of関数
述語を組み合わせる: and, or
条件分岐:(if 条件部 then節 else節)
条件分岐:(cond (条件部A S式A1 S式A2 …) … (t S式T1 S式T2))
条件分岐:unless, when
繰り返し:(dotimes (var limit result) S式 …)
繰り返し:(dolist (var init result) S式 …)
繰り返し:(while 条件部 S式 …)
繰り返し:(loop 条件部 S式 …)、returnでloopを抜ける
繰り返し:(do (初期条件部) (終了条件部) S式 …)