2008-08-01から1ヶ月間の記事一覧
ヒューマンスキル向上について考えている。 ヒューマンスキルと言ってもそれは幅広いが、その中で特に重要と思ったのが整理力だ。 よくわからない技術的な問題を調べていると、どうしても混乱が生じる。 様々なケースを確認している最中に条件変更の漏れがあ…
C や Java で言うところの、switch 文のようなものが Lisp にもある。 以下のように記述する。 (defun janken (x) (cond ( (= 0 x) 'GOO) ( (= 1 x) 'CHOKI) ( (= 2 x) 'PAA) ( t '???) ))
ユーザーの入力は、 (read) で受け取れる。これを、setq などの関数と組み合わせて使う。 > (defun ask-question (question) (format t "~A?" question) (read)) ASK-QUESTION > (setq x (ask-question "How old are you")) How old are you?100 100 > x 100…
LispのHelloWorldはこうなる。 (format t "HelloWorld.") 出力は、 HelloWorld NIL となる。・・・LispではHelloWorldなどいらないと思うが、NIL が返ってくるのか・・・ よくわからないが、きっとそういうものなんだろう。 主に、文字の出力は、入力待ちの…
Lisp では、条件分岐は次のように書く。 (if (条件) (条件が真の場合の処理) (条件が偽の場合の処理)) 例を書くと・・・ (if (listp x) (+ 10 10) (+ 1 1)) となる。この実行前に、 (setq x '(1 2 3)) というように、x がリストとして定義されていれば20が、…
もう今は昔、、、と言える話になっただろうか。 一昔前は、コンピュータ技術者はいわゆるオタクで、人付き合いが苦手でコンピュータと 接している方が得意、という感じだった。 が、業務システムを構築する仕事が一般的になるにつれて そういう感じの技術者…
JavaやCと大きく違うのはやっぱりその式の書き方だと思った。 int x = ax + y というようにJavaやCでは書くのに対して、Lispでは (* a x) というように、先に演算子がくる。上記の式を書くとすると、 (+ (* a x) y) という感じだ。 (set 'a 2) 2 (set 'x 67)…
ClozureCLは、 /Applications/ClozureCL にインストールされた。このディレクトリの下にscriptというディレクトリがあるので、そこにTerminalで移動。 cd /Applications/ClozureCL/script そこにある、ccl あるいは ccl64 を、PATH設定されている任意のディ…
Emacs で設定をいろいろしているが、その設定の意味が全然わからない。 これをわかるようになるためにちょっとずつLispをやっているが・・・ とりあえず、初歩の初歩。何かしらの変数を定義する。 Lispの文法としては、 (setq x 1) 1 x 1 という感じ。実行は…
Cでは変数を宣言するとどのように初期化されるのだろうか。 main() { int integer1,integer2,sum; printf("The value of integer1 : %d\n", integer1); printf("The value of integer2 : %d\n", integer2); printf("The value of sum : %d\n", sum); printf(…
久々にLispをいじってみた。これまでは、Emacs 上で動かしていたが、本格的(?)なLispの処理系を入れてみた。 大半が、ソースコードからコンパイルする形でインストールしないといけないようだったが、Clozure Common Lisp のみは dmg のインストーラがあ…
サンプルのファイル名を変えた場合に、古いファイルがそのまま残ってしまう。 自分で rm コマンドを使って消せばいいのだが、せっかくスクリプトを用意したのだから その中でやらせることに。 ファイルの有無を判定するための方法、いろいろあるが test コマ…
やっぱりコンパイルされてできあがるファイルの名前を"連番.bin"でなく、 "ファイル名.bin"にしたい、という気持ちからそれをするためのシェルを引き続き作成。 すでに配列の中にファイル名.cという名前が格納済みだからそれを利用する。 一番後ろの.cのみ取…