[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
506: デフォルトの名無しさん [] 2020/09/13(日) 08:12:50.88 ID:Tso/1gLY ひ?何言ってんの http://mevius.5ch.net/test/read.cgi/tech/1581326256/506
509: デフォルトの名無しさん [] 2020/09/13(日) 21:12:53.92 ID:Tso/1gLY ふ?何言ってんの 可換モノイドの圏は集合の圏の [部分圏](https://ncatlab.org/nlab/show/subcategory)だが、 集合の圏ではない。したがって、分数モナドは、 Haskellの`Monad`のインスタンスにならない。 例えば、次のような実装を考えると、 ``` code newtype Bunsu a = Bunsu { runBunsu :: (a, a) } deriving (Show, Functor) instance (Eq a, Semigroup a) => Eq (Bunsu a) where ... instance (Semigroup a) => Semigroup (Bunsu a) where ... instance (Monoid a) => Monoid (Bunsu a) where ... instance (Monoid a) => Group (Bunsu a) where ... bunsu_pure :: (Monoid a) => a -> Bunsu a bunsu_pure = ... ``` 縛り`Monoid a`が邪魔をして、`Bunsu`は`Applicative`のインスタンスに できない。それでも、通常の関数の形でなら`bunsu_pure`と`bunsu_join`は 書けるので、モナド則のチェックはできる。ただし、`Bunsu`は、 可換モノイドの圏でのモナド則は満たすが、集合の圏でのモナド則は満たさない。 質問への直接の答えは避けるが、可換モノイドの圏で考えないと 答えは得られない。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/509
510: デフォルトの名無しさん [] 2020/09/13(日) 23:57:07.12 ID:Tso/1gLY へ?何言ってんの もしかすると、何言ってんのが前の投稿にかかっちゃったかもしれない。 何も考えずに、何言ってんのおじさんプレイを楽しんでいるだけなので、 気にしないでほしい。 ついでなので。 `return x = x / x`という選択は、集合の圏では、取りうる唯一の選択肢かも しれない。自分も他に思いつかない。しかし、可換モノイドの圏では、 他にも選択肢がある。それも含めて、 [記事](https://ncatlab.org/nlab/show/Grothendieck+group+of+a+commutative+monoid) に全て書いてある。他人事なので断言してしまうが、この記事より詳しい 分数モナドの解説は地球上には存在しない。しかし、悲しいかな、 Haskellの解説記事と同じで、 * わかる人にはわかるが、 * わからん人にはなるほどわからん といういつものパターンになっていると思う。解説案件の宿命かもね。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/510
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s