あどけない話

Internet technologies

2013-03-01から1ヶ月間の記事一覧

再帰ドリル(2):数値に対する末尾再帰

注意:github に移動しました。再帰ドリル(1)を読んでいない人は、先に読むこと。 等差数列の和 差が1の等差数列の和を素朴な再帰で実現すると以下のようになった。 soap 0 = 0 soap n = soap (n-1) + n プログラミング言語の内部をよく知っている人は、何度…

再帰ドリル(1):数値に対する素朴な再帰

注意:github に移動しました。再帰を学ぶためのドリル。使用するプログラミング言語は Haskell。このシリーズは続くかもしれないし、途中で挫折するかもしれない。乞うご期待! 等差数列の和 差が1の等差数列の和を計算する関数 soap(sum of arithmetic pro…

Haskellでの時間の取り扱い

Haskell には、以下のような時間用の型がある。この記事は、どれを使えばいいかの解説。 time ライブラリの Data.Time.Clock の UTCTime old-time ライブラリの System.Time の ClockTime base ライブラリの System.Posix.Types の EpochTime UTCTime 速度を…

代数データ型とラムダ式

代数データ型(バリアント)をラムダ式で表現する方法の備忘録。ラムダ式を表現するのに、実行可能な Haskell の無名関数を使う。間違いの指摘を歓迎します。こんな感じ: \x y z ... f g h ... -> 引数をうまく組み合わせる x y z ... の部分が、直積を表す f…

Lensことはじめ

見ろ! Haskell が OOPL のようだ! さてさて、ようやく重い腰を上げて、Lens を勉強し始めましたよ。Haksell for allを見て勉強すればいいのかなと思ったんですが、解説しているパッケージが data-lens なので古いですね。今、使うべきなのは、lens という…

[OCaml]書評「プログラミングの基礎」

僕はよく「関数プログラミングの入門書には何がいいか」という質問を受ける。そのときは必ずこの本(と他のいくつか)を答えるようにしている。書評を書いたつもりになっていが、検索してみると書いてないようなので、反省して良書を紹介してみようと思う。プ…

コンパイルは(テストではなく)証明である

「プログラムのテストはバグの存在を示すことにかけてはとても効率的な方法ですが、バグの不在を示すことにかけては絶望的なほどに不適切です。プログラムの信頼性を顕著に向上させる唯一の方法は、その正当性に対して説得力のある証明を与えることです」 --…

静的型付き言語プログラマから見た動的型付き言語

およそ20年前にAlan Kay の講演をきいたことがある。印象に残ったのは、彼が引き合いに出した McLuhan の言葉だ。 I don't know who discovered water, but it wasn't a fish. (拙訳)誰が水を発見したかは知らないが、発見者が魚でなかったことは確かだ。 誰…