タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

TypeClassに関するKazuhiraのブックマーク (5)

  • 怖いScala

    無職\(^o^)/ もう少し無職楽しむつもりだけど、なんとなく関数型言語書いて金貰えるような仕事ないかな・・・ 今年の前半は働いてたけど、去年の今頃も無職だった 暇だからScalazにひたすらpull req送る 気づいたらコミッターになっていた((((;゚Д゚))))!? 2013年11月現在、コミット数3位(コミットした行数では7位くらい。つまり細かいコミットが多い)

  • こわくない型クラス

    13. trait Monoid[A] { def plus(x: A, y: A): A def zero: A } def sum[A](list: List[A])(m: Monoid[A]): A = { list.foldLeft(m.zero) { case (total, e) => m.plus(total, e) } }

    こわくない型クラス
  • Scala 2.10 からの型クラス2(Functorはどうする?)

    前回の記事にコメントをいただいて、Functor とか Monad なんかの高階型はどうするのか改めて考えてみました。 結論から言うと Scala は関数リテラルで型パラメータとれないので、関数リテラルだけでなんとかしようというのは不可能っぽいです(いまんところの私の頭では)。 しかし、implicity 使ったり context-bound を使わなくてもなんとかなりそうです。ここまで来ると型クラスじゃねーだろっ。と言われるかもしれませんがアドホック多相にはなってると思います。 ということで、Functor をやってみます。Haskell だとこんな感じですね。

    Scala 2.10 からの型クラス2(Functorはどうする?)
  • Scalaで型クラス入門 - still deeper

    型クラスについてつらつら考えていたことをまとめておきます。マサカリ歓迎。 型クラスって? 型クラスとは一言でいうと。 アドホック多相 を実現するもの です。モから始まる名状し難いあれとは直接は関係ありません。 ではアドホック多相とは何かというと 異なる型の間で共通したインターフェースでの異なる振る舞いを 定義済みの型に対して拡張する ような多相のことです。 異なる型間での共通したインターフェースでの異なる振る舞い Javaの継承やインターフェース、Scalaのtraitを用いることで、異なる型間での共通したインターフェースを管理することができます。 trait SomeTrait { def someMethod(): String } class Foo extends SomeTrait { def someMethod(): String = "foo" } class Bar ex

  • Scala 2.10 からの型クラス

    Scala で型クラス使おうという人ならば一度は目を通したことがあるだろう「空飛ぶサンドイッチのパーツ」。 Scala での型クラスの実装方法といったらたいていこの記事に書いてあるような方式になるのではないでしょうか(というか、私がググった限りではこのパターンしか見つけられなかった)。 でもこの方式、context-bound 型パラメータ使うんですよね。これのせいで def が登場しちゃうし、カリー化ができない。空飛ぶサンドイッチのパーツ自身、関数リテラル使おうぜ! と言いながらこのせいで def 使っちゃう。悔しい。それから、もっと便利にしようということで Scalaz みたいに Ops とか入れちゃって、型クラス実現するのにめんどうなこと! ということで、Scala 2.10 から入った implicit classes 使うと型クラス簡単ですぜっていうのが今回の話です。空飛ぶサンド

    Scala 2.10 からの型クラス
  • 1