タグ

ブックマーク / kmizu.hatenablog.com (4)

  • カリー化 != 部分適用 - kmizuの日記

    最近、ネット上でカリー化に関する記事を読んでいると、特にGroovy界隈でカリー化に関して誤解がまかり通っているようなので(特に実用的なGroovy: カレー化クロージャーによるファンクショナル・プログラミングはひどい。そもそも、Groovyの標準ライブラリ自体がカリー化を行うための関数ではないものにcurryとか付けてるから仕方無いのかもしれんが)、一言言っておく。 カリー化というのは、Groovyで言うと、 def add = {x, y -> x + y} のように、xとyという複数の引数を取って値を返す関数を def add = {x -> {y -> x + y}} //間違ってパースできないコードになっていたので修正(12/17) のように、一つの引数xをとって、「yを引数にとって値を返す関数」を値として返すような関数に変換すること、あるいは最初からそのように表現することを言う

    カリー化 != 部分適用 - kmizuの日記
  • Scala 2.10.0 M3の新機能を試してみる(3) - SIP-15 - Value Classes - kmizuの日記

    Scala 2.10.0 M3の新機能を試してみる記事第三段。今度はSIP-15 - Value classesです。 この機能は、一言で言うと、従来ユーザが継承することができなかったAnyValを継承したクラスを作ることができるようになる機能です。この機能の主な意義は、特定の状況において、オブジェクト確保に伴うオーバーヘッドを0にすることです。 たとえば、implicit conversionによるPimp My Libraryパターンを考えてみましょう。前回の記事でimplicit classを使いましたが、 implicit class RichString(self: String) { def display(): Unit = println(self) } "foo".display このとき、"foo".displayの部分は、実際には new RichString("fo

    Scala 2.10.0 M3の新機能を試してみる(3) - SIP-15 - Value Classes - kmizuの日記
  • Scala 2.10.0 M3の新機能を試してみる(2) - SIP-13 - Implicit classes - kmizuの日記

    Scala 2.10.0 M3の新機能を試してみる記事第二段。今度はSIP-13 - Implicit classesです。 さて、Scalaでは従来、implicit conversionを使って、既存のクラスにメソッドを追加するPimp My Libraryと呼ばれるパターンが使われてきました。たとえば、Stringに対して、文字列を表示するdisplayメソッドを追加するためには、次のようなコードを書く必要がありました。 scala> class RichString(self: String) { | def display(): Unit = println(self) | } defined class RichString scala> implicit def enrichString(self: String): RichString = new RichString(s

    Scala 2.10.0 M3の新機能を試してみる(2) - SIP-13 - Implicit classes - kmizuの日記
  • Scalaに関して知っておくべきたった一つの重要な事 - kmizuの日記

    タイトルは釣りです。先日、大昔に見た懐かしい記事が翻訳されていました。この記事自体ははっきり言って、ScalaはOCamlではないということを言葉を変えて延々と言ってるだけなので、どーでもいいです。3年も前の英語記事がTwitter上で今更注目された事に驚きです。 さて、題に入りましょう。元記事の言っている事はおいておいて、Scalaの核言語は(若干風変わりな)クラスベースのオブジェクトシステムであるという事は、頭の片隅においておくと良いと思います。Scalaの関数型プログラミングサポートの多くは、関数型言語に見られる機能をオブジェクト指向的に再解釈して取り込んだものであり、中心にあるのはあくまでオブジェクトです。 (追記) 核言語(core language)という言葉に馴染みが無い方も居ると思うので、説明を追加します。核言語という考え方は、プログラミング言語を、まさにその核である核言

    Scalaに関して知っておくべきたった一つの重要な事 - kmizuの日記
  • 1