関数の概要
F#の関数の簡易的な使い方についてはまずは こちら をご覧ください。
F#の関数は基本的にシンプルな処理内容で宣言することを求められます。これは関数型プログラミング(= FP)全体に言えることですが、FPの関数の基礎として "シンプルな処理を組み合わせて複雑な処理を実現する" という考え方があります。そのため複雑な処理を宣言した関数は関数合成やパイプライン化した関数であることがほとんどです。LinuxやUnixのシェルコマンドを利用したことがある方は、シェルコマンドの連結を想像していただくとわかりやすいと思います。
また、関数型プログラミングの解決方法は、よくベルトコンベヤ式だと言われることがあります。これは関数を複数組み合わせてその結果を連鎖させていく姿がまるでベルトコンベヤに値を流しているように見えるからです。ベルトコンベヤ式に関数を連結できるようにするには、常に関数の INPUT / OUTPUT を意識して関数を宣言する必要があります。そのため、特化型の関数ではなく汎用的な関数を作成するという意識をもって関数を作成していきましょう。
それでは関数宣言の構文を見てみましょう。
// ------------------
// [ 構文 ]
// ------------------
// 通常の関数宣言
let [ inline ] function-name parameter-list [ : return-type ] = function-body
// 再帰関数の宣言
let rec function-name parameter-list = function-body
すでに一度関数宣言については説明しているため、解説は省略します。不安な方は「関数の基本」を再度読み直してください。