Hatena::ブログ(Diary)

archackerの日記 RSSフィード

2012-09-13

ddddd

2009-01-28

Erlang...

green thread, immutable, Operating System.....

ぐるぐる回る。

beamとかいうVM萌えの対象か???

だとすればその上に言語を構築すればいいのか???

新コーナー立ち上げ延期。。

2009-01-20 Haskell’s challenge

仕事の下準備

新規コーナーのサイトスケッチにHAppSを使ってみようと画策中。

arc's challengeにはHAppSの投稿がなかったけれど、どうなんだろ。

arcより短くかけたら面白いな。

理解すればするほどHaskellってPrologと似ている。

ユニフィケーションとパターンマッチか。

Parsecのtryは、Prologの!を逆側からみた感じがするし。。

静的型付けなのに、あまり鬱陶しく感じないのは、型推論のおかげというよりは、代数的型だからな気がする。

型についても理解が足りない。深く理解したら関数なのだろうか。型も。

Lispのダイナミックさは魅力的だけれど、マクロ処理系書いて、関数で処理を書くというようにみれば、

Haskellの場合、型と関数処理系を書いて、それを組み合わせて処理を書いている感覚になる。

関数が持つ力の大きさがLispより大きい気がする。遅延評価とパターンマッチングの力なんだろうけれど、型とモナドがその力を最大限に生かしているような。

HAppSとTCahceとSTMとアクターモデルとで最強のプラットフォームは作れないものか。。

mnesia likeなdbにしても、ETSとDETSとから構築されているのであれば、なんとか独自で作れそうだ。。

まぁ、実践で鍛えられたプロダクトは、やはり魅力的なのだけれども。

MOZART

こないだツンドクしてたガウディ本をぱらぱらみてたら、MOZARTって、Lispと同等の力を持っていそうだ。

カーネル言語とその拡張という形でいろいろなモデルを実現しているので、自由にDSLがかけそう。

ただ、記述したDSLMOZARTではないかもしれないので、そうだとすればLispより弱いかも。

Lispはどう転んでもLispだし。

Erlang処理系を少し勉強してみるか。後アクターモデルと。

モデルとパフォーマンスの肝さえわかれば、LispHaskellが最強だと思える。

OSと言語って、行き着く先の2大巨頭で、それぞれ一応別分野に扱われていた気がするのだけれど、最近の分散とか、グーグルとか、Erlangとかのはやりをみていると、OSと言語の分野が融合してきている気がしてならない。

OSのノウハウって、いくつか分野が分けられると思うのだけれど、そのそれぞれは直交した何かな気がする。

そしてそれらを分散したマシンクラスタなりに実現していくのが、最近の流れか。

ファイルシステムプロセスリソース管理とか、Minix本に目を通してみよう。これまたツンドク中。

あ、でも最近の流れなんてことはないのか。Unixの次がPlan 9だったんだし、シームレスgoogleに吸収された感があるし。。

数学は色あせないなぁ。。

2009-01-06 iPhoneとAppleII

↓ まぁ、

JavaScript on Safariは間口が開いているのだけれど。

iPhoneはオープンになるのか

携帯をiPhoneに切り替えて結構たつが、実にクールである。

いくつか気になる欠点はあるのだけれど、それも忘れてしまうほど圧倒的な完成度である。

しかしながら非常に大きな欠点が一つだけある。

アプリケーションの配布がオープンでないことである。

オープンな競合が無ければ、それほど欠点とも思わないかもしれないが、google phoneがある。

goolge phoneが本格始動してくれば、apple vs microsoftの構図がまた繰り返されるのではないだろうか。

iPhone(mac)はあこがれるけれど、たくさんソフトがあってみんな使っているgPhone(windows)を使うことになるのよねぇ。とか。

まぁgooglemicrosoftほどセンスが悪いとは思わないけど。

2009-01-04 jiji (Lisp on JavaScript)

jijiスケッチ

1000行くらい。quasiquoteの実装半ば。バグだらけ。

JavaScriptの作法が分からないうちに書き始めたから、へんてこ。

といういいわけをしてもしかたがないほど恥ずかしいが、休日に書いてみたものを下記に出してみる。

評価のタイミングを整理できていないので、そこが一番直したいところ。

あまりにもシュールなページなので、時間見つけて適宜修正予定。

http://strobolights.homeip.net/kiki/jijitest

ドキュメントは皆無。まだスケッチだし。

嫁のあいてとかしないといけなく、最後の休日は何もできそうにない。。

quasiquoteがないにも関わらず、define-macro (mac)は一応動くかもしれない。

コメントの読み飛ばしを実装してない。。そういえば。。

biwaSchemeは素晴らしいなぁそれにしても。arc lightとか。

;;;; 試せるコード例

(def x 10)
x ;; => 10

(def (fn1 x) (+ x 10))
(fn1 5) ;; => 15

(def (acm1 x) (fn (y) (= x (+ x y))))
(def tmp (acm1 10))
(tmp 10) ;; => 20, 30, 40,,,

(mac (myif x y z) (list 'if x y z)) ;; tadano if.

(def x (table))
(= (x 'a) "hello")
(x 'a) ;; =>"hello"

((($ "#stdin") 'val)) ;; => "((($ "#stdin") 'val))"
((($ "#memo") 'text) "hello jiji") ;; => 書き換え。
;; メソッド呼び出しの構文はもう少し砂糖にくるみたい。。

(def x (js-new 'Object))
(= (x "hello") "world")
(x "hello") ;; => world
*1 ;; => 時間

やるべきではないとおもうが。

誰しも考えそうなことだが、クロージャの永続化とかってやるべきではないのだろうけれど、シリアライズのやり方とかを工夫して、パフォーマンスを度外視すれば簡単にできそうな気がしてきた。

言語レベルでネットワーク透過性とか色々盛り込んでしまえば、継続ベースのサービスをコンカレントに提供できるかもしれない。

あんまいみなさそうだけれど、試しに作ってみるのもおもしろいかもなぁ。

パッケージの実装方針について

continuationは、今のところあまり実装するつもりはないのだが、現在のレキシカル環境へのポインタを名前つきでグローバルなハッシュテーブルに登録できるようにしておき、

と、パッケージの実装も楽だし、マクロシュガーシンタックスを実装してしまえばなかなか便利なのではないかと思った。

悩みどころ

read関数がconsセルを返却する実装にしてみたが、JavaScript関数引数配列なので、読み替え処理が無駄だ。

配列で保持しておいて、評価の際に遅延評価的に読み替える方がいいかどうかで悩む。

*1js-eval "Date"