備忘録というか勉強メモを書いておく事にした。 檜山さんが「Catyの型システムにkind入れたい」と言い出し、ってかそもそもkindってなんじゃと言うのが今回の話。 kindについて大雑把に 現在のCatyはsets as types(実際はsetoidだったはず)の立場である。sets as typesの場合の型というのはインスタンスの集合であり、あるデータ領域Dのとある型はPow(D)の要素である。例えばJSONにおけるDとPow(D)は以下のようになる。 D = {..., -2, -1, 0, 1, 2..., ..., -0.2, -0.1, 0.0, 0.1, 0.2..., "", "a", "ab", "abc"..., {}, {"a": 1}..., []、[1], [1, 2]..., true, false, null} Pow(D) = { {0}, {0, 1}