プログラミング/関数型プログラミング

関数型プログラミングは、プログラムを関数の集合として捉え、副作用を排除することでプログラムの可読性や信頼性を高めるプログラミングスタイルです。ここでは、関数型プログラミングの特徴と具体的なコード例を解説します。

特徴 編集

  • 関数は引数と戻り値だけで、外部の状態を変更しない
  • 関数は再利用しやすいように細かく分割される
  • データの変換を高階関数を使って行うことが多い
  • 遅延評価や無限リストを使うことができる

コード例 編集

1. リストの要素を加算する 編集

# 非関数型プログラミング
def sum_list(lst):
    total = 0
    for x in lst:
        total += x
    return total

# 関数型プログラミング
def sum_list(lst):
    return reduce(lambda x, y: x + y, lst, 0)
この例はpython2で、リストの要素を加算する関数を非関数型プログラミングと関数型プログラミングで実装しました。非関数型プログラミングでは、ループを使ってリストの要素を加算していますが、関数型プログラミングでは、reduce関数を使ってリストの要素を加算しています。reduce関数は、リストの各要素に対して指定された関数を適用し、結果を累積する関数です。

2. リストの要素を2倍にする 編集

# 非関数型プログラミング
def double_list(lst):
    result = []
    for x in lst:
        result.append(x * 2)
    return result

# 関数型プログラミング
def double_list(lst):
    return list(map(lambda x: x * 2, lst))
この例では、リストの要素を2倍にする関数を非関数型プログラミングと関数型プログラミングで実装しました。非関数型プログラミングでは、ループを使ってリストの要素を2倍にして新しいリストを作成していますが、関数型プログラミングでは、map関数を使ってリストの各要素に対して指定された関数を適用して新しいリストを作成しています。map関数は、リストの各要素に対して指定された関数を適用し、結果を新しいリストに格納する関数です。