目立つと叩かれて嫌なので目立たないようにしてたのですが、何やっている人なのかわからないと話を聞いてもらえなくなりがちなのでやってきたことをここにまとめます。

これまでの実装実績(バイオグラフィーみたいなもの)

趣味でプログラミング言語の実装技術の本質を(論文を読むなどして)取り出して実装してみています。 研究というほどのものではないのですが、どのような技術を学んできたかをここにまとめて紹介します。

2023

2022

2020

2019

2018

2017

  • dependent.pl An algorithm for type-checking dependent types (依存型) の Prolog 実装
  • simpletapl(Prolog) TAPL の図をPrologで実装しアルゴリズミックな理論的な図がPrologできれいに実装できることを示しました。
  • 日本語で言語を作ろう (Prolog)
  • gdis_prolog (OCaml,Prolog) OCaml による Prolog 実装。 Goal Database Instruction Stack マシンみたいな実装になってますが、確か破壊的なforallの実装がうまく行かなかったので最新版はバグってる感じになってたはずなのでちょっと古いものを使うのが良いと思います。
  • 型クラス関連の論文の翻訳 色々と型クラス関連の論文を読みました。

2016

  • T言語(Prolog) TIPER,TAPL,CoPLの影響を受けてつくった Prologベースのプログラミング言語

2015

  • jasc (OCaml, Java) jasmin fast assembler jasc はocamlで作成中のwindowsでもビルドが楽に出来る、jasmin形式のjvmバイトコードアセンブラです。 aa.j ファイルをコンパイルしてaa.classファイルを作成出来ます。
  • smplpkg (PHP) PHP で作ってみたパッケージシステム。 ppp も関連してます。
  • type-systems-scala (Scala) Implementations of various type systems in Scala. The original code was written in OCaml. https://github.com/tomprimozic/type-systems.git OCaml で書いてあった型システムの実装例を Scala にして日本語翻訳しようと試みていたもの(英語力が低すぎる&機械翻訳の能力が低かったので役にたたない翻訳になってると思います。)
  • min-caml-js min-caml を JavaScript上で実装したものです。
  • GomaJ (OCaml,Java) GomaJ Programming Language GomaJ(beta) is tiny AltJ, namely, GomaJ is a very simple limited translator for the Java programming language. This compiler made by OCaml, OCamlYacc and OCamlLex.
  • Joni (OCaml,Java) GomaJ と似たような言語ですけど何が違うのか今となっては本人でもわからないです。
  • レベル付きの多相型推論の研究 (OCaml) Olegの記事をつたない英語力で翻訳してみておりましたがなんとか理解できました。

2014

  • camlup (OCaml, C言語) C言語シンタックスのAlt OCaml なトランスレータ言語。 型検査は OCaml に丸投げですけど、関数プログラミングによるシューティングゲームをつくった覚えがあります。
  • goma (OCaml,C++) OCaml で書いた Golang の trait があるような言語。C++にトランスレートして動きます。
  • RubyE (Scala) RubyE はRubyのような式言語です。 RubyE 自体ではS式やXMLのように意味を持ちません。 RubyE はシンプルなツリーデータを表すデータフォーマットです。
  • strollmincaml (OCaml) チュートリアル このプロジェクトは、mincamlのLLVMバインディングを段階を追って作成するチュートリアルです。
  • mincamlj Mincamlj は mincamlをScalaとJavaに移植してJVM上でmincamlのコンパイラを動作させるプロジェクトです。字句解析は Java でそれ以外は Scala で実装してありx86のアセンブラを吐き出すように作りました。

2013

  • fstype7 (F#) F# でつくったLLVMのIRを出力するネイティブコンパイラ 。今のLLVMでは動かないですがF#好きなら参考になるかも。
  • lllong (Scala) windows osx linux対応の x86 x86_64 コンパイラ C式というLispのS式のようなものに演算子が使えるようにしたものでプログラミングできるようにした言語です。

2012

  • type4 (Scala) type4 is x86_64 compiler can use the float value. float が使える x86_64 コンパイラ
  • type1 (Scala) 型付きコンパイラを作ろう
  • tscala (Scala) これは、ScalaによるMac OSX 上で動作するx86_64コンパイラです。多分型がないコンパイラです。
  • ex86_64 (Scala) x86_64 コンパイラ
  • x86_64 (Scala) x86_64 コンパイラ

2011

2010

  • ctinyc Compact Tiny-C language compiler created by Scala language. Tiny-CコンパイラのシンタックスをCompact式を使ったバージョンに変えたコンパイル言語です。
  • stinyc STinyC is Tiny-C language compiler created by Scala language. Tiny-CコンパイラをScalaに移植してみるプロジェクトです。

2009

2008

  • sumi言語 演算子順位法を用いたLispのマクロがある言語
プロフィール
id:h_sakurai
メールアドレス
sakurai777@gmail.com
ブログ投稿数
50 記事
ブログ投稿日数
48 日
読者