hokuishi.be

2023/01/07

Hello OCaml!

やったこと

  • OCaml の環境構築
  • OCaml 爆速入門 1

Amazon で注文していたプログラミング言語の基礎概念が昨日届いた。 これは ML (OCaml) の中核機能を取りあげて言語の性質を証明していく本で、面白そうだったから買った (とりあえず積ん読)。 そういえばタイガーブックも ML でコンパイラを実装していく形式だったため、一度 ML に入門しておいた方が良さそうだと思い、インストールだけして放置していた OCaml を触り始めた。
まずは環境構築。 opam というのがパッケージマネージャで、コンパイラのバージョンを指定するのにも使う。 LSP は ocaml-lsp が vim-lsp-settings にあったのでそれをインストール。 REPL として utop, フォーマッタとして ocamlformat を入れた。 はじめは Qiita や個人ブログで紹介されていた ocp-indent を入れて .vimrc をいじっていたがうまく行かず、結局公式ドキュメントで紹介されていた ocamlformat + NeoFormat の構成でやったら簡単にできた。

OCaml の入門には HackMD で公開されていた大学の講義資料を使うことにした (講義資料を公開してくれてる大学に感謝 🙏、豊田高専も頑張ってください)。 REPL でやってもいいが、せっかくなら OCaml でプロジェクトを作れるようになりたいため、サンドボックスリポジトリを作ってそこに書き散らしていく。 今日は OCaml 爆速入門 1 の問題まで解いて終わり。 ML は関数型言語のイメージがあったけど、それ以前に言語の機能を数学的に証明するための証明支援系というものらしい。
そういえば、 dunedune-project は Lisp で書かれてるらしい (?) けどよく分からないから勉強したい。

思ったこと

コンパイラを作った後に新しい言語を触っているとコンパイラの気持ちがなんとなく分かった感じ (特に構文解析) がして気持ちいい。 あと暖房は付けない方が集中できることに気づいた。

今日の英会話

https://eikaiwa.dmm.com/app/daily-news/article/the-meaning-of-kagami-mochi-new-year-decorations/TJzFrorsEe2-WFuvVEOIMA

鏡もちの意味や由来、日本で一番大きい鏡もちについての話。 今日は調子が良くて聞き取れるし読めるし話せる状態でいつもより楽しかった。