OCaml

プログラミングの基礎 第 8 章 レコード

今回はレコードの話。 8.2 レコードの構文 注意。 # {namae = "asai"; tensuu = 70; seiseki = "B"}:: - : gakusei_t = {namae = "asai"; tensuu = 70; seiseki = "B"} という例が最初に示されているけど、以下のように先に型の定義をしないとエラーが出るみ…

プログラミングの基礎 第 7 章 組とパターンマッチ

少し間が空いたけど、再開する。 7 章から 9 章まではデータ構造の話みたい。 7.1 組の構文 2 つ以上の様々な型の値を組み合わせて「組」というデータ構造を表現出来る。 構造体みたいな感じ? # (3.14, 2.71);; - : float * float = (3.14, 2.71) # (10, "s…

第 6 章

第 6 章はインタプリタからのエラーメッセージについての話。 6.2 大文字で始まる名前はコンストラクタ。 6.3 OCaml インタプリタは型エラーの場合、実際は演算子の間違い ( ドットの付け忘れなど ) のときでも値 ( 変数や定数など ) が間違ってるというエラ…

第 5 章 条件分岐

ようやく条件分岐まで来た。サボりまくってたので時間が掛かった。 5.2 条件分岐の構文 if 条件 then 式(真)else 式(偽) C なんかの書き方とほとんど一緒。 注意。 結果の2つの式は同じ型でなくてはならない else は省略出来ない トップレベル曰く、els…

入門 OCaml 買った

一昨年出た本だけど、まだ余裕で使えそうだったので買ってみた。 入門 OCaml とプログラミング in OCaml のどっちを買おうか迷ったけど、 GTK に興味がなかったのでこっちを選んでみた。 まぁマルチスレッドもそれほど興味ないけど。どっちかと言えばこっち…

OCaml の対話型インタプリタと文字コード (一人読書会番外編)

問 4.8 をやっていたときのこと。 # #use "C:/Program Files/Objective Caml/mylib/tsurukame.ml";; File "C:/Program Files/Objective Caml/mylib/tsurukame.ml", line 1, characters 1-2: Error: Illegal character (サ)このエラーしか出なくなった。 色々…

第 4 章その2 (p.26 -p.32)

いよいよデザインレシピのお話。 デザインレシピとはどんなものか プログラムを作るための手順。 プログラムを作るためのプログラム(手続き的な意味で)*1。 関数定義のデザインレシピの簡単なリスト。 関数の目的を明確にする 関数のテストを書く(テスト…

第 4 章の途中まで (p.18 - p.26)

少しサボってた。暑いからねぇ。 今回は関数定義の話。 今回からは問題の解答は載せないことにした。面倒。サポートページを見れば分かるから良いよね。 関数の定義 let 関数名 引数... = 式 関数定義の引数に型の指定がいらないのかー。 注意。 関数名のあ…

第 3 章 ( P.14 - P.27 )

第 4 章まで行くつもりだったけど、この教科書のメインテーマの1つ「デザインレシピ」が第 4 章で登場するようなので、明日やる。 変数の定義 第 3 章は丸々変数の定義の話題。 let 変数名 = 式 というのが基本形らしい。 OCaml の変数名は英小文字で始まら…

一人読書会 ( プログラミングの基礎 ) 第 2 章 ( P.7 - P.13 )

整数の扱い 整数の扱いは普通の手続き型言語とほぼ一緒みたい。 一つだけ注意があるとすれば、余りを求める mod の書き方かな。 他の四則演算子と違って mod だけは前後にスペースを空けてあげないと関数として認識されてしまうみたい。 #7mod2;; Characters…

一人読書会(プログラミングの基礎) コメントの書き方だけ調べた

本文では P.27 にならないと出てこない話題なんだけど、一人読書会をするために必要な予感がしたのでコメントの部分だけ先に読んだ。 (* こんな風に書くらしい *) let x = 0;; (* 変数の宣言 *) コメントは (* …… *) で括るみたい。 パーレンとアスタリスク…

一人読書会(プログラミングの基礎) 開発環境編その2

Make を使うようなことが書いてあったので、 Windows 用のパッケージをインストールした。 Make for Windows まぁ nmake でも構わなかったんだけど、何となく GNU make にした。 こんなに Windows と GNU を混ぜるなら初めから Linux で環境構築したほうが良…

コンソールの日本語出力に関して

僕は Windows の MinGW 版を使って遊んでいるので、基本的に日本語出力は不可能っぽいです。 だから演習問題を解いてもその辺りは英語か日本語のローマ字表記になると思います。 自分でビルドするのめんどくさいし、別にローカライズの勉強じゃないからいい…

一人読書会を早くも中断

電磁気学の試験対策で一時中断することにした。 まだ本文に入ってないのに中断とか我ながらアホ過ぎる。 今は第 2 章をパラパラ読んだ程度。 強力な静的型付けがあって、四則算の演算子も int 型用と float 型用に分かれていることが分かった。 暗黙のキャス…

ちょっと開発環境の整備

正確には学習環境だけど、環境の整備をした。 取り合えず ocamlbrowser が使いたかったので最新版の ActiveTcl8.5 をインストール。 起動しない。どうやら ActiveTcl8.4 じゃないと駄目らしい。(参考リンク) ここから 8.4 を拾ってきて入れ直したら起動に成…

第 1 章は飛ばした

一応読んだけど、特に書くことがなかったのでこのブログでは飛ばします。 第 1 章のまとめをするとすれば、 関数型言語からプログラミングの勉強を始めるのは結構良いかも デザインレシピという考え方を覚えよう ということかな。 時間見て第 2 章以降を読み…

プログラミングの基礎一人読書会を始めるよ

関数型言語がすごく勉強したくなったので OCaml で勉強し始めることにした。 何で OCaml なの?ってのは、「プログラミングの基礎」という本が手元にあったから*1。 まぁそういうわけで暇を見て勉強のメモを書いていくことにする。 今日はとりあえず OCaml …