2009/12/04

一週間

新しい職場での一週間が終わった。お昼御飯をちゃんと食べられているのと、 17インチのノートパソコンを持って通勤したせいで体力がついた気がする。先週までみたいに寒さが身にしみることがあまりない。

ありがとうございます。

2009/12/02

[Common Lisp] sif

Common Lisp のアナホリックマクロといえば、aif が有名だが、 Anaphora には it に setf できる sif や swhen がある。 gethash と一緒に使うと便利だったりする。

(eval-when (:compile-toplevel :load-toplevel :execute)
(require :anaphora)
(use-package :anaphora))

(defparameter *hash* (make-hash-table))

(sif (gethash :key1 *hash*)
(list 'ok it)
(list 'new (setf it 'value)))

ちなみに C-c M-m (slime-macroexpand-all)してみると↓のようになった。

(SYMBOL-MACROLET ((#:THIS-S971
(ANAPHORA::INTERNAL-SYMBOL-MACROLET ((IT #:THIS-S969))
(GETHASH :KEY1 *HASH*)))
(IT #:THIS-S971))
(IF (SYMBOL-MACROLET ((IT #:THIS-S969))
(GETHASH :KEY1 *HASH*))
(LIST 'OK
(SYMBOL-MACROLET ((IT #:THIS-S969))
(GETHASH :KEY1 *HASH*)))
(LIST 'NEW
(LET* ((#:G972 :KEY1) (#:G973 *HASH*))
(MULTIPLE-VALUE-BIND (#:G976)
'VALUE
(SYMBOL-MACROLET ((IT #:THIS-S969))
(LET* ((#:G981 #:G972) (#:G982 #:G973))
(MULTIPLE-VALUE-BIND (#:G984)
#:G976
(SB-KERNEL:%PUTHASH #:G981 #:G982 #:G984)))
#:G976))))))

symbol-macrolet を使ってること以外は、よく分からんw

さらに asif なんてものもある。 then では setf できないが、else では setf できるらしい。

2009/12/01

初日

新しい会社での初日。
新しいプロジェクトでの初日に似ている。
システム屋さんではないので雰囲気は違ったけど。
大量の新しいインプットに対して頭が飽和状態になっている。
脳に負荷を感じる。
ちょうどキーボードの配列をQWERTYからDVORAKにかえたときみたい。

そういえば、キーボードの配列は言語ごとに指が覚えているものらしい。
新しい配列で日本語入力に慣れても、Common Lispを入力するときはまだ全然慣れてなくて、やがて Common Lisp で慣れても Java を入力するときはまた全然慣れてなかったりする。

なにはともあれ初日楽しかったな。

2009/11/30

卒業とは違うね

退職した。ちょっとだけ似てるけど卒業とは違うね。やはり「逃げる」という感じがある。逃げたのか、進んだのかは、「考え方の違い」で片付けてしまおう。卒業と違って戻れないわけでもない。先生になるという手はあるのか。いや、それは違い過ぎるな。「送信」ボタンをクリックするまでにどれだけ悩んだことか。役員3人の姿をみたとき。泣きそうになった。何故か御成町のころのことがよく思い出される。よく雇ってくれたものだ。よく出てきたものだ。それらがあって今ここにいる。奇跡であろうと偶然であろうと、基本的に今ここにいることを肯定する。そうしないと生きていけないしね。

言葉にすると全部うそみたい。困ったものだ。でもね

ありがとうございました。

2009/11/12

テレビもらった

日曜日にテレビもらった。ありがとうOさん。

Shibuya.lisp テクニカルトーク#4

先週の土曜日。ちょっと渾然一体となったメモと感想で申し訳ないが。

  • The Lisps
  • データ = プログラム
  • アトムを1文字にするとまるで APL だ。
  • PDXA(Push cDr eXchange cAr)
  • きちんと発音された Interlisp, MacLisp はかっこいい。
  • 8割引
  • Pascal をポインタ増減できるようり拡張して実装
  • HLISP = HashLISP。hcons
  • System/360 のアセンブラはかなり使いやすい。
  • インタプリタをアセンブラで実装し、コンパイラは Lisp で実装。
  • 空の磁気テープを持ってきて。。。
  • 機械語関数。コンパイル後もコードとデータは等しくあるべきだ。
  • タグ。大小。正負。
  • 関数は全て独立にコンパイルする。
  • オプショナル引数。引数の個数毎に関数の入口を用意する。
  • Lisp は von Neumann 型言語
  • Lisp は Goedel アーキテクチャ
  • 幸せだった。幸せです。
  • スレッドの実装はまだ
  • スレッドは分散メモリむきではない。
  • Single Programe Multi Data
  • prin1-to-string と read
  • 赤黒印字可能
  • car と cdr だけではなく cbr や ccr も
  • trai 関数と tak 関数
  • 「Lisp に貢献したのは conditional expressionだけ」 McCarthy
  • McCarthy でさけたくさんの思い違いをしていた
  • タイプライタに丸括弧しかなかった。
  • lambda の前は subfun
  • F(abobe), F(below)
  • progn 以前は cond を使った。
  • APL はガラス玉。Lisp は泥の玉。
  • 君が代は Lisp である。
  • Lisp の初期があんなにハードウェアアーキテクチャにべったりだったとは
  • GC はマシンアーキテクチャで実現すべき。
  • 時間軸の仮想記憶
  • Lisp の心とは「自由」なり

2009/11/05

七五三と運動会

11月1日。七五三。連れ合いあ娘の着付けをした。地元の神社で。いい雰囲気だった。

11月3日。運動会。インフルエンザによる学級(学年)閉鎖で延期になっていた運動会。ちょっと(いや、かなり)寒かった。娘は楽しそうでよかった。

その後、不思議なことに首をいためた。