技術ブログ 関数型プログラミング入門 2(機能編)
関数型プログラミング入門 2(機能編)

関数型プログラミング入門 2(機能編)

今回は、関数型プログラミングに関する内容だね!

関数型プログラミングの特徴について学べるんですよね!

本記事で学べること

・関数型プログラミングの特徴
・関数型プログラミングの型

はじめに

前回は関数型プログラミングのすごさを感じてもらうために、関数型プログラミングを採用するメリットについて説明しました。そこで今回は、前回紹介した関数型プログラミングのメリットにつながる特徴と、加えて、関数型プログラミングが扱う型について紹介したいと思います。

関数型プログラミングの特徴

高階関数

関数型プログラミングでは、整数や文字列などの対象(第一級の対象)と同じように、関数を第一級の対象として扱います。したがって、関数を引数として受けとったり、結果として返したりする高階関数を定義することができます。高階関数を使えば、よく使われる計算パターンをシンプルに記述することができるため、プログラムをきれいに書き表すことができます。複雑な計算も高階関数の組み合わせによって処理することができるため、プログラムのモジュール性(独立した部品から組み立てられている傾向)が高くなります。

 

参照透明性

関数型プログラミングが扱う純粋な関数は、プログラムの他の部分に影響(副作用)を与えず、また、他の部分から影響を受けることもありません。つまり、関数はどこで実行されてもいつでも同じ結果を出してくれます。これを参照透明性といいます。参照透明性により、関数型プログラムを数学的に扱うことが可能になります。具体的には、プログラム変換や解析を簡単に行うことができます。

 

遅延評価

関数型プログラム言語の中には、Haskell のように遅延評価が可能なものがあります。遅延評価とは、関数の呼び出し時に、引数の計算が必要なときだけ計算されるという評価の仕方です。遅延評価を使えば、宣言的にプログラムを書くことができ、たとえば、無限データを扱うことができます。また、巡回定義を含んだプログラムを無限ループを起こさずに定義のまま実行することが可能となります。

関数型プログラミングの特徴

型の概念は、命令型プログラミングでもありますが、特に関数型プログラムは型との相性がよいといわれています。

 

データ型

基本的なデータ型には、整数型、実数型、文字列型、真偽値型などがあります。関数型プログラミングでは、プログラムの変数や式にデータ型を付与します。これを型付といい、型付は静的な型付と動的な型付で構成されています。静的な型付では、プログラムの実行前に型が定まり、動的な型付では実行後に型が定まります。間違いを含むプログラムにおいては、型が定まらないことが多いので、プログラムを実行する前に型のエラーが見つかれば、プログラムを実行せずに間違いを見つけることができます。

 

関数の型

関数にも型を付与します。具体的には、関数の入力と出力の型を定めるということです。A というデータの型をもらって B という型のデータを返す関数の型は、A → B と書きます。A → B もデータ型の一種になります。 例えば 整数をもらって整数を返す関数の型は、整数の型を i とすれば、i → i で表せます。
また、関数型プログラミングでは、高階関数が許されていたので、A → B を型とする関数をもらって、C という型のデータを返す関数にも型を持たすことができて、それは、(A → B) → C と表せます。逆に、C というデータの型をもらって、A → B を型とする関数を返す関数の型は、C → (A → B) と表すことができます。

まとめ

本記事では、関数型プログラミングの特徴と型について説明しました。次回は、関数型プログラミングの基本である、型付ラムダ計算を解説しようと思います。お楽しみに!

SNSでシェアする

各種お問い合わせ

お問い合わせ・ご相談


開発に関することならお気軽にご相談ください。
お見積もり依頼も可能です。

お問い合わせする

私たちは一緒に働く
メンバーを探しています。


私たちはミッション・価値観への共感を何よりも大切に考え、
一緒に働くメンバーを探しています。

採用情報をみる