Concurrent, Clean の検索結果:

Concurrent Clean Updates

さっきメールを見たら、rinusがMLにClean 2.3について投稿していた。 次のバージョンは、Haskell 98のソースとCleanのソースを混ぜてコンパイルできるものになるらしい。 今年中にはベータ版をinternalに公開するできればいいな、ということらしい。

Concurrent Clean : CleanのParser Combinatorの資料

http://mailman.science.ru.nl/pipermail/clean-list/2008/003823.html これって読んだことあったっけ?

Haskell Hackathon

…スタは、前から捕捉はしていたけれど、話を聞いてちょっと興味を持ったかも。でも、その前に論文とか読んどかないとな。 そういえば、インライン化の話をしているときに、id:shinichiro_hさんから聞かれたYコンビネータをHaskellでどう書くの?という件は、この辺の記事が参考になります。 Concurrent Clean : Yコンビネータ Concurrent Clean : インライン化と停止性 あと、準備やら当日の運営やらやっていただいた方、ありがとうございました。

Concurrent Clean : Clean 公式 Wiki

とうとう公開された。 http://wiki.clean.cs.ru.nl/Clean まだ空なので、いろいろ書き込んで内容を増やしていって欲しいとのこと。

Concurrent Clean : Windows環境でエラーが起きると思ったら

http://mailman.science.ru.nl/pipermail/clean-list/2007/003528.html の件をすっかり忘れていた。

Concurrent Clean : Haskell : MonadFix

shelarcyさんにMonadFixについて教えてもらう。 http://www.kotha.net/ghc_users_guide_ja/syntax-extns.html 一意型で同じような概念は有用だろうか? とりあえず、一意型と組み合わせて使うことが多いlet before構文では、再帰的な束縛はできない。 しかし、Monadとは違い、let式中でも一意型を利用することは可能なので、それほど重要性は高くないかもしれない。 func f = let (a, f) # …

Concurrent Clean : CleanJ

関数呼び出しとかスタック操作とかの実装が進んで、はたと考える。 InstFuncの処理をどのように実装しよう? 今の実装では、後方参照せずに効率のよいコードを吐くことが可能な構成になっていないのでは? - もう少し進んだ。 InstFuncの形式をコードとして出力することを意識した構成に変更した。 InstFuncからコードに変換するルーチンの書き方も大体決まってきた。 今の問題は、ThunkとValueの区別をつけないで実装してしまっているところ。あらためて、これを区別する…

Concurrent Clean : Haskell : 遅延パターン

http://www.sampou.org/haskell/tutorial-j/patterns.html Cleanにはない。アズパターンとよく似た =: は、可反駁だ。 Start = ptn [] ptn ls=:[a:aa] = 1 は失敗する。

Concurrent Clean : rebranding

結局最後はRinusが登場して、Cleanの名前を変えるつもりはないよ、と言っておしまい。 それと同時に、Cleanの情報を集める公式のwikiサイトを立ち上げる予定があるということを発表していた。

Concurrent Clean : Re: 猫にもわかる OCaml 入門、その 1

http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20080215#p01 OCaml全然関係ないですが ちなみに、どこぞの何だか綺麗っぽい言語では、副作用を見なかったことにするのではなく、一回しか見ないと決めることで純粋さを保っています。たしかに一回しか見なければ、起こる現象は常に同じです。だって一回しか見ないんですから違いを比べるものがありません。なんだかヘリクツくさいですが、見なかったことにするよりは潔い気もします。…

Concurrent Clean : rebranding

http://d.hatena.ne.jp/lethevert/20080205/p1の話はまだ続いていて、Cleanの名前を変えたらいいんじゃないという話から、いろいろな名前の候補を挙げるという展開に。その中に何やら日本語が語源の名前がいくつか挙がっていて、何か不思議な感じ。 Kirei (a Japanese term for "beautiful/clean") Wa (a Japanese term for "peace/balance/total") Bi (a J…

Concurrent Clean: 評価戦略によるコンパイル結果の違い

eagerとlazyの2種類の評価戦略によってコンパイル結果がどのように変わるかを考えてみる。サンプルは次のCleanプログラムで、コンパイル結果はシンプルなスタックマシンを想定した疑似アセンブリで記述する。 test = add (add 1 2) 3 add x y = x + y eagerの場合は、addの呼び出しの前に引数をすべて評価してしまうので、次のような結果になる。 test: pushInt 3 // スタックに3を積む pushInt 2 pushInt …

関数呼び出し: Haskell, OCaml, Concurrent Clean

関数呼び出しの引数の取り扱いというのは、eagerとlazyの2種類あるわけですが、たいていの言語はどちらかだけを採用しているものなわけです。たとえばOCamlはeagerでHaskellはlazyです。 で、しかしそれだけでは不便なので、その逆を実現する機構をもっていたりします。たとえば、OCamlはlazyで、Haskellはseqとかがあります。しかし、これには限界があって、たとえばOCamlとかだと、http://d.hatena.ne.jp/KeisukeNakan…

Concurrent Clean : rebranding

…い言語なのに人気ないよねー」という話だった。「"rebranding"が必要なんじゃない?」と。 それに対して、「Cleanという名前が悪いのじゃないかな。検索に不向きだから」という返事があって、また別の人から「concurrent clean」とか「clean functional programming」とか書けばOKだよ、という指摘。 まあ、でも、世の中には、Cという最悪の検索ワードを持った言語が、未だに最強言語の一角を占めているわけで、名前のせいとも言えないのだよね。

