2016-03-01から1ヶ月間の記事一覧
ハーマンミラーという店でアーロンチェアを買いました。定価は17万円近くでしたが、中古品をリニューアルして新品の部品と入れ替えたものが11万円で提供できるとの事だったので、それにしました。とても高価な買い物で、まだ社会人になっておらず所持金が厳…
github.com 自身のウェブサイトで各プログラムの GitHub 及び Bitbucket のリポジトリ内でのコード記述行数を掲載しているのですが、 Scheme の記述行数がかなり少なかったので、 Scheme で何か書こうと思いました。大学の講義で Scheme による Scheme イン…
最近、頑張って作曲をしています。まだ完成した曲はありませんが。まだ初心者なので当然ではあるのですが、音楽を作っていて、後で聞くと「全然ダメだ」って思うことが多いです。それで何回も作り直しをしています。今までの作曲手順は次のとおりです。 テー…
関数型の要素を静的型付けの言語の仕様に持ち込むならば、やはり型推論は欲しいところです。ただし、言語の仕様によっては、型推論は関数定義などを行うときにかなりややこしいことになる可能性があります。例えば、簡潔で強力な型推論の例として、 OCaml の…
今、二つの数値を受け取り、その和を返す関数 add があるとします。多くの関数型言語で用いられる関数適用は、次のような形を指定します。 add 1 2exp を式として、 exp exp という形です。他方で、手続き型やオブジェクト指向型の言語での関数適用は、次の…
言語仕様の詳細を練っていきます。関数型言語では、カリー化や関数の部分適用が可能な言語が多くなっています。カリー化によって、関数の引数を一つずつ与えられるようになり、関数を部分的に適用することができるようになります。例えば、 add x y = x + y…
第8,9回において、C言語と似た文法の言語を用い、型検査や3アドレスコードへの変換などを行ってきました。そろそろ独自言語の文法を考案し、それを主体として細かな設定について考えていきます。 例えば、次のような入力を与えるとします。大体想像つくと思…
第8回で計算式の平坦化を行いましたが、それは全て Int 型を想定して行っていました。拡張として、複数の型を導入して、型検査を実行してみようと思います。例えば、プラスの記号の両側には同じ型の値が与えられ、それらと同じ型の値を返すというように決め…