タグ

ブックマーク / qiita.com/h_sakurai (6)

  • 表示的意味論がわからないので簡単な例を翻訳してみた。 - Qiita

    表示的意味論って何? 日語で例を探すも見つからなかった。 英語だと Denotational Semantics というらしい。 Denotational Semantics example でググってみた。 見つかった。 眺めてみよう。 Denotational Semantics Establish the meaning of a program by specifying a meaning for each phrase of the Abstract Syntax Tree (AST). declarations commands expressions The mean of a phrase is defined by the meaning of each subphrase. The meaning is its denotation. Established by

    表示的意味論がわからないので簡単な例を翻訳してみた。 - Qiita
  • SSA変換とSCCP最適化をJavaScriptで実装してみた。 - Qiita

    はじめに このプロジェクトはSSA変換およびSCCP最適化(スパース条件付き定数伝播最適化)をJavaScriptで実装してみたものです。 SSA変換はコードフローグラフを破壊的な変数(レジスタ)を無くして非破壊的なレジスタとファイ関数によって構成するようにしたSSA形式に変換する処理です。 SCCP最適化は、常に固定値に評価されるプログラム内の変数と式を検出し、実行時ではなくコンパイル時にそれらの値を計算する最適化処理です。 今回は非常にやる気がなくてですね、いい加減な文章になっていることを先にお詫び申し上げておきます。[静的単一代入(SSA)形式][SSA] に依存して分析の効率を向上させ(スパース)、実行されない制御フローエッジを検出する機能により、従来の定数伝播とは一線を画しています。一定の分岐条件(条件付き)によれるかもしれないけど。みたいな英語を機械翻訳しただけのものをちゃんと

    SSA変換とSCCP最適化をJavaScriptで実装してみた。 - Qiita
  • アフィン型をPrologで実装してみた - Qiita

    この記事は言語実装 Advent Calendar 2020の16日目の記事です。 Prologに慣れていない人のためにPrologでの単相の型システムを示し、線形型システムであるSystem-Fo(Fポップ)およびアフィン型システムSystem-Fa(Fアフィン)を実装例を示します。 アフィン型システムというとRustのオーナーシップの型システムが近いのですが、Rustのような型システムの質的部分を取り出して実装したものがアフィン型システムです。難解な型システムの数式は嫌がらせのように感じるかもしれませんが、Prologを使えば実際に動かせるのでより理解しやすいものになっているはずです。 1. 単相型システムとlet多相型システム まずは、Prologで単純な型推論を作ってみます: % simple.pl :- op(500,yfx,$),op(600,xfy,:),op(600,xf

    アフィン型をPrologで実装してみた - Qiita
    igrep
    igrep 2020/12/16
    "線形型はリソースの削除を自動的にしてくれないので自前で削除しなければなりませんが、アフィン型は自前削除しなくても自動的に削除してくれるように変更すればよい"
  • 論理型脳で型推論を実装してみた(みんな嫌いな?磯野家の家系図の話は部分型システムの理解に有用だった話 - Qiita

    このエントリは型 Advent Calendar 2019 - Qiita 3日目に遡って投稿しているエントリです。 担当に遅刻した訳ではなくて空いてたので前から詰めて投稿しただけです。 h_sakuraiです。世の中に型推論アルゴリズムは色々知られていると思いますが、Prologを使えば単一化とバックトラックがあるので型推論を素直に書けるよというネタ記事です。 swiprolog のインストール

    論理型脳で型推論を実装してみた(みんな嫌いな?磯野家の家系図の話は部分型システムの理解に有用だった話 - Qiita
  • Prologで様々な多相型推論 - Qiita

    この記事は時空を色々遡って、2017年の言語実装技術の12日目の記事として投稿するために色々と書き換えをしたものです。 11日目、16日目、20日目、21日目と型推論のオンパレードのようになっているので、Prologの記事も合わせて載せたいと思い書き換えて投稿させてもらいます。 概要 型理論、操作的意味論などの理論では一般的に一階述語論理が広く用いられていますが、多くのプログラマにとって馴染みがなく難しい数式に思えます。 Prologを使うことでその図を簡単に理解可能になります。例えば Prolog で多相型推論を記述した TIPER 1 で示されている環境を保存し copy_term 述語によって具体化する手法を用いるとわずか十数行で多相型推論を記述可能です。(付録 A) しかしながら、一般的な言語での実装をするには飛躍があります。そこでここでは、自由型変数を求め型スキームを求めるHin

    Prologで様々な多相型推論 - Qiita
  • Prolog で簡単に言語を作ってみる方法 - Qiita

    概要 プログラミング言語を簡単に作ることはPrologが有用であることを示し、Prologの使い方を説明し、実際にPrologを使って簡単な文法定義を行い、インタプリタを作り、型検査器を作ります。構文定義には正規木文法の定義ライブラリを示します。 todo: パーサ作る必要もないことも書く BNFの読み方を説明する 自然演繹の読み方を説明する Prologのアリティについて説明する 1. はじめに プログラミング言語は、プログラマが1度は作ってみたいと夢見るものの1つです。しかし、なかなか簡単に作れるものではありません。一体どうすれば簡単に言語を作ってみることができるのでしょうか? 以下のような四則演算の言語(図1)を考えましょう: \small \begin{array}{c} \begin{array}{ll} \text{構文}\\ \begin{array}{lcll} t & :

    Prolog で簡単に言語を作ってみる方法 - Qiita
    igrep
    igrep 2017/12/08
    演繹の規則がまんま書けちゃうのかぁ。
  • 1