TL;DR
- 関数は、入力と出力を持つブラックボックスのようなものである。
apple -> bananaのような表記を型シグネチャ(関数シグネチャ)と呼ぶ。 - F# では型推論が効くので、型を明示的に書く必要はほとんどない。
内容
型シグネチャ
関数は、入力と出力を持つブラックボックスのようなものである。リンゴを受け取ってバナナを返す関数なら、apple -> banana と書く。この表記を型シグネチャ(または関数シグネチャ)と呼ぶ。
let add1 x = x + 1
let add x y = x + y
let squarePlusOne x =
let square = x * x
square + 1F# は入力と出力の型を気にするが、型推論が効くので、型を明示的に書く必要はほとんどない。上の例では、add1 の型シグネチャは int -> int、add は int -> int -> int、squarePlusOne は int -> int と推論される(型の推論 - F#)。
ジェネリクス型
関数がどんな型でも動くときは、F# はそれをジェネリクス型として推論する。F# では、'a のように先頭にアポストロフィが付いた型がジェネリクス型を表す。
// areEqual : 'a -> 'a -> bool
let areEqual x y =
(x = y)