Concurrent%20Clean の検索結果:

Concurrent Clean : rebranding

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

Concurrent Cleanに関する求人

なんじゃこりゃー どこらへんにConcurrent Cleanが関連しているのですか?

Concurrent Clean : Clean Wiki

しまった。 Concurrent Cleanという文字を入れておかないと、検索でヒットしない!

Concurrent Clean : Transputer

CleanがConcurrent Cleanだった時代のTransputer向けのコンパイラって、ダウンロードできたんだ。 http://clean.cs.ru.nl/Download/Old_Clean_Versions/old_clean_versions.html

Concurrent Clean : Esther

以前より探していたFamkeを使ったシェルですが、下の論文によると、Esther(エステル)という名前が与えられているようです。 http://citeseer.ist.psu.edu/plasmeijer05functional.html そして、Hildeライブラリをもう一度よく見ると、Esther.prjというファイルが存在していることに気づきました! なんで見落としていたんだろ。これが、Famkeを使って作られたEstherという名前のシェルそのものです。 - 早速コ…

Concurrent Clean : Famke

citeseerで論文サーフィンをしていたら、興味深い論文が!!! http://citeseer.ist.psu.edu/642407.html これは、Cleanで 強い型付けの関数型オペレーティングシステム を作ろう!という論文。そして、そこで作られているOSの名前が Famke(ファムカ) です。どうもよく読むと、OSといってもカーネルからすべて書き上げるのではなく、WindowsベースにFamkeを作成するという構成のようです。 Famkeの機能は、 インタラクティ…

Haskell : 1 + 3.4 = ?

[id:mr_konn:20061004:1159969890]より OCamlは1と3.4を足せません。Haskellは足せます。それは型クラスがあるからです。 ってホントかよ Hugs> 1+3.4 4.4 Hugs> let a = 1 in let b = 3.4 in a + b 4.4ホントだ・・・ うーむ。気持ち悪い、と思ってしまうのは何かに毒されてしまったのだろうか? ちなみにConcurrent Cleanなら、当然、型エラーになります。

Haskell : Monad : 天啓

あ、なんか、分かった。 要は、モナドっていうのは、インタプリタ(動的言語)なんだ。 って、だのもいにそう書いてあるじゃん・・・ - そういう意味では、Concurrent Cleanのは、コンパイラなんだな。 - って、また変な袋小路に入っているような気がしないでもない・・・

Haskell : モナドはややこしい

私の頭ではついていけません! Concurrent Cleanの世界が性にあっている気がする。 というのは、まあ、アレなのですが、IO回りの実装はCleanよりもややこしそうで、その分、処理系を作るのは大変そうな気がしました。

L.L.Ring

昨日の書き忘れ - Pythonのone linerはいかれててうけた。それにしても、Pythonでone linerと言った瞬間にその面白さに気づけなかったところに、己の未熟さを感じる。ところで、HaskellやConcurrent Cleanもインデント主義だけど、Pythonほどインデント至上主義じゃないので、one linerにすることはもっと容易。 Kahuaは、「戻る」機能まで継続ベースということを聞いて、そりゃあたしかに、パフォーマンスに深刻な影響が出ますね、と…

L.L.Ring

に行きました。 さかいさんとid:soutaroさんに突撃で声をかけてみました。 あと、くさかべさん(id:kusakabeyouji?)とid:hyoshiokさんにも遭遇。 id:sumiiさんは、見かけたので突撃しようかと思ったのですが、他の方と話をしていたので、ひるんでいるうちに人が集まってしまって突撃しそびれました。 - Haskellな方は一段と変わった方が多いなぁとか、OCamlやHaskell(静的型チェック)な人とその他の言語(動的型チェック)な方はプログラ…

Types and Programming Languages (The MIT Press)

昨日、20章「Recursive Types」を読みました。ページ数は、およそ14ページ。 面白かったのは、'equi-recursive'と'iso-recursive'という2つのアプローチがあるという話。 - 話は戻るが、13章「References」、14章「Exceptions」のあたりで説明されているエンコーディングの方法は、OCamlなんかでは陰にSyntaxに織り込んでしまっているのに対して、Concurrent CleanやHaskellなんかでは陽に書き下…

細かいチューニングが大切なとき「も」ある話

