First-Class Functions 2020/9

以下の関数をFirst-Class Function(第一級関数)と呼ぶ。
  • 変数に代入できる。
  • 関数へ引数として渡せる。
  • 関数の戻り値として返せる。

関数を変数へ代入する。
hogehoge = putStrLn "HogeHoge!"
GHCi> hogehoge
HogeHoge!

関数を他の関数への変数として渡せる。
sayhello s = "Hello " ++ s ++ " !"
hogecat func s = func s
GHCi> hogecat sayhello "Foo"
Hello Foo !

関数を他の関数からの戻り値として返せる。
nijo n = n^2
sanjo n = n^3
docchi n = if n == 1 then nijo
           else sanjo
GHCi> docchi 1 4
16
GHCi> docchi 3 3
27