関数型プログラミングを実践する

プログラミングパラダイムの基礎

Eleanor Thomas

Senior Data Analytics Engineer

関数型プログラミングを実践する

  • 純粋関数の例を3つ
  • 純粋関数と一般的なPython関数の違い:副作用がない
  • 純粋関数は他の純粋関数を呼んでも純粋のまま

黒板

プログラミングパラダイムの基礎

例1 - 純粋関数を書く

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • まず空の新しいリストを作成
  • 入力リストの各要素を走査
    • 二乗する
    • 新しいリストに追加
  • 新しいリストを返す
プログラミングパラダイムの基礎

例2 - 「不純」な関数の修正

sample_mean = 10
scale_factor = 2

def scale_list(input_list):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • 関数本体の外部の変数に依存
  • 純粋関数ではない
プログラミングパラダイムの基礎

例2 - 「不純」な関数の修正

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • 変数 sample_meanscale_factor を関数の入力に変更
  • 関数は「純粋」になった
プログラミングパラダイムの基礎

例3 - 純粋関数の組み合わせ

def scale_value(value, sample_mean, scale_factor):
    scaled_value = (value - sample_mean) / scale_factor
    return scaled_value

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = scale_value(item, sample_mean, scale_factor)
        new_list.append(new_item)
    return new_list
プログラミングパラダイムの基礎

練習しましょう!

プログラミングパラダイムの基礎

Preparing Video For Download...