関数の理解
関数 とは入力と出力を持つブラックボックスのようなもの https://scrapbox.io/files/66909b0be1cebf001dffc3ff.png
code:fsharp
let add1 x = x + 1
let add x y = x + y
let squarePlusOne x =
let square = x * x
square + 1
F# は入出力の型を気にするが、型推論が効くので、明示的に型を宣言する必要はほとんど無い add1 の場合、型シグネチャは int -> int となる
add の場合、型シグネチャは int -> int -> int となる
squarePlusOne の場合、型シグネチャは int -> int となる
任意の型で動作する場合、ジェネリクス型として推論する
code:fsharp
// areEqual : 'a -> 'a -> bool
let areEqual x y =
(x = y)
F# では、文字の先頭にアポストロフィの付いた型 'a はジェネリクス型を表す