遅延評価された値を取るということを明示的に表したいのならいいライブラリがありますよ? http://t.co/EFthKaMx
2012-03-04 00:18:34https://t.co/6KlB5Uq8 call-by-name https://t.co/eZIPWuID call-by-need https://t.co/8hc83Zuo call-by-value
2012-03-04 00:23:55なんか中途半端にいじって飽きた(´・ω・) https://t.co/DXehRFSY 誰かScalazに詳しい人がきっともっと綺麗な書き方をみつけてくれるはず・・・?
2012-03-04 00:46:01あー Left1 と Left2 を or するから Left1 だけ使ってLeft2は捨てるっていう感覚か・・・
2012-03-04 00:50:47def hoge[E, A](e1: Either[E, A], e2: Either[E, A])(f: (A, A) => A) = (e1 |@| e2)(f)
2012-03-04 01:00:15assert(hoge("foo".left[Int], "bar".left[Int])(_ |+| _) === "foo".left[Int])
2012-03-04 01:02:30Scalaz で FirstOption にたいして dual したらそれってつまり意味的に LastOption と同じものな気がしたのだけれど違うのかな?型としては scalaz.Dual[scalaz.FirstOption[Int] とかになってしまうが・・・
2012-03-04 01:23:51@halcat0x15a https://t.co/2GumDknO SemigroupとZeroがあれば勝手にMonoidにもなるっていう感じでは?
2012-03-04 01:38:06@xuwei_k Firstに関してはSemigroupのインスタンスも定義されていないようなのでFirstが機能しているのかわからない・・・・
2012-03-04 01:42:38つまり Scalaz6 では FirstOption にたいして dual するとネストしちゃってちょっと無駄なことが起きているけれど、 Scalaz7ではそれがtagged type使って、改善されていたりするんです?
2012-03-04 01:56:39Tags.Dual(Tags.First("foo".some)) |+| Tags.Dual(Tags.First("bar".some)) は cyclic aliasing or subtyping involving type @@ とか言われてしまう。
2012-03-04 01:56:55