タグ

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

  • Menhirが便利

    こんにちは、びしょ〜じょです。これはWORD Advent Calendar 2017の記事です。 12月3日といえば冴草きいちゃんの誕生日!!!! みんなで祝いましょう。 と思ったら『NEW GAME!』の遠山りんさんの誕生日でもあるのか!! この日はめでたいなぁ、国民の祝日にしましょう。 WORDとは何か 1. はじめに みなさんOCamlは書いてますか。今年はほとんどOCamlとLaTeXしか書いてません。 OCamlといえばメタランゲージとのことですので、メタランゲージでランゲージを作りたくなります。 syntax.mlみたいなファイルにデータタイプを定義して、そのあとどうしますか。 全部手打ちでしょうか、それとも… 2. パーザージェネレーター 人類は偉い! 人類は偉いのでパーザー自体を書かずともいい雰囲気のものを書くとパーザーを作ってくれるパーザージェネレーターというものがあり

    Menhirが便利
  • 貧者の Algebraic Data Types と(浅い)網羅性判定

    こんにちは、びしょ~じょです。 これは TypeScript アドベントカレンダー 2020 の3日目の記事です。 ちなみに12月3日は冴草きいちゃんの誕生日です。大変めでたいですね。 1. はじめに 関数型プログラミングといえばなんですか? はい円楽さん早かった! はいはい、 パターンマッチング、いいですね。 パターンマッチングといえばプリミティブな数値や文字列のリテラルのみならず、ユーザが定義した型もその構造によってマッチできます。回りくどい言い方をしましたが代数的データ型(Algebraic Data Types, ADTs)です。 listing 1.1. 例えば OCamltype 'a option = | None | Some of 'a let to_default default o = match o with | None -> default | Some v -

    貧者の Algebraic Data Types と(浅い)網羅性判定
  • Unsound TypeScript: spread syntax

    こんにちは、びしょ〜じょです。 最近は脳を全く使っておらずなんたらかんたら。 Promise の話はなんかムリそうだったので、今度は勘ではなく文献等にあたって実装するかもしれません。 でもそれってオレやる必要ある? とにかく今回は別の話をします。 はじめに TypeScriptの利用を積極的に避けている人、賢い。 TypeScriptは漸進的型付けを採用しており、よくわからない型に any を付けることができます。 そしてTypeScriptは(gradural) subtypingを採用しており、さらに any があらゆる型のtop typeとなっております。 このことは、文献[1]を読んでいただくと分かるとおり(読むまでもなく直感的にも分かりますが)、型システムはunsoundになります。 const x: string = "hoge"; // string <: any const

    Unsound TypeScript: spread syntax
    igrep
    igrep 2020/08/25
    spread構文怖いな
  • 1