ちょっと古いので.NetでなくてCOMの話になっていますが、
純粋関数型言語であるHaskellの中からCOMオブジェクトを利用したり、COMオブジェクト自体をHaskellで書いたりできるよ、という話
"Calling hell from heaven and heaven from hell" [microsoft.com]が他ならぬMicrosoftから出ています。
容易に想像できるように、IO Monadの中で動作することで、純粋関数型言語でも矛盾なくIO動作を記述できることになっています。
純粋関数型、ではないわけか? (スコア:0)
完全だとすれば、.NETクラスのうち「副作用」がある奴も動くことになる。
→純粋関数型ではないことになる。
純粋関数型だとすれば、副作用がある奴は動かすわけにはいかない。
→.NETを完全に、とは言い切れない。
ということは今回のは純粋関数型じゃないんですね。
しょぼーん。
そういえば、LINQをマルチCPU(コア)に最適化すべく
並列実行可能な部分を自動的に抽出して処理してくれる
「PLINQ」ってのも、開発中だそうですね。
なにげにMSやるなあ…
#ライセンス的にはしばしば我々のテキであるMSだが、
#技術的な面(少なくとも先端っぷり)は見習ったほうがいいかも。
Re:純粋関数型、ではないわけか? (スコア:1)
Re:純粋関数型、ではないわけか? (スコア:2, 興味深い)
ちょっと古いので.NetでなくてCOMの話になっていますが、 純粋関数型言語であるHaskellの中からCOMオブジェクトを利用したり、COMオブジェクト自体をHaskellで書いたりできるよ、という話 "Calling hell from heaven and heaven from hell" [microsoft.com]が他ならぬMicrosoftから出ています。 容易に想像できるように、IO Monadの中で動作することで、純粋関数型言語でも矛盾なくIO動作を記述できることになっています。
というわけで、正格評価なF#だけでなく、遅延評価な言語も出してくれるといいのになあ。出るとすると、名前はH#とかになるんだろうか?
遅延評価(オフトピ) (スコア:2, 参考になる)
http://d.hatena.ne.jp/tanakh/20041010 [hatena.ne.jp]
Re:遅延評価(オフトピ) (スコア:2, 参考になる)
リンク先のtanakh氏のページを見てみました。さらにその先のリンク(shootoutのページ)がリンク切れのようなので、tanakh氏がどういう意図でその後のwcプログラムを書いたのかは良く分からないのですが、 高速化という観点で見ると、どうもtanakh氏はちょっと筋の悪い方向に進んでしまったように見えます(御本人が見て気を悪くされたらごめんなさい)。
元々、wcのような単純なバイト単位の処理は、むしろC言語のような「低級」な言語の尤も得意とする分野で、多くの「高級」言語ではオーバヘッド等で分が悪くなりがちです。
ところがそれをふまえて実際に試してみたところ、実はtanakh氏が試したものより、もうちょっと「素直」(?)なチューニングで、速度だけならC++やCよりさえ速い(?)Haskellコードを比較的簡単に得ることができました。というわけで、私はむしろ「wcほどC向きのプログラムでさえ、場合によってはHaskellに分がある」という印象を得ました。少なくとも、チューニングは「四苦八苦」というほどではありませんでした。(ま、Naiveに書くとCより遅いどころか、まともに動きさえしないのは確かなのですが。)
F#のストーリーで続きを書くとオフトピになりそうなので、日記 [srad.jp]の方にエントリを作りました。興味のある方はご覧ください。
Re:遅延評価(オフトピ) (スコア:0)
# 感想だけなんでAC
Re:遅延評価(オフトピ) (スコア:0)
リンク切れのやつをInternet Archiveから拾ってみました。
http://web.archive.org/web/20041013021651/http://shootout.alioth.debia... [archive.org]
http://web.archive.org/web/20041103192127/http://shootout.alioth.debia... [archive.org]
http://web.archive.org/web/20041103212640/http://shootout.alioth.debia... [archive.org]
# 元のサイトから