関数型言語を触ってみる(その7)
- 5章 リストとタプルを使う
- BIFは組み込み関数のこと
- listsモジュールのsubtract(List1, List2)、リストから別のリスト要素を減ずる(便利かも。pythonでは何?
- Erlangは関数型言語です。Erlangを学ぶからには自分で関数を作成できなければなりません(!)
- 束縛変数の値は変更できないため、カウンタを使ったループ処理ができない(困った...)
- 関数の再帰呼び出しを行う際の戻り値、または引数を利用し、それらの更新値をリレーする(むーん)
- いまから作成する関数とlistsモジュールの関数の名前は同じですが、モジュールが異なるのでこれらは異なる関数です(名前が同じでもいいんだ)
- 再帰関数の引数を利用して何かの値を求めることができる(逆に言うとそれでしかできないのでは。要素数のカウントとか)
- [_|T]では、Tが現在のリストの第2要素以下を表している(Tの意味を確認した。忘れてた)
- 再帰を終了するために、リストが空になれば最大値を返すクローズが必要。max([], M) -> M.
- 最大値の初期化。max([H|T]) -> max(T, H).(うーん)
- リスト5-2に、この方法で作成したmin()関数とmax()関数を示す(このモジュールの書き方にはいろんな意味で抵抗がある)
ローテートは練習問題として、自分で考えてみる。
リバースの前まできた。
p.124 リバースから
-
- リスト内包表記と呼ばれるプログラミング技法が使える(ほー)
- リスト内包表記の一般構文 [コンストラクタ||パターン <- リスト、条件](コンストラクタ?)
- Even=[X || X <- L1, X rem 2 =:= 0]. リストL1から要素Xをマッチさせ、要素Xが偶数ならば、新たに要素Xを生成する、という記述(今までの中で、リスト内包表記が一番親しめる。他が今までの常識とあまりにもかけ離れているから...)
- タプルのリストを用いたリストの内包表記では、キーと値のペアを保持できるタプルの特性を生かした”キーによるリスト要素アクセスが”が可能となる(ほー)
- リスト演算子でリストの連結、削除ができる(ほー、便利だ)
- リスト内包表記の簡潔さを示す典型がクイックソートです(ふーん)
- 6章 並列プログラミング