プログラミング

Concurrent Clean : 当初の目的とずれたような気が

したので、sourceforge.netのコンパイルファームを使えるようにしてみた。 とりあえず、x86-linux2でCleanプログラムをコンパイルしてみよう。

Concurrent Clean : Linux版

sourceforge.netのコンパイルファームでCleanプログラムをコンパイルしてみた。 なかなか癖のあるコンパイラで、設定にちと苦労した。 結論から言って、patch_binというプログラムで、コンパイラフロントエンドであるclmに設定をバイナリアンに書き込んでや…

Concurrent Clean : CGI by Clean

ということで、CGIを作ってみた。 といっても、全く動的ではないのだが。 module PageIndex import StdEnv (++>) infixl 0 //:: !*File !a -> *File (++>) f a :== (<<<) f a Start w # (f,w) = stdio w f = f ++> "Content-type: text/html\n" ++> "\n" ++>…

Concurrent Clean : コンパイラフロントエンド

何とか、コンパイラとコードジェネレータは動くようになった。 まだ、挙動のよく分からないところが残っているが・・・ 次はリンカだが、これは、ファイルにリンクオプションを書き出して、リンカを呼んでやる仕様らしい。 - リンカは、2つのオプションを持…

Concurrent Clean : コンパイラフロントエンド

依存関係をたどってツリーを作るところはなんとなく形になった。 本当は、コメントがあったときの扱いをちゃんとしておいた方がよいのだけれど、とりあえずその辺は手抜きで。 - 次は、コンパイル。コンパイラキャッシュのことはとりあえず考えない。 - ツリ…

Concurrent Clean : コマンドラインコンパイラ

Makefileを次のように書いて、.icl → .abcへの変換を達成。 CLEANDIR=C:\Clean\lib CLEANPATH='$(CLEANDIR)\StdEnv;$(CLEANDIR)\StdLib;$(CLEANDIR)\OptEnv;$(CLEANDIR)\Directory;$(CLEANDIR)\ArgEnvWindows;.' all: Main.abc Main.abc: Main.icl cocl -P $…

整数にタグ

がついているのは、ML系特有の問題かと思っていたのですが。

Concurrent Clean : コンパイラキャッシュ

Cleanのコンパイラフロントエンドは、コンパイラ本体を別プロセスとして起動して、プロセス間通信を行いながら、コンパイラ本体のプロセスを終了させずに複数のソースファイルをコンパイルします。 これをCleanでは、コンパイラキャッシュと呼んでいて、これ…

Concurrent Clean : 新しくコンパイラフロントエンドを作ろう!

と思った。理由は コンパイラキャッシュを使うには、makeでは無理 Cで書かれたclmはポータビリティに難 標準でないプリプロセッサやコードジェネレータを使えるような拡張が欲しい というようなところです。 なので、作ろうと思っているのですが、言語は、ポ…

Concurrent Clean : ABCマシン命令ドキュメント

http://cleanj.sourceforge.net/abc_inst.html とりあえず、今わかっていることをひとおりまとめた。 結構抜けがあるが、CleanJ程度のものを作るのにはこれくらい分かっていればOKということ。 ここに書けない種類の知識もあるのだが、それはまた別のドキ…

Concurrent Clean : コマンドラインコンパイラ

clm(コマンドラインコンパイラ)のソースがあるので、Windows環境で実行できるものをビルドしようと思ってmakefileを書き換えてみたのだけれど、上手く行かない。 linux用のものをcygwin環境でコンパイルしたら、コンパイルできた。とりあえず、これでいいか…

が欲しい

まあ、そうでなくてもブラウザ上で画像の編集やコピペができるJavaScript(ないしFlash)製のイメージエディタとかで、ファイルに保存しないでpostできたらいいのにと思うのです。 それがあれば、世の中のwikiやblogの使い方が変わるのではないかと思うので…

オプション化と抽象化

オプションが増えるということは、(ソフトウエア工学的な)抽象化に失敗している可能性があると思うのですが、 どうも世の中には、オプション化することが抽象化ということだと考えている人もいるようで・・・

Erlang : wxErlang

http://www.3pblog.net/index.php?entry=entry061022-104602 wxErlangというのがあるそうで。 Erlang勉強したいなぁ。時間が欲しい。

Concurrent Clean : コマンドライン実行

