このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

[

Haskellと比べて、

class Functor f where
  fmap :: (a -> b) -> f a -> f b
  1. F[_] と書くので、fが型構成子だと明白にわかる。
  2. ブラケットに型(や型構成子)パラメータを入れるので、総称性がハッキリ。
  3. Haskell型変数 a, b は、いつのまにか勝手に入っていて正体不明で気持ち悪い。map[A, B] ならmap総称関数に渡る型引数だとハッキリ。

しかし、

implicit val OptionFunctor = new Functor[Option] {
  def map[A, B](fa: Option[A])(f: A => B) : Option[B] = 
    fa match {
      case Some(a) => Some(f(a))
      case None => None
    }
}

インスタンス化が鬱陶しい。