Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lisp -> Wasmコンパイラ を作りたかった人の話

Lisp -> Wasmコンパイラ を作りたかった人の話

LispからWasmへのコンパイラを作りたかった…!

Endered

May 14, 2023
Tweet

Other Decks in Programming

Transcript

  1. Lispってどんな言語? 特徴 - 全てが前置記法 - 中置記法が無い - マクロで言語拡張ができる - 記号を名前に使える!

    - 定数を+で囲う(ex. +pi+, +max-connections+) - グローバル変数を*で囲う(ex. *db*, *error-logs*) - boolを返す関数の末尾が?(ex. prime?, even?) - 副作用がある関数の末尾が! (ex. push!, swap!)
  2. クロージャ変換層 クロージャ変換 is? - A. 関数の引数に渡していない値を参照するための仕組み どうやって実装するの? - A. 関数を(関数への参照,

    関数の環境)の組で表現する つまり - クロージャ変換を使えば、 関数型言語の関数を単純な手続きだけで表現できる
  3. 完成しなかった理由 初めて作るコンパイラをLispにしようとするのは難しいですね Lispの言語仕様はコンパイラが作りづらい - 動的型付け言語 - 型周りの設計でかなり時間を取られる - 関数型言語 -

    VMコンパイラは作りやすいが、ネイティブコンパイルは難しい - 可変長引数関数が言語の主体 - これが存在するだけで、設計がすごく難しくなりました