Haskell と Scala

Haskell な人が Scala について tweet してたので、色々聞いてみたりして、自分の TL でちょっと盛り上がったことのメモ
15
Kenji Yoshida @xuwei_k

@kazu_yamamoto たしかScalazにもStateモナドのようなものはあったと思います。自分はHaskellにあまり詳しくないし、Scalazやkenもほぼ使ってないので、ScalaでStateモナドの利点は自分もよくわかってません

2011-09-16 15:28:39
山本和彦 @kazu_yamamoto

Scala の for がモナド内包表記だというのは、背景の知識があれば10秒で分分かりますね。(リスト内包表記だといっても、僕には OK です。原理は同じだから。)

2011-09-16 15:28:54
しいたけ @yuroyoro

← 背景の知識が無かったので2年の間 for がモナド内包表記だという意味がわからなかった人

2011-09-16 15:30:39
Yasushi Abe @yasushia

@kazu_yamamoto ありがとうございます。私もまだ勉強中で方針とかはわかってないんですが、Scala界隈でHaskellの話題になるとScalaz、というような感じでしたのでちょっと感想が聞いてみたかったんです。木についての話題は最近ありましたね。動きがあるのかも

2011-09-16 15:30:45
山本和彦 @kazu_yamamoto

.@xuwei_k State モナドでは、状態を引数として渡していくのですが、それがプログラマーには見えないようになっています。書き換え可能な状態を持たなければ、並行/並列化する際に有利かもしれません。だた、そういうことを目指しているのか、よく分かりません。

2011-09-16 15:31:25
Kenji Yoshida @xuwei_k

@kazu_yamamoto ただScalazのような、他のScalaのライブラリに比べてかなりHaskellライクなライブラリが、海外でそれなりに使われて流行ってきているので、それなりに利点もあるのかなぁーと思ったり

2011-09-16 15:31:55
山本和彦 @kazu_yamamoto

.@yasushia 永続データ構造に関しては、Purely Functional Data Structure という本がバイブルです。10月から読書会も始まります。

2011-09-16 15:32:26
しいたけ @yuroyoro

あの辺は全部厨二力のなせる技で本当に実用的なのかわからんのです。

2011-09-16 15:32:37
しいたけ @yuroyoro

あ、実用的とか言っちゃうと燃えるか?

2011-09-16 15:33:04
Yasushi Abe @yasushia

って、木の話はscala会議でkmizuさんが発表してたんだっけ?

2011-09-16 15:33:05
Kenji Yoshida @xuwei_k

← 未だにモナドをなんとなくしか理解してなくて、人にちゃんと説明できるレベルじゃない人

2011-09-16 15:33:31
山本和彦 @kazu_yamamoto

.@xuwei_k Scala のプログラムから var をなくせば、やっぱり並列化しやすいんじゃないですかね。あと、バグも入り込みにくくなるでしょうね。

2011-09-16 15:34:40
Yasushi Abe @yasushia

http://j.mp/oT5ssi Functional Data Structures in Scala あったのか。古いからもう動かないだろうな。

2011-09-16 15:35:08
Kenji Yoshida @xuwei_k

Haskeller にもっとScalaを知ってもらって、「正しく論理的に」disってほしいわけで

2011-09-16 15:36:10
山本和彦 @kazu_yamamoto

Haskell のコードを Scala に変換して、JVM で動く基本正格評価な Haskell を作るツールが出てくるかも。。。

2011-09-16 15:37:18
Yasushi Abe @yasushia

@kazu_yamamoto たしかそれについて実装するとかいくつか実装した、という話題が最近あったんですが、どこでだったか思い出せなくて。

2011-09-16 15:37:36
Yasushi Abe @yasushia

あ、やっぱりkmizuさんのスライドだった http://j.mp/rjAcz1

2011-09-16 15:39:00
Yasushi Abe @yasushia

Purely Functional Data Structures はPDFで以前挫折したけど、もしかしたら今ならもうすこし理解できるだろうか。

2011-09-16 15:41:54
Kenji Yoshida @xuwei_k

というわけでみんな「implicit parameter つかえば、Haskell の type class エミュレートできるぜヒャハッー 」っていう odersky先生の有名な論文読みましょう :) http://t.co/9SMPHodT

2011-09-16 15:51:34
Kenji Yoshida @xuwei_k

限界近くまで達するとコンパイラのクラッシュに遭遇するという http://t.co/bKBUS067 http://t.co/UAFgUjIK http://t.co/2EyzTlIn RT @cpp_akira 最近のMBさんはScalaの限界を超えたりしてるんだろうか。

2011-09-16 16:29:12
kmizu @kmizu

@kazu_yamamoto 書けますね。List(...) パターンは、可変個の要素にマッチさせられる(ライブラリ定義の)パターンで、 通常は 他の関数型言語と同じように、 x::xs と Nil で書きます。

2011-09-16 21:17:17
山本和彦 @kazu_yamamoto

.@kmizu すると、本の例題も Nil で書くべきでしたね。

2011-09-16 22:38:45
kmizu @kmizu

@kazu_yamamoto そうですね。なんでそうなってなかったのか、はちょっと覚えてないのですが…。List()パターンであっても不都合はそれほど無いのですが、可変長パターンで使うのが通常の用法のはずなので、ちょっと違和感はあります。

2011-09-16 22:59:12
kmizu @kmizu

@kazu_yamamoto その辺の永続データ構造の重要性は、作者のOderskyもScala Daysでさんざん強調していましたね。実際、Scala 2.9の並列コレクションは永続データ構造でこそ本領を発揮するものですし。

2011-09-16 23:01:47
kmizu @kmizu

@kazu_yamamoto 遅レスですいませんが、RBTreeはScala標準で入ってます。 http://t.co/SI8QGYuC AVLは実装が面倒な割にはそれほど憂いしか微妙なので、入っていないような気がします(憶測ですが)。あと、hash trieも標準であったり。

2011-09-17 01:30:23