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 |

2007-07-16

CADRエミュレータ (3) ホスト上のファイルを読み書きする

| 23:08 | CADRエミュレータ (3) ホスト上のファイルを読み書きする - わだばLisperになる を含むブックマーク はてなブックマーク - CADRエミュレータ (3) ホスト上のファイルを読み書きする - わだばLisperになる

CADRエミュレータは単体でも遊べますが、作成したファイルなどをエミュレータ外部に持ち出せるとより楽しく遊べます。

サーバの導入

エミュレータの配布サイトでは、Linux上で動くCADR用のファイルサーバ?がありますので、ダウンロードして設置します。

Retrocomputing - MIT CADR Lisp Machines:

http://www.unlambda.com/cadr/index.html

のページのChaosnet server tar fileをダウンロードしuntarします。

展開されたchaosdというディレクトリの中にコンパイル済みのLinux用のバイナリがありますので、

./chaos

./server

の順で起動させます。

起動は、展開ずみのディレクトリにcdして実行する必要があるようです。

(自分は、毎回起動が面倒なので、シェルスクリプトにして実行しています。)

サーバが起動された状態で、usimを起動し、CADRから接続を試みます。

配布されている状態では、アドレスは設定済みになっていますので、サイトの例と同じく、CADRエミュレータより、

(login 'foo t)
(si:set-sys-host "server" ':unix 0404 "//")

と実行し、CADRにログインした後にサーバと接続します。

ホスト上のファイルの読み書き

ホスト上のファイル名ですが、server://foo//bar//baz.quuxの様になります。

"/"が二重になっていますが、"/"はCADRではエスケープキャラクタとなっているので、二重に表現する必要があります。

読み書き時の初回時には、接続のため、ユーザ名とパスワードを尋ねてきますので、ホストでのユーザ名 <スペース> そのユーザのパスワードを入力します。

以上、ホスト上のファイルの読み書きについて書いてみました。

(si:set-sys-host "server" ':unix 0404 "//")

等々は、一々入力するのも面倒です。

自分は、スクラッチファイルを適当に容易して、Zmacs上から式をEvaluate Defun(Control-Hyper-E、どういう訳かエミュレータではC-Sh-Eを押すとこの組み合わせが発生)で評価してみていますが、楽ができるので結構お勧めです。

.8

| 11:02 | .8 - わだばLisperになる を含むブックマーク はてなブックマーク - .8 - わだばLisperになる

日課練習、日課練習

SRFI-1のfold-rightを作ってみた。

ややこしい。というか、ちゃんとできてるのか疑問。

(defun fold-right (kons knil &rest clists)
  (do ((pairs
        (do ((ls clists (mapcar #'cdr ls))
             (r '() (cons (mapcar #'car ls) r)))
            ((some #'endp ls) r))
        (cdr pairs))
       (r knil (apply kons `(,@(car pairs) ,r))))
      ((endp pairs) r)))

(defun fold-right (kons knil &rest clists)
  (prog (r pairs)
        (setq r knil)
    a   (cond ((some #'endp clists) (go b)))
        (push (mapcar #'car clists) pairs)
        (setq clists (mapcar #'cdr clists))
        (go a)
    b   (cond ((endp pairs) (return r)))
        (setq r (apply kons `(,@(car pairs) ,r)))
        (pop pairs)
        (go b)))

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20070716