Scala PartialFunction can be Monoid ?

stackoverflow素晴らしいですね
3
ると @cocoa_ruto

scalazでPartialFunctionはorElseをapppendとしたMonoidじゃない?

2012-01-30 17:00:15
Kenji Yoshida @xuwei_k

そして、これがたまたま入ってないのか、何か理由があるのか気になる。自分が小一時間考えた限りは、Monoidの性質満たす気がするけど https://t.co/KfBBdk7q stackoverflowとかで質問してみようか

2012-01-31 01:04:30
Kenji Yoshida @xuwei_k

I posted a question "Scala PartialFunction can be Monoid ?" http://t.co/FdeyXEKJ :)

2012-01-31 02:21:05

自分でつくった PartialFunction の Monoid (っぽいもの)を Scalaz の既存のテストを真似て確かめようとしたら、MonoidのテストしたいだけなのにEqualが必要で、Equalのinstanceがなくてあばばばばばばってなったので ↓

ssmylh @ssmylh

@xuwei_k I think Equal instance is required to check “associative law”. https://t.co/fvi720lP

2012-01-31 11:24:37

最初の milessabin さんの回答に対して↓

Kenji Yoshida @xuwei_k

あれダメなのか・・・?(´・ω・`)いろんな意味で全然理解出来ないな・・・もう一回ゆっくり考えよう http://t.co/FdeyXEKJ

2012-01-31 04:37:55
akihiro @akihiro4chawon

@xuwei_k ナイスな質問と名回答ですね。少なくとも3種類のモノイドがあることが明快に示されていて参考になりました。同型写像で議論しやすい領域に変換する点とか素晴らしいですね。

2012-01-31 12:16:26
Kenji Yoshida @xuwei_k

@akihiro4chawon 圏論的知識 and 英語能力(どちらかというとこっちが) の不足で、というかretronymさんのほうの回答はまだ時間なくてまともに読めてないので、まったく理解できてません・・・(´・ω・`)

2012-01-31 12:21:00
akihiro @akihiro4chawon

直接言及しているのは、first と last の二種類だけど、同型写像を使うという方針が示されているので、戻り値がモノイドである場合に、第3のモノイドができることがわかる。

2012-01-31 12:22:31
akihiro @akihiro4chawon

@xuwei_k 英語とか大変ですよね。PartialFuntion の代わりに、戻り値がOptionの関数で考えると、xuwei さんの提案は (orElse ) はFirstOption の場合に相当すると言ってくれてる、と私は理解しました。

2012-01-31 12:26:21
ねこはる @halcat0x15a

FirstOptionは7だとTagged使ってるのか。

2012-01-31 12:52:07
Takashi Miyamoto @tmiya_

#Coq Proof for "PartialFunction is Monoid" http://t.co/mhTVMsPT QT @xuwei_k I posted a question "Scala PartialFunction can be Monoid ?"

2012-01-31 13:54:50
ねこはる @halcat0x15a

証明付きリプライ……!

2012-01-31 14:00:46
ssmylh @ssmylh

http://t.co/SZLBjMGq は結局、PartialFunction[A, B]はA=>Option[B]と同型だから、A=>Option[B]がモノイドな事を示す→Monoid[Z]が与えられた時にMonoid[A=>Z]が作れるので、この時にA=>Zはモノイド→

2012-02-01 00:45:03
ssmylh @ssmylh

Option[B]がモノイドならばA=>Option[B]もモノイドと言えるのでOption[B]のモノイド例を3つ示す。で、 @xuwei_k さんの考えは2つ目って感じ?かなぁ。英語難しい><

2012-02-01 00:46:55
Kenji Yoshida @xuwei_k

Haskellには、ScalaのPartialFunctionにあたるものが直接的にはない(?)だろうし、OptionとLazyOptionの違いとかそのあたりもデフォルト遅延評価なのでScalaと違ってくるし、Haskellを参考にしようとしても色々違っていて難しい

2012-02-01 00:53:58
Kenji Yoshida @xuwei_k

そのために、FirstとLastと2種類のOption があるのか https://t.co/G1A5k2Py Monoid自体は可逆性を持つとは限らない(a・b≠b・a)から、結合の順番によって違う種類のものができると

2012-02-01 01:04:45
Kenji Yoshida @xuwei_k

こんな発言したけど https://t.co/Dq8U0rDB FirstとLastをMaybeのNewtypeとして定義するって完全にHaskellと同じじゃないか https://t.co/KJSip8vS Haskell由来・・というか既にあったから命名規則は踏襲したのかな

2012-02-01 01:35:53