fugafuga.write

日々のログ

すごいH本 part55

型の種類

型とは、値についている何らかの推論をするためについている小さなラベルである。 それと同じように型にも小さなラベルが付いている。 型に付くラベルのことを種類(kind)という。

種類を調べる

*Main Lib> :k Int
Int :: *

* は具体型を表す記号。 具体型とは型引数をとらない型のこと。

Maybeを見る

*Main Lib> :k Maybe
Maybe :: * -> *

具体型をとって -> 具体型を返す 型コンストラクタであることがわかる。

*Main Lib> :k Maybe Int
Maybe Int :: *

型引数を1つ与えると具体型になる。

Eitherを見る

*Main Lib> :k Either
Either :: * -> * -> *

2つの具体型をとって具体型を返す関数である。 部分適用してみる。

*Main Lib> :k Either String
Either String :: * -> *
*Main Lib> :k Either String Int
Either String Int :: *

Functor になれる型は種類が * -> * の型なので、 Either を部分適用して * -> * -> * から * -> * に変換する必要があった。

所感

全てが関数でできている感が得られた。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

  • 作者: MiranLipovaca
  • 出版社/メーカー: オーム社
  • 発売日: 2017/07/14
  • メディア: Kindle版
  • 購入: 4人 クリック: 9回
  • この商品を含むブログを見る