[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
506: 2020/09/13(日)08:12 ID:Tso/1gLY(1/3) AAS
ひ?何言ってんの
509: 2020/09/13(日)21:12 ID:Tso/1gLY(2/3) AAS
ふ?何言ってんの

可換モノイドの圏は集合の圏の
[部分圏](外部リンク:ncatlab.orgだが、
集合の圏ではない。したがって、分数モナドは、
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`は、
可換モノイドの圏でのモナド則は満たすが、集合の圏でのモナド則は満たさない。

質問への直接の答えは避けるが、可換モノイドの圏で考えないと
答えは得られない。
510: 2020/09/13(日)23:57 ID:Tso/1gLY(3/3) AAS
へ?何言ってんの

もしかすると、何言ってんのが前の投稿にかかっちゃったかもしれない。
何も考えずに、何言ってんのおじさんプレイを楽しんでいるだけなので、
気にしないでほしい。

ついでなので。
`return x = x / x`という選択は、集合の圏では、取りうる唯一の選択肢かも
しれない。自分も他に思いつかない。しかし、可換モノイドの圏では、
他にも選択肢がある。それも含めて、
[記事](外部リンク:ncatlab.org
に全て書いてある。他人事なので断言してしまうが、この記事より詳しい
分数モナドの解説は地球上には存在しない。しかし、悲しいかな、
Haskellの解説記事と同じで、

* わかる人にはわかるが、
* わからん人にはなるほどわからん

といういつものパターンになっていると思う。解説案件の宿命かもね。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s