challenge ciphertext

Archive

作ってみた→tell - MyMiniCity

普段棲んでいるドメイン下では書けないようなlambdaな事を綴る. あと草稿とかも置いたりするかも.

って言うか,ここの使い方ってよくわからないんだけど,「転載」指向のblogか?ここ?

「Add to friends」とか書いてあるボタンは割と無差別に押してます.

Thu Nov 5

直積を「作る」関手って作れないかな?

ranha:

発端

http://twitter.com/ranha/status/3318384175

http://twitter.com/ranha/status/3318729080

この発言は、

MakeProd :: 圏A → 圏B → 圏AxB(これが直積カテゴリ)

みたいなMakeProdを作れないかなーという事です。

これだと、2引数とったり、関手レベルでカリー化出来ないと行けないのでムムム。

それに対して

http://twitter.com/bonotake/status/3319122903

確かにコレなら!!

http://twitter.com/ranha/status/3319488961

ただしこれだと、元々直積したかった圏D,圏Eに加えて、圏Cと圏C→圏Dの関手、圏C→圏Eの関手を作らないといけないので大変そう。

http://twitter.com/ranha/status/3319828800

http://twitter.com/ranha/status/3319846689

「元々直積したかった圏D,圏Eに加えて、圏Cと圏C→圏Dの関手、圏C→圏Eの関手を作らないといけないので大変そう。」でやるとすると、多分こんな感じ?

http://twitter.com/bonotake/status/3319486001

これは良く分かりません・・・。

http://twitter.com/ranha/status/3319802225

http://twitter.com/bonotake/status/3319730332

2階圏の対象を1階圏として、そうすると射は事実上1階圏から1階圏へ、となりますが、そのとき射って関手になるのかなーとか。

あと、関手じゃないと実装が書けないみたいなイメージがあるんですけど、そうでも無い?

Catの関手書く時にしたって、arityは1だからどっちみち同じ問題に遭遇するんでは無かろうか・・・。

Cat x Cat → Cat の時は、でも、Cat x Catを「関手に任せるんじゃなくて」「定義に従って手でやれば良い」感じなのかな。でも対象が多く成ると結局定義に従って手でやるとかは無理な気がする。手でやるってその範囲はどこからよ、みたいな・・・。

Catの「射」として、実装を伴わせた「parametric polymorphism」な射を作って、そいつで「カリー化」すればいけそうな雰囲気ですけど・・・。