by shigemk2

当面は技術的なことしか書かない

第5回 Functional Programming in Scala読書会@渋谷 #functional_shibuya

Functional Programming in Scala読書会@渋谷 - connpass

Calling HOFs with anonymous functions

無名関数と高階関数

名前付きの関数と同じようにつかえる

無名関数の例

findFirst(Array(7,9,13), (x: Int) => x == 9)
  • 関数も値
  • Scalaの特別ルール applyメソッドを持っている

糖衣構文 - Wikipedia

  • Function2 ScalaのなかのTrait

Moses Schönfinkel – Wikipedia

なにがなんだか

  • 型シグネチャをみようず。
  • partial1は高階関数で、引数を部分的に適用する。
  // Polymorphic functions are often so constrained by their type
  // that they only have one implementation! Here's an example:

  def partial1[A,B,C](a: A, f: (A,B) => C): B => C =
    (b: B) => f(a, b)
  • アノテーションは省略出来る

カリー化

  // Note that `=>` associates to the right, so we could
  // write the return type as `A => B => C`
  def curry[A,B,C](f: (A, B) => C): A => (B => C) =
    // a => (b => f(a, b))
    a => b => f(a, b)

compose

  // Exercise 5: Implement `compose`

  def compose[A,B,C](f: B => C, g: A => B): A => C =
    a => f(g(a))

P31のコラムの上まで。