パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

37 関数型プログラミングをしてみる

2018-06-07 | プログラムをマスター計画2020
Pythonでは関数もオブジェクトと知り、目から鱗が落ちる気がしました。

i=inputなどとして関数名の省略は、
使っていましたが、
実は関数を変数に代入していたのです。

そこで関数に関数を渡すという
プログラムを作ってみました。



test関数に2つのパラメータを渡します。
aは関数、bは変数
test内でa関数にbを渡しています。

配列に関数を入れて順次test呼んでます。
受け渡した関数を比較もしてみました。

実行結果です。



遠い昔こんな使い方できないかなという
空想をしたような気もします。




次が関数型のプログラミング(たぶん)
なかなか理解しづらかったのですが
少し何かつかめた気がします。



testA a〜b-1までの数字を表示します。
ループ文は使ってないです。
range(n)がn-1までの理由はこれかも。
haskell関数の書き方に似ています。

同じようなものは何回も見ていますが、
自分で作ってみて理解できました。

testB a〜b-1までの配列を戻します。

testC a〜b-1までの配列を戻します。

 ただし3の倍数は"ho"に変換。

(しまった! r 使う必要ない。)

実行結果です。




お話にするとこんな感じです。


人が並んでいます。最初の人はお皿を渡して、「これにオニギリを1個ずつおいてって、いっぱいになったら戻してきて」
と伝言ゲームをはじめます。

1オニギリおく
 2オニギリおく
  3オニギリおく
   4オニギリおく
    5オニギリおく
     6オニギリおく(いっぱい)
     6かえす
    5かえす
   4かえす
  3かえす
 2かえす
1かえす

ぶじ、お皿いっぱいにオニギリが並んで戻ってきました。




最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。