Skip to content

Instantly share code, notes, and snippets.

@FScoward
Created March 28, 2015 16:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FScoward/d85c51b2ffefc6f475f6 to your computer and use it in GitHub Desktop.
Save FScoward/d85c51b2ffefc6f475f6 to your computer and use it in GitHub Desktop.
def uncurry[A, B, C](f: A => B => C): (A, B) => C = {
// (A, B) => C なので、まずは (a, b) を受ける
// a, b を受けたら C を返せば良い。
// Cを返すためには 引数として受け取っている f に適用すれば良い
// f: A => B => C なので f(a, b) とすることは出来ないため
// f(a)(b)の部分適用とする
// f(a)(b) は C を返す
(a, b) => f(a)(b)
}
def compose[A, B, C](f: B => C, g: A => B): A => C = {
// A => C は 型A を受けて 型C を返す関数を意味する
// f は 型B を受けて 型C を返す関数であるため 型B が手に入れば 型Cを返せる
// g で 型A を受けて 型B を返すため、f に g を適用すれば良い
a => f(g(a))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment