Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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
You can’t perform that action at this time.