Skip to content

Instantly share code, notes, and snippets.

@f81
Last active August 29, 2015 13:56
Show Gist options
  • Save f81/9184403 to your computer and use it in GitHub Desktop.
Save f81/9184403 to your computer and use it in GitHub Desktop.
第19章:Scalaでカリー化と部分適用 ref: http://qiita.com/f81@github/items/e8bfab96b4be9e404840
scala> val add = {(x:Int, y:Int, z:Int) => x + y + z}
add: (Int, Int, Int) => Int = <function3>
[関数名]: (引数) => (戻り値) <functionトレイト>
scala> val addPartialWithX = addPartial(_:Int, _:Int, 5)
addPartialWithX: (Int, Int) => Int = <function2>
scala> addPartialWithX(2, 3)
res3: Int = 10
scala> val addPartialNone = addPartial _
addPartialNone: (Int, Int, Int) => Int = <function3>
scala> val addCurried = add.curried
addCurried: Int => (Int => (Int => Int)) = <function1>
scala> val addCurriedWithX = addCurried(1)
addCurriedWithX: Int => (Int => Int) = <function1>
scala> val addCurriedWithXY = addCurriedWithX(2)
addCurriedWithXY: Int => Int = <function1>
scala> addCurriedWithXY(3)
res2: Int = 6
scala> addCurried(1)(2)(3)
res1: Int = 6
scala> def addScalaCurried(x:Int)(y:Int)(z:Int) = x + y + z
addScalaCurried: (x: Int)(y: Int)(z: Int)Int
scala> val addScalaCurriedFunc = addScalaCurried _
addScalaCurriedFunc: Int => (Int => (Int => Int)) = <function1>
scala> def addPartial(x:Int, y:Int, z:Int) = x + y + z
addPartial: (x: Int, y: Int, z: Int)Int
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment