Scala標準とScalazのFuture

3
m2ym @m2ym

Twitter の util-core が Scala.js に対応してなくて scala.concurrent.Future を使わざるを得ないのはかなりつらい

2016-03-02 23:21:50
m2ym @m2ym

Scala.js で Web クライアントを作るにはまともな Future がいる気がするけどみんなどう対応しているのだろう…

2016-03-02 23:22:56
m2ym @m2ym

scala.concurrent.Future の最大の問題は命令列を作る箇所と実行する箇所を分離できないために、前者に ExecutionContext が入ってきてしまい設計がぐちゃぐちゃになること

2016-03-02 23:25:12
m2ym @m2ym

どないしたらいいねん

2016-03-02 23:25:19
m2ym @m2ym

しばらく考えた結果、 scala.concurrent.Future は使ってはいけないやつだと判断した

2016-03-03 00:07:52
m2ym @m2ym

scalaz.concurrent も基本は scala.concurrent.Future だから欠点はそのまま引き継いでいるっぽい

2016-03-03 00:09:30
Kenji Yoshida @xuwei_k

@m2ym "命令列を作る箇所と実行する箇所を分離" のあたりの話なら、scalazのものはそこがある程度標準のものと違うのが特徴の一つなので、微妙に勘違いされてるかもしれません? とは言っても、色々と欠点というか議論はありますが github.com/scalaz/scalaz/…

2016-03-03 00:24:38
Kenji Yoshida @xuwei_k

@m2ym そもそもこういうの github.com/scalaz/scalaz/… があるべきでは?なども

2016-03-03 00:25:10
m2ym @m2ym

twitter/util-core を Scala.js に対応させるのも大変そうだし自作フラグかな…

2016-03-03 00:27:26
m2ym @m2ym

@xuwei_k ありがとうございます。見てみました。これには Haskell で言うところの return がないように思うのですが、どうでしょうか。

2016-03-03 00:33:57
m2ym @m2ym

@xuwei_k これは Haskell の forkIO のようなものでしょうか

2016-03-03 00:36:42
Kenji Yoshida @xuwei_k

@m2ym scalazのFutureでのreturnに相当するもの自体は、一応以下のように定義はされていますね。定義が適切かどうか、Haskellerからみて変じゃないか?はわからないですが github.com/scalaz/scalaz/…

2016-03-03 00:38:23
Kenji Yoshida @xuwei_k

@m2ym たぶんそれに近いものだと思います (Haskellあまり詳しくないので自信ないですが・・・)

2016-03-03 00:39:27
m2ym @m2ym

.@xuwei_k scalaz.concurrent.Future の実装を良く読んでみると scala.concurrent.Future とはまったくの別物になってますね。コンパニオンオブジェクトの apply が似たような形をしていたので勘違いしました。

2016-03-03 00:47:33
m2ym @m2ym

@xuwei_k これなら ExecutionContext に依存しない形でモナディックに非同期処理を合成していけそうな気がします。ただ、 Scala.js での利用を考えているので、今は残念ながら使えそうにないですorz

2016-03-03 00:50:19
Kenji Yoshida @xuwei_k

そういえば、さきほどリリースしたscalazのscalajs対応、concurrentモジュールは(javaのクラス大量に参照してて)できないというか無理にやっても使い物にならない可能性高いので、モジュール丸ごとやってません、って書くの忘れた…(他のモジュールは全部やりました)

2016-03-03 00:51:44
m2ym @m2ym

@xuwei_k それならすごく便利だと思います。なんか akka が微妙すぎてゲフンゲフン

2016-03-03 00:51:45
m2ym @m2ym

利用者がたくさんいるから安心!と思って Scala やりはじめたけど余裕で罠があるしこわい

2016-03-03 00:53:58
Kenji Yoshida @xuwei_k

.@m2ym 標準のが"命令列を作る箇所と実行する箇所を分離"出来てない欠点あるのでなんとかしたい件は、akkaのコアコミッターの人も前から言ってて、なにか最近書いてる github.com/viktorklang/bl… ので、次の2.12で何か新しいモノが入る可能性はあります

2016-03-03 00:57:45
m2ym @m2ym

ExecutorService を Sequential にしてなおかつ IO とか epoll しなければ大丈夫そうだけれども

2016-03-03 00:58:24
Kenji Yoshida @xuwei_k

@m2ym あ、"なんとかしたい" のを前から言ってるのは事実だけど (例 twitter.com/viktorklang/st… ) よく読んだら、そのblog中だと(まだ?)そのあたりの話あまり出てきてないかもしれません

2016-03-03 01:00:22
Lgd. Viktor Klang @viktorklang

@runarorama and, would you be interested in working with me and others to propose a Task for scala.concurrent?

2015-06-20 03:15:41
m2ym @m2ym

@xuwei_k 斜め読みした感じでは該当の話題はないようでした。ともかく、近い将来改善されるとうれしい限りです。とはいえ後方互換性などを考えるとなかなか大変そうです

2016-03-03 01:05:29