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-12-25

お題: ワーカスレッドを安全に終了させるまで待機

| 05:10 | お題: ワーカスレッドを安全に終了させるまで待機 - わだばLisperになる を含むブックマーク はてなブックマーク - お題: ワーカスレッドを安全に終了させるまで待機 - わだばLisperになる

今回もアルゴリズム云々ではないので、何とか試作する位はできそう、ということで挑戦。

メインのスレッドがあって、スレッドプールからスレッドを拾ってきて仕事をさせて、子供のスレッドが全部終了するのを確認して次の仕事へ…というようなものを作れとのこと。

うーん。マルチスレッド関係なのでPortable-Threadsが使えるとは思うものの、スレッドプールをどうしたもんかと。

結構ググったりしてみたけれど、スレッドの使い回しの情報はみつけられず、とりあえずスレッドプールを使ってない方も何名かいらしたので自分も使わないということにして、投稿。

Common Lispでの定番スレッド処理ってどんな感じなんでしょう。The Common Lisp Cookbook - Threadsも結構複雑です。

まあ、自分は、そもそもスレッド処理自体分かってなかったりしますが…。

何か題材を見付けて色々練習してみよう。

INTERLISP的Xmas

| 23:38 | INTERLISP的Xmas - わだばLisperになる を含むブックマーク はてなブックマーク - INTERLISP的Xmas - わだばLisperになる

昨日突然、INTERLISPの処理系の新バージョン登場というふれこみで、comp.lang.lispにINTERLISP系の処理系のタレこみがありました。

タレこんだ人は、作者さん本人で、Blake McBrideさんなのですが、INTERLISP系というのは珍しいので、早速ダウンロードして試してみました。

Windowsと32bit Linuxだと素直に使えます。

INTERLISPには馴染みが薄い自分はなんとも言えませんが、大体普通のINTERLISPと同じ感じです。

INTERLISPにはマクロがなくその代わりに、引数を評価しないで取り込む、NLAMBDAという仕組があるのですが、この辺の使い方がちょっと違うかもしれません。

NLAMBDAはどんなもんなのかというと、

((nlambda (x y z) (list x y z)) foo bar baz)
;=> (foo bar baz)

というものです。

確かにこの仕組があれば、MACLISP系のマクロに相当するものは書けそうです。

ということで、色々試してみましたが、Lispf4では良く分からなかったので、

確認のため、PDP-10のINTERLISP-10でDOLISTを作ってみることにしました。

defineq (
    (dolist (nlambda l
	     ((lambda (var list body tag l)
		(eval `(prog (,var)
			     (setq ,l ,list)
		        ,tag (cond ((null ,l) (return)))
			     (setq ,var ,(car l))
			     ,@body
			     (setq ,l (cdr ,l))
			     (go ,tag))))
	      (caar l) (cadar l) (cdr l) (gensym) (gensym)))) )

という感じに作ってみましたが、EVALを呼んだりしてところなどがちょっと違うんじゃないかなあ、と思っています。

もう少し資料を探さなくては…。Lispf4でも大体近い感じなのですが、バッククオート等は使えないようです。うーん。どうするのが定石なのか。

文章の流れとは全然関係ないのですが、今日は12/25日ということもあり、INTERLISP-10の処理系を起動すると、

@lisp
INTERLISP-10  31-Dec-84 ...
Merry Christmas.
3_

と挨拶してくれます。

いつもは、Hi.だけなのですがクリスマスや、ハロウィンなどでメッセージが変わるようです。

地味にいい味出してます。