Arantium Maestum

プログラミング、囲碁、読書の話題

2022-02-01から1ヶ月間の記事一覧

型システムのカインドという概念についてのメモ

Types and Programming Languagesの最後のほうに「カインド」という概念が出てくる。 System Fをさらに拡張したSystem Fωという型システムが存在していて、その「拡張の方向」がカインドだということらしい。(ちなみにSystem FωはF-ing Modules論文のベース…

非S式なRacket後継言語?のRhombusとShrubbery記法について

個人的に作りたい自作言語の構想というのは結構昔からあって、ありていに言ってしまえば「Pythonチックなインデントベースでスッキリした構文でモジュールまで含めたMLの意味論を持つ言語」となる。 ただしMLのような式ベースの言語が破綻しない構文というの…

関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ

先日こういうツイートがあった: Haskellとかの関数型言語を使用しているプログラマの皆様にお聞きしたいんですけど、「関数名 引数 引数 ...」みたいな関数呼び出し構文って見にくくは無いですか?「関数名(引数, 引数, ...)」に慣れたこちらからすると、丸…

OCamlでLLVM JITを試した

自作言語熱が高まっていて、バックエンドをLLVMでやりたいと思っている。 OCamlでLLVMというとLLVMプロジェクト公式のKaleidoscope言語をOCamlで実装するチュートリアルが有名、なのだが、10年近く前に壊れたAPIを使っていたりと実際に使えるものではなく、…

Impredicative Typesについてのメモ

最近なかなかブログを更新できずにいて、気持ちとしては しかしブログは「シリーズ物の記事」と考えて書こうとすると、シリーズ最後あたりは本当に書くのがつらくなるな— zehnpaard (@zehnpaard) February 21, 2022 で少し自分の首を絞めている感覚がある。 …

参考になるMenhir製パーサ その3(500行以上編)

前々回、前回に続いて500行以上の本格的なMenhirパーサの例。 C11パーサ A simple, possibly correct LR parser for C11という論文のもとになった、Menhirを使ってなるべく正確な(過去のC11基準コンパイラがパースに失敗するプログラムもパースできる)C11…

参考になるMenhir製パーサ その2(500行未満編)

前回に続いて、今回は少し大きめの「教材ではない」パーサの例を挙げる。 GraphQL github.com GraphQLのクエリをパースするコード。OCamlでGraphQLサーバを作るライブラリの一部。クエリ言語であって本格的なプログラミング言語ではないので、ある程度簡単(…

参考になるMenhir製パーサ その1(チュートリアル・サンプル編)

最近またぼちぼちMenhirでパーサを書いている。 けっこう仕様が大きめの自作言語用で、とりあえず書いてみたら案の定というか、見事にメチャクチャになって討ち死にした。なので一旦そのパーサ制作から離れてMenhir(とLRパーサ全般)について勉強し直してい…