Cleanの配布版にはIDEが付属しているせいか、Cleanプログラムをコマンドラインでコンパイルしたことがないのですが、このたび、Linux版の配布版の中身をのぞいてみたところ、manファイルがあったので、手元のcygwinにインストールしてみたら、案の上、コマン…

TCP/IPのパケット流量コントロール

http://tabesugi.net/memo/cur/cur.html#240005 http://ee.lbl.gov/papers/congavoid.pdf 後で読むぞ!(← 「後で読む」より意思が強いことを含意)

Concurrent Clean : ポイントフリー & SKI

はじめまして、ポイントフリーゲームをしてみました。 問題は、[id:n314:20061022:1161504834]から借用。 f0 a b = h (g a b)まず、関数合成演算子を用意。(StdFuncモジュールに定義されているもの) (o) infixr 9 (o) f g :== \ x -> f (g x)これを使って、…

Concurrent Clean : ポイントフリーゲーム

次はこいつだ!! [id:ha-tan:20061021:1161442240] s f g a :== f a (g a) cons a aa :== [a:aa] ifNil [] _ = [] ifNil _ a = a groupn = s ifNil o flip (s (s o ((o) cons o flip take)) (s groupn o flip drop)) Start = groupn 3 [1..10]

Concurrent Clean : ABCマシン命令

http://cleanj.sourceforge.net/abc_inst.html 今日は、だいぶ進んだ。あと少しでひとまず完成。

Concurrent Clean : send + more = money

http://d.hatena.ne.jp/syd_syd/20061018#p1 まずは、ナイーブに。 Start = [(s,e,n,d,m,o,r,y) \\ s <- [1..9], e <- [0..9] | not (isMember e [s]), n <- [0..9] | not (isMember n [s,e]), d <- [0..9] | not (isMember d [s,e,n]), m <- [1..9] | not (…

history と !

いまさらながら、シェルのhistoryと ! が手になじんできた。 $ history | tail -n 20とやればよいことを最近気づいたから。

Haskell風シェル

があったらいいな。Clean風の方がいいけど。 $ take 3 [f \\ f <- dir | f like "*.txt"] a.txt b.txt c.txt $ map (\a = echo mv a a.bk) (take 3 [f \\ f <- dir | f like "*.txt"]) mv a.txt a.txt.bk mv b.txt b.txt.bk mv c.txt c.txt.bkみたいな

MVC

id:sumimさんがよだれをたらしていたので、メモ http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

にらめっこしているうちに

なんかちょっと分かりかけてきた気分がしてきた。

camlp4

camlp4ってOCaml専用なの? 他の言語にも応用できないの? ということで、調査開始。 - http://www.jmuk.org/~mukai/camlp4tut.html まず、チュートリアルからそれっぽいところを探す。 camlp4は独立したコマンドであることを知る。しかし、引数としてOCaml…

Environment models

simply typed lambda calculusのdenotational semanticsとして、environmental modelsとmodels based on cartesian closed categoriesがあるそうで、そのenvironmental modelsの簡単な説明を読んだのだけど、どこがどうsimply typed lambda calculusなのかよ…

Generic Haskell

のやつで、 mapE{|∀f::*→*.(Functor f)⇒t|}ρ = mapE{|t|}ρ(f:=liftE)というのがあったけど、Haskellってbounded quantificationって使えるの? - 「やつ」ってこれね。http://lethevert.blogspot.com/2006/10/verious-types.html

Concurrent Clean : Re: 型クラスと存在型

[id:lethevert:20061016:p1]では、ちょっと何がいいたいかよく分からなくなっていたのだけれど、 ::Number :== E.(Arith a): Number ((a -> a) -> Number) introNumber :: a -> Number | Arith a introNumber n = app where app f = introNumber (f n) appNu…

Concurrent Clean : 型クラスと存在型

ちょっと思うことがあっていろいろ試していたら、http://lethevert.blogspot.com/2006/10/what-does-this-program-means.htmlのようなバグ(?)を見つけたわけですが、 一番やりたいことはこういうことで、 ::Number | Arith a :== aあるいは、 ::Number :=…

C--

Cなんか勉強している暇があったら、C--の勉強をするべきだと思った。 google:C--]は検索性が悪いので、[google:C minusで検索すべし。