Concurrent Clean : Cleanの関数呼び出しはデフォルト正格の方がいいんじゃないかなー

lazyがデフォルトであることのメリットってあまりないような気がする。大抵のところはどちらでもよくて、どちらでもよいならeagerの方が効率がよいんだよね。だから、lazyにしたいところだけそのように指定すると。 データ構造は関数よりもlazyが便利なことが多いのだけれど、やっぱりlazyにしたいところというのは特別なところだったりする。だから、これもデフォルトeagerにしておいて何か問題があるとは思えない。むしろ、うっかりlazyにして計算量が増えることの方が面倒。 そう…

Concurrent Clean : インライン化と停止性

http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20050724#p01 via: http://d.hatena.ne.jp/amachang/20080124/1201199469 前に調べようと思って忘れてた件にたどり着いた。で、次の論文をちょっと見てみた。 http://research.microsoft.com/%7Esimonpj/Papers/inlining/ data U = MkU (U -> Bool) rus…

Concurrent Clean: Japi

Philipposという方が、Japiというライブラリを作成している。 これは、CleanからJavaライブラリを呼び出すというものなので、クロスプラットフォームなGUIを作るために作っているらしい。 http://mailman.science.ru.nl/pipermail/clean-list/2007/003620.html ブツは今のところネット上には公開されていないみたいだけれど、メールでもらったものを見てみた所、CleanのプログラムをコンパイルするとJavaの…

Concurrent Clean : IO

http://d.hatena.ne.jp/ysugim/20071212 見落としてた。 Cleanは入出力を扱うのに一意型を使います。 入出力をStreamで扱うというのは、これですよね。昔のHaskellに使われていたと書かれていますが。 http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/haskell_io.html

Haskell, Concurrent Clean : Re: 正格性フラグを使ってseqを定義する

http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20071023#p01 http://twitter.com/jmuk/statuses/365608742 これにそれほど感銘を受ける理由がいまいち分からなくて、不思議な感じ。 :: T = T !Int と t :: !Int -> A って大した違いはなくて、前者のほうは T :: !Int -> T _T :: !T -> Int を同時に定義しているような意味なわけだから。 …

Concurrent Clean : 内包表記でのパターンマッチ

http://ja.doukaku.org/comment/2841/ via: http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071022#p01 内包表記でパターンマッチなんてできるんだー。 Cleanでもできるらしい。 uniqOnly xs = [x \\ [x]<-[[z \\ z<-xs | z==y] \\ y<-xs]] 知らなかった。

Concurrent Clean : print命令

http://cleanj.sourceforge.net/abc_inst.html#print print系命令は、printしか説明を書いていないが、system.abcにはそれ以外の命令も使われている。しかし、今までの所、Cleanコンパイラが出力したabcコードに含まれているものは見たことがない。

Concurrent Clean : CleanJ : build_r

http://cleanj.sourceforge.net/abc_inst.html#build_r build_rにB値の型情報が付いてないなー。

OCaml, Concurrent Clean, Java: 型からプログラムを生成する

http://itpro.nikkeibp.co.jp/article/COLUMN/20071005/283903/ む。 Genericsの定義の仕方に似てるなー。 - とりあえず、脊髄反射でCleanとJavaに翻訳 Java版はやや無理があるけど、一応ちゃんと動きます。出力形式をOCaml形式にしてますけど、Java式に出力することもできるはず。

Concurrent Clean : CleanJ : 整理

今問題になっているのは、スタックの表現方法なのだけれど、それを整理しておく。 Real型の扱い B-Stackやユーザー定義データに含まれるReal型の値は、2つのB値として取り扱われているのだけれど、これをJavaに置き換えたときには、double型の値を2つのintとして取り扱うことはできない。しかし、ABCコードのレベルでは、それがReal型の値であるかどうかを判断することは必ずしも容易ではない。(今の段階では、もう少し分析を進める必要がある) なので、当面は、Doub…

Concurrent Clean : コンパイラがHeap Fullになった

1つの関数が長すぎるんだよ。

Concurrent Clean : CleanJ : 他のモジュールの情報を参照する必要性

replace命令などを見ると、他のモジュールで定義されている情報を参照しなければ静的に取り扱うことはできなさそうだ。(後述) これは面倒だなぁ。 - あ、これは引数のa_size, b_sizeから必要な情報が取得できるのか。 それなら、他のモジュールを見る必要はない。

Concurrent Clean : CleanJ : ABCコード : Jasmin

ABCコードは型がないので、これをJavaコードに起こすには型を推論しなければいけない。で、これが結構面倒くさい。 JavaコードではなくJasminを使えば、型の推論を回避できるだろうかと考えている。*1 ただ、Jasminのドキュメントはちょっと少ない。すでに絶版になった次の本で作られて使われたものらしいので、これを買えばよいのかな?Java Virtual Machine (Java Series)作者: Jon Meyer,Troy Downing出版社/メーカー: …

Concurrent Clean : CleanJ : Re: セクションのグループ化

グループになるセクションは連続しているように思えるので、連続したセクションをグループにするというヒューリスティックでよいような気もする。とりあえず、それでやって、チェックロジックをいれておこう。 - 適当なチェックロジックをいれてサンプルデータを食わせてみたが、うまく行っているようだ。

Concurrent Clean : CleanJ : スタックの割り付け

について考え中

Concurrent Clean : ABC : .descs

.descsという命令が追加されている。 #ifdef NEW_DESCRIPTORS put_instruction_name (".descs", parse_directive_desc, code_descs ); #endifうーむ。