scalaz 7 の example って古いやつもちゃんと動くのかなぁーコンパイル通るかどうかしかチェックしてないよなー => とりあえず全部のmainを順番に全部に走らせられるようにsbtファイル修正 => 予想通りassertが引っかかるexampleがみつかる(イマココ
2012-11-29 13:42:04https://t.co/BarkNW7f exampleのproject内でやろうとしたらdiscoveredMainClassesとsourceGeneratorsが循環参照してできなかったので、わざわざ別プロジェクトつくったけど、誰かこれをもっと短く綺麗にしてくれませんかね
2012-11-29 13:45:31https://t.co/TkP20INs 自分で原因探ってみるつもりだけど、すぐには解決しなそうなので issue 登録 #scalaz
2012-11-29 13:57:23git bisect して原因探ろうとしたら、途中でscalazのsbtのbuildファイル自体がコンパイル通らない自体に遭遇して萎えた(´・ω・`)ェ・・・ https://t.co/qbYva1Ws
2012-11-29 14:02:25https://t.co/ZmK2tv6H Iterateeのheadとpeekって型まったく同じっぽいけど何が違うんだろう、exampleでも同じ結果期待してるし。そもそもさっきのバグ探るためにIteratee読んでるけど、未だにあまりIterateeわかってないな・・・
2012-11-29 14:51:36@xuwei_k scalazは知らんけど、一般的には、headは、取り出しでpeekは、「ちょっと覗いて戻す」だった気がす。C++のSTLとか。
2012-11-29 14:56:56たとえばList(1,2)を対象にIteratee.headするとChunkとして残るのはList(2)だけど、peekの場合はList(1,2)のままとかそんな感じだったような
2012-11-29 15:01:19本体のbugなのか、exampleが悪いのかっていうところからわからない(´・ω・`) https://t.co/1ukZtUcK ここをdefにすれば通るけど。 scalaz.iteratee.EnumeratorT がそもそもimmutableなのかどうかっていうところが
2012-11-29 15:38:55headで1が取り出されて残りの入力がIterator(2,3)。この状態でlengthすると2が結果になり、続いてpeekすると2が結果になる。うーん、正しい気がする。ので、exampleの期待値がミスしてるんじゃないかなぁ。コードで確認とってないのでアレだけど。
2012-11-29 15:57:13.@pocketberserker でもそう考えると、今度は上の https://t.co/1CWYl6oU enumStreamの部分がおかしいことになってしまうような?
2012-11-29 16:02:23enumStreamもenumIteratorも返ってくる型は同じ→でもenumIteratorで作成したEnumeratorTのほうだけmutableであるかのような挙動をしている→mutableかどうかは型で判断できないの?やっぱりenumIterator自体がバグってる?
2012-11-29 16:06:50enumIteratorの仕様がわからない…mutableな動きしてるしlengthしたらデータ全消費してしまうし、なんじゃこりゃ
2012-11-29 18:04:20@pocketberserker length呼んだらデータ消費するのはscala自体のIteratorの仕様なので、length呼んでもデータ消費せず繰り返し利用できるようにするには、内部的に一度Listなどに変換して保持しておく必要があると思うんですけどそれをやってないので…
2012-11-29 18:11:24@xuwei_k なるほどです。mutableなデータに対してIterateeって使ったことがないので、仕様を把握するのが難しいですね…。
2012-11-29 18:22:22mutableに振る舞うのがだめなら enumIterator のメソッドが今の実装方針じゃ全面的にだめで、そもそもenumIteratorが存在するべきではないか、もしくはすぐにiteratorをtoStreamしてそれをenumStreamに渡すとかそういうことですかね?
2012-11-29 18:44:02