Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-08-15

ELIS復活祭メモ(4) TAO/ELISのメインエディタZENと開発環境

| 23:30 | ELIS復活祭メモ(4) TAO/ELISのメインエディタZENと開発環境 - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭メモ(4) TAO/ELISのメインエディタZENと開発環境 - わだばLisperになる

現在Common Lispでメジャーだと思われる開発環境は、Emacs上のSLIMEかなと思います。

このSLIMEなのですが、自分の感覚ではLISPマシンの開発環境であるZmacs(Emacs)+LISP処理系の連携に近いものを感じます。

ということで、TAO/ELISの開発環境はどうだったのかということになるのですが、やはりZen(Emacs)+REPLがメインになるようです。

あまり触ってみる時間がなく、詳しく知ることはできなかったのですが、

  1. TAOのリスナー(REPL)上で、edとかzとするとZenが起動する
  2. Zenからファイルを開き、色々書く
  3. 作成した関数を動かしてみるには、C-x uでカーソルの直前の式を評価、C-x yでバッファのファイルを丸ごと評価(ロード?)
  4. C-x C-cでZenを抜けてリスナーへ
  5. 定義した関数を実行してみる
  6. Ctrl-Eでエディタに戻る

を繰り返すようです。また、M-x shell でZen上からシェル(REPL)が開くこともできます(もちろんTAOが開く)

自分は、使用感的には、CADR系のLispマシンの開発環境よりは、MacLISP+Emacsの環境であるLEDITが近いかなと思いました。

キーバインドもC-x yの挙動やC-eでエディタに復帰するところなどはLEDIT由来なのかなと思われました。MacLISP+EMACSのLEDIT環境はどういうものだったかは、PDP-10のエミュレータ環境で試してみたり、萩谷先生の

で伺い知ることができるかと思います。

リスナーについて特筆すべきところは、一番外側の()は省略できることかと思います。

(fib 10)

と打ち込む代わりに

fib 10

と実行できました。

等々、他にもマクロや、マルチプログラミングの定石な開発手順やデバッグ方法なども知りたかったのですが、やはり時間がありませんでした。

試すことを一覧表にでもまとめて持参するべきだったと後悔〜。

2010-08-12

ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる

| 21:56 | ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる - わだばLisperになる

TAOマクロがFUNCALL/APPLYできるというのをbitのTAOの連載(no title)を読んで知ったので、やはりこれを試さずにはいられません。

ということで、

(mapcar 'and '(1 2 3 4))
;⇒ (1 2 3 4)

(mapcar 'progn '(1 2 3 4))
;⇒ (1 2 3 4)

(apply 'dotimes '((i 8) (print i)))
;->
0 
1 
2 
3 
4 
5 
6 
7

のようなものを実行して喜んでおりました。

mapcarについては、確認するのを忘れてしまったのですが、複数のリストが取れるので

;; 多分
(mapcar 'and
        '(nil t nil t)
        '(1 2 3 4))
;⇒ (nil 2 nil 4)

のようなことができるのではないかと思います。

TAOでは、mapcarにandを渡したいのにできない!というLISP初心者のFAQも問題にならないわけですね。

mapcarにandを渡していたところ天海さんにandはマイクロ(コード)で実装されているということを教えて頂きました。

andのソースを開く際に、M-.のような感じで、マイクロコードのソースに飛んでいたように思います。

このマイクロコードも色々いじれたりするんでしょうか。次にTAOについて伺える機会があれば伺ってみたいです。

2010-08-11

ELIS復活祭メモ(2) ELIS-8200

| 20:56 | ELIS復活祭メモ(2) ELIS-8200 - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭メモ(2) ELIS-8200 - わだばLisperになる

市販された、ワークステーション型のELISには、ELIS-8100と、ELIS-8200種類あるのですが、復活祭で詳細を聞くまで基本的に同じLISPの処理系ものだと思っていました。

しかし、説明によると、TAOが載っているのは、8100で、8200は8100やTAOの機能を取り込みつつも処理系は、TAOからCommon Lispに移行していたようです。

(!x 10)のようなTAO独自のものは、SETF等に置き換えられたとのこと。

ELIS-8200は、言わばCommon Lispマシンだったのですね。

TAOから、CLに移行した理由は80年代後半当時の時代の要請(ソフトの互換性等)が主なところだったようです。

処理系がCLということで、質疑応答のときに、ELIS Common Lispの*features*にはどういう風な名前で登録されていたのかを伺いました。

質疑応答の時には何分昔の事ということではっきりしないとのことだったのですが、次の日に8200が起動されたときにわざわざ8200の*features*を表示して見せて頂きました!

確認する限りでは、 ELIS でした。やはり、予想通りというところなのですが、実際に確認できて非常に嬉しかったです。

#+ELISのように書く訳ですね。

しかし、書きながら気付きましたが、8100のTAOを調べるのを忘れていました。なんとなくこれもELISが入っていそうですねー。(Symbolicsのように)

2010-08-10

ELIS復活祭メモ(1) (!(member ...))の謎

| 22:31 | ELIS復活祭メモ(1) (!(member ...))の謎 - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭メモ(1) (!(member ...))の謎 - わだばLisperになる

もっと時系列に並んだ体系的な記録を書きたいところですが、とりあえず断片的にでも書いてゆきます。

ELISの論文を読んでいたときに、

(!item 2)
(!list (list 1 2 3 4))

(!(member item list) (1+ item))
;⇒(1 3 3 4)

のようになるのが非常に不思議だったので、これを実機で試してきました!

結果として、実際にこういう風になりました。

Common Lispでも、CARを挟んでやれば、

(LET ((ITEM 2)
      (LIST (LIST 1 2 3 4)))
  (SETF (CAR (MEMBER ITEM LIST))
        (1+ ITEM))
  LIST)
;⇒(1 3 3 4)

となります。

TAOでも、

(!(car (member item list)) (1+ item))
;⇒(1 3 3 4)

という風に同じ結果になりました。

CLでこういう動作を追加する場合、defsetfなどで追加できます。

(DEFSETF MEMBER (ITEM LIST) (VAL)
  `(LISPWORKS:WITH-UNIQUE-NAMES (ITEM LIST VAL)
     (SETF (CAR (MEMBER ,ITEM ,LIST))
           ,VAL))))

これで、

(LET ((ITEM 2)
      (LIST (LIST 1 2 3 4)))
  (SETF (MEMBER ITEM LIST)
        (1+ ITEM))
  LIST)

とも書けます。

恐らくですが、TAO/ELISでも、こういった定義があるのではないかなあと想像しています。

2010-08-09

ELIS復活祭参加してきました!

| 23:53 | ELIS復活祭参加してきました! - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭参加してきました! - わだばLisperになる

8/7〜9でELIS復活祭参加してきました!

運営事務局の皆様、発表者の皆様、素晴しいイベントをありがとうございました!!

割と斜め上な視点ですが、このブログに色々まとめてみたいと思っています。