#Scala で高カインド型が共変/反変になってるとき

このあたりよくわかってないので、だれか教えて下さい
2
しいたけ @yuroyoro

trait NaturalTransformation[-F[_], +G[_]] extends AnyRef

2012-08-13 22:32:26
しいたけ @yuroyoro

高カインド型に共変/反変ついてるときの挙動がわからん

2012-08-13 22:33:02
ねこはる @halcat0x15a

@yuroyoro ~>に反変、共変が付いてるのは=>と同じ理由なのでは。

2012-08-13 22:44:58
しいたけ @yuroyoro

@halcat0x15a うん。それは分かる。 NaturalTransformation[List,Option]って型があったとき、NaturalTransformation[Seq,Some]がサブタイプになれる?

2012-08-13 22:46:09
ねこはる @halcat0x15a

@yuroyoro なのではー さわれてませんが。

2012-08-13 22:48:04
しいたけ @yuroyoro

@halcat0x15a 今度試してみる。なんか、あんまり見ない書き方だったので。

2012-08-13 22:48:50
Kenji Yoshida @xuwei_k

@yuroyoro @halcat0x15a ちょっとためしたけど、よくわからなかったです・・・ https://t.co/nK7J6kTw

2012-08-13 22:56:12
ねこはる @halcat0x15a

@xuwei_k GenericConsもリストと同じ理由で共変な感じですかね?

2012-08-13 22:59:48
ねこはる @halcat0x15a

scalaz.typelevel良くなってそう。

2012-08-13 23:04:32
Kenji Yoshida @xuwei_k

@halcat0x15a (いつの頃と比べてるのかわからないけど) typelevel は、ほとんどファイルの最終更新が 3〜4ヶ月前とかで、それほど最近は更新されてないような http://t.co/db2ozfj0

2012-08-13 23:09:54
拡大
ねこはる @halcat0x15a

@xuwei_k ですね。 みてたファイルが3日前更新だったので。

2012-08-13 23:11:02
ねこはる @halcat0x15a

型レベルFoldは偉大だなー

2012-08-13 23:11:21
ねこはる @halcat0x15a

GenericNilがcase classなのは.typeが面倒だからだろうか。

2012-08-13 23:13:44
ねこはる @halcat0x15a

trait,case objectのが好きだなー

2012-08-13 23:14:22
Kenji Yoshida @xuwei_k

@yuroyoro @halcat0x15a Seq ~> Some が List ~> Option のサブタイプになれるのは予想通りそうですね https://t.co/XmNL9Dia

2012-08-13 23:18:35
ssmylh @ssmylh

高カインド型でも同じなのかー。Function1[-T1,+R]の型パラメータが半変,共変に対して、NaturalTransformation[-F[_], +G[_]]も同様に考えていいぽい。

2012-08-13 23:45:47
病気の美少女 @lyrical_logical

~> みたいなジェネリックな形になるから皆わけわからなくなるだけで、みなさんは知らぬ間に rank2 polymorphism 相当のコードを書いているはずなのだ。型パラメタを取るメソッドを持つオブジェクトを引数に取るメソッドなんていくらでも書いたことありますよね?

2012-08-13 23:49:09
Kenji Yoshida @xuwei_k

@halcat0x15a これを case object に書き換えてみようとしたら気づいたけど https://t.co/wUH6lTyg Kind のレベルでの Nothing にあたるものが存在しない(?)から、classになってるとかじゃなくて?

2012-08-13 23:49:55
病気の美少女 @lyrical_logical

みたいなことをたまに思うのだけど、これ前きなばさんが言ってたことと同じか 頭悪い子が考えること、頭いい人がとっくの昔に考えてるパタンーだ

2012-08-13 23:50:36
Kenji Yoshida @xuwei_k

case object GenericNil extends GenericList[すべてのkindのサブタイプになれるkind]

2012-08-13 23:52:14
病気の美少女 @lyrical_logical

a ->b と forall c. a c -> b c の variance まあ同じなのが自然な気がします

2012-08-13 23:53:41
病気の美少女 @lyrical_logical

型コンストラクタ(皆さんが高カインド型と読んでいるもの)に対する variance の指定、仕様には詳細が記述されてなかったはずでつまりその意味は実装依存である!(そんな話をすくみずさんと以前した記憶がある

2012-08-13 23:59:11

たぶんこれのこと