ML 課題

少し残っていたので、やる。まぁ、そんなにめちゃくちゃ難しいわけではないが、慣れが必要。
最後の問題は集合を関数に置き換え、その集合に演算を施すためには関数をどのように作ればよいかというもの。問題の関数は集合の要素に含まれているなら真をかえし、含まれていないなら偽を返すというものである。*1
ここで、集合の要素に値を追加し、集合を返すプログラムをつくる。集合は関数なので、新しいチェックができる関数を返さなくてはならない。
よって、プログラムは引数に関数と新しい要素をうけ、新しい要素と関数をコールしていずれかが真になるかどうかを判定する関数を返すということになる。
なんだかCとかをやっている人には何のことかさっぱりわからないかもしれないが、関数も値である以上、かなり自由度が高く、なれると(実行速度を考えなければ)かなり素直でわかりやすいプログラムを作ることができる。

*1:これって自然なの?私はあまりこういう表現にはなれず、はじめは意味がわからなかった