「痛い」とか言われてムと思ったので、一見バカバカしいチューニングでも決定的な意味があること「も」あるということを書いておこうと思った。 - 最近のハードウェアは早くなったといいながら、メモリアクセスは結構遅いというのを、最近どこかで話題になっていたような気がするのですが、 私が今すぐ思い出せるところでは、OCamlの配列のサイズ制限の話題の中で、 http://caml.inria.fr/pub/ml-archives/caml-list/2006/05/6550c9399e…

Concurrent Clean : 一周年

私がConcurrent Cleanに出会って、ちょうど1年経ったようです。 去年の6月30日の日記 → [id:lethevert:20050630] それに先立つ6月6日([id:lethevert:20050606])に、OCamlとHaskellの記述があります。 私の場合、コンピューターサイエンス系の大学の出身ではないので、それまでは関数型言語の存在そのものを知らなかったので、この出会いには感慨深いものがあります。 今振り返ると、1年で結構歩いてきたような気がします…

L.L.Ring

http://ll.jus.or.jp/2006/event/session ここにConcurrent Cleanが並ぶほど知名度が上がる日は来るだろうか? ところで、Gaucheって、言語名じゃないでしょ?

Todo管理ツール : Delphi

http://www.geocities.jp/lethevert/softwares/otherSofts/todo_20060531.zip なんとなく、Todo管理ツールが欲しくなったので、作ってみました。Windows専用です。これだけConcurrent Cleanのことを書いているにも関わらず、使ったのはDelphiです。だって、Delphiで作るほうが簡単なんだもん・・・ で、何でこんな、「プログラムの勉強を始めてから、初めて実用に使えるソフトを作ってみました」…

ミドルグラウンド!!

なんか、素敵過ぎる議論が展開されていますね。特にid:sumiiさん、お疲れ様です。 ところで、 ただ、このミドルグラウンドにコミットする人が増えてくれたらなと思います。たぶん論文を書くチャンスはほとんど無いし、「言語処理系を売って行く」というビジネス自体は行き詰まってる。このリスクに見合うものがあるとすれば、「関数型言語をレバレッジにすれば他の誰にも作れない新しい製品を世に出せるかもしれない」という希望ですかね。 私は、まさにここにコミットしていきたいと思っているんですね。…

舌の根もかわかないうちから

ところで、先日のオブジェクト指向に否定的な記事を書いたそばから、Cleanとオブジェクト指向の関係をまた考えているのですが、それはこのBlogの仕様ですから気にしないであげてください。このBlogは、そのとき、その瞬間に考えていることの記録の集合ですから。 それから、「オブジェクト指向」という言葉をなぜ使うかというと、この言葉が、現場のプログラミングの世界とつながるキーワードだと考えているからであって、この言葉が適切に問題を捉えているからではないということも、ご注意ください。…

成分解析

Concurrent Cleanの成分解析結果 : Concurrent Cleanの68%は嘘で出来ています。 Concurrent Cleanの16%は言葉で出来ています。 Concurrent Cleanの15%は呪詛で出来ています。 Concurrent Cleanの1%は愛で出来ています。 99%が嘘と呪詛の言葉・・・。そして、1%の愛?

純粋関数型とオブジェクト指向

純粋関数型とオブジェクト指向はやっぱダメなんじゃないかと思うこの頃です。オブジェクト指向をなんと解釈するかによってなんとでもなるので、かみ合った議論がしにくいですが。 こう考えるのは、SICPの影響だと思うのですが、純粋関数型とオブジェクト指向は「状態」を扱う際のアプローチに根本的な違いがあって、根源的なところで整合性が取れないのではないかと思っています。つまり、オブジェクト指向では、状態をオブジェクトの内部に持ち、代入によって書き換えることで状態の変化を表現するのに対し、純…

OCaml : 正格評価 : 高階関数とリストによる抽象化

Concurrent Cleanでは、次のようなプログラムは普通ですが、 Start = sum $ map (\x = x*x) $ filter isOdd [0..100]遅延評価では効率的なこういうプログラムは、正格評価では非効率になるのですが、今日、これを逆にしたら、正格評価でも効率的なプログラムになるのではないかと思いました。 Start = [0..100] $ filter isOdd $ map (\x = x*x) sum直感的に、これは正格評価で効率的だ…

『「僕の考えるブログ文章術」について』について

