タグ

ブックマーク / matsubara0507.github.io (3)

  • Featherweight Go を読んでみた

    Go言語にジェネリクスを導入するために,その形式的な議論を研究した論文「Featherweight Go」が6月頭に発表されました. せっかくなので(久々に)全訳をしながら丁寧に読んでみたので,それを簡単にまとめることにします. 可能な限りGo言語に馴染みのない人や,プログラミング言語の形式的な議論に馴染みのない人でも理解できるようにしてみます. 注意 僕は英語がとても苦手です(DeepLを駆使しても3週間かかりました) 僕はGoでアプリケーションを少し書いていますがコアについては全く詳しくありません 僕は言語の形式的な議論を院生時代にやってましたが卒業して数年経ちます なので間違ってる可能性も十分に考慮してください. TL;DR Goにジェネリクスを導入する新しいデザインを提案: インターフェースと型アサーションを駆使する方法 新デザインを形式的に議論するために FG と FGG を定義

  • Haskell で学ぶ Ruby (その1)

    IGGG アドベントカレンダー 8日目の記事です. 今回は自分が敬愛するエンジニアの人が執筆してる「Ruby で学ぶ Ruby」を真似して, Haskell で実装していきたいと思う. Ruby で学ぶ Ruby ascii.jp にて連載中であり,コンセプトとしては Ruby 初学者に Ruby を作りながら Ruby を学んでもらおうというモノっぽい. 当に初学者向きで,プログラミングすらほとんど知らなくても読み進めれるようになっている. 「Ruby 作る」というのは「Ruby で書かれたソースコード実行できるプログラムを作る」と言う意味で,もちろん,単純に eval してお終いとかではない. もちろん,そんなこと初学者にできてしまったら Matz も驚きで,イロイロと種がある. 一つは,実際に作るのは Ruby のサブクラス(小規模版)であり,これを MinRuby と呼んでいる.

  • Haskell で学ぶ Ruby (その2)

    Qiita の言語実装 advent Calendar 2016 の21日目用の記事です. (1日遅れですいません) 前に書いた その1 に続いて,「Ruby で学ぶ Ruby」中の MinRuby を Haskell で実装していきたいと思います. ソースコードはコチラ MinRuby ascii.jp にて連載中の 「Ruby で学ぶ Ruby」 でステップバイステップに作成中の処理系. 名前の通り,Ruby のサブクラスになってる. 自分はそれを,大好きな Haskell で実装してみようと試みてる. 連載の方は Ripper というライブラリを使って構文解析を省略してるが,Haskell にそんなライブラリが無いので構文解析から少しずつ書いてる. 今のところ連載の方は,整数演算,論理演算,変数,条件分岐,ループ,組み込み関数が使える. 自分の方は今のところ分岐もどきまで... ステ

  • 1