最近の私にとって、ブログとは、「大学」みたいな感じになってます。 「Concurrent Clean」という専門領域を持って、「関数的なアンテナ」というゼミに所属して、「はてな」という大学のインフラを使わせてもらって、 ブログは、研究日誌だし、レポートだし、コミュニケーションだし、成績表だし、 ・・・だから何って、そういう人もいるってことです。

多値関数

[id:m-hiyama:20060209:1139450736]さんのところで、多値関数に関する議論が進んでいる。 多値関数というと、コメント欄でも指摘されていますけど、Perlがありますね。 sub f { return $_[0]*2, $_[1]*2; }みたいに書けば、引数を2つ取って、それらを2倍して返すという "2-in 2-out" の関数になります。Rubyも同じように書けるようです。(一方、PHPは多値を返すにはarrayで包んであげる必要があるようです。…

多値関数(2)

[id:m-hiyama:20060210:1139532309]で、多値がなければ成立しない例が知りたいということなので、Concurrent Cleanの例を説明しておきましょう。 CleanはHaskellに似た純粋関数型言語で、非正格な評価戦略をとっているため、実行順序がコードの文面とは異なる可能性があります。そのため、特に入出力など評価順序が重要になるケースでは、特別な対応が必要になります。 Haskellでは、これをモナドで取り扱いますが、Cleanでは、一意型属…

Javaに文句をいう人が、Haskellの文法を見たら、きっと卒倒する。

[id:lethevert:20060204:p3]について突っ込みが入ったので、補足をば。(文法というと用語法を間違っているのは違いないと思うのだけれど、その辺は愛嬌で。) 突っ込みの内容については、それ以前のところにもっとたくさんいろいろあるんですよ。 たとえば デフォルトで遅延評価 デフォルトでカリー化 クラスが「普通」のクラスと意味が違う 副作用を扱うのに呪文のような御託を理解しなければいけないらしい オブジェクト指向じゃない エラーメッセージが理解不能 try ..…

SICP : Ex1.44 : Java

[id:lethevert:20060126:p1] 関数を平準化するSmooth関数を作る問題。 Javaでカリー化を前提とした高階関数が書けるということを確認するという問題でもある。 [id:lethevert:20060127:p3]で作ったIterクラスを総称化したクラスに対して、Smoothクラスを適用して、N階Smoothクラス(nthFoldSmooth)を自動生成します。 さすがにConcurrent Cleanのコードと比べると冗長ですが、トリッキーなコード…

SICP : Ex2.06 : Java

[id:lethevert:20060113:p1] チャーチ数を表現する問題。 クラスという余計な装飾がついたせいで、意味的には分かりにくくなってしまったかも。動作やできることはScheme版やConcurrent Clean版と同じ。 手続きを抽象化して、抽象化した手続きに対する手続き(つまり高階関数)を書くというテクニックは、関数型言語で非常に有用なプログラミングテクニックだが、Javaでも同じことができるということだ。 ちなみに、テストコードには、加算を使ったケースと…

Concurrent Clean : Concurrent?

このダイアリで、いつもConcurrent Cleanと書いていますが、実はConcurrentな側面がどうなっているのか追究したことはないのです。もちろん、意識して利用したこともないし、ちゃんとConcurrentかどうか確認したこともないです。わざわざConcurrentを付けているのは、はてなキーワードにヒットさせるためだったりします。 実は、CleanのVMにはABCマシンとパラレルABCマシンという2種類があって、 ABCマシン Clean パラレルABCマシン C…

Javaと関数型言語

最近、Javaのコードをダイアリによく書いているのですが、それは、Javaって今まで思っていたよりもずっと記述力が高いのではないかと、思うようになったからなんです。まだいろいろ試しているところなんですが、Java(特にJDK1.5)は、関数型言語と同程度の記述力があるのではないかと思っています。 ということで、それを確かめてみるために、SICPの問題をConcurrent Cleanだけでなく、Javaでも解いていこうと思います。

ISWIM : SECD machine : P.J. Landin

クロージャの一件で、Landinさんという名前を知ったのだけれど、この方について調べてみたら、面白いことに行き当たりました。 (下の論文には、クロージャ(閉包)という言葉をLandinが使ったという記述があります。 http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/funarg/funarg.html) P.J. Landinさんは1960年代にISWIMというプログラミング言語とそのバーチャルマシンとしてSECDマシンと…