並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 4 件 / 4件

新着順 人気順

GADTsの検索結果1 - 4 件 / 4件

  • Compiling higher order functions with GADTs

    Implementing first class functions in a bytecode interpreter is trivial. But how do compilers that generate machine code (or lower to C, or SSA) implement higher order functions? Back in 2021, I found an answer when contributing closures to the Pallene compiler. Today I was researching something loosely related, and found yet another neat trick called defunctionalization in this paper. Defunctiona

    • OCaml の GADTs について

      関数型プログラミング言語 OCaml の GADTs (Generalized Algebraic Datatypes) に関して、何となく意味論を想像しながらサンプルコードを写経してみても全然しっくりこなかったので、わかったことと疑問点をまとめていこうと思います。

        OCaml の GADTs について
      • [PFDS写経]GADTs拡張で型コンストラクタに制約をつける | DevelopersIO

        はじめに 7月から期が変わったこともあり、PFDS をHaskellで写経しながら読み進めています。HaskellはすごいH本を斜め読みした程度しか触っていないので写経と言ってもHaskellについて調べながら進めています。 今回はPFDS から「2.2 二分探索木」を読みました。 二分探索木 文中で取り上げられている二分探索木は以下のようなものです。 datatype Tree = E | T of Tree * Elem * Tree Haskellで素直に書くと以下のようになると思います。 data Tree = E | T Tree a Tree 型パラメータに制約をつけたい ところで二分探索木の性質を考えた時、上記の型パラメータaは全順序づけされている必要があります。この制約をTreeの定義に含めるにはGADTs(Generalized algebraic datatypes)拡

          [PFDS写経]GADTs拡張で型コンストラクタに制約をつける | DevelopersIO
        • GADTs · What I Wish I Knew When Learning Haskell (日本語訳)

          GADTs 基本 一般化された代数的データ型 (Generalized Algebraic Data type, GADT) は、代数的データ型を拡張し、データ型のコンストラクタに型の相等性の制約を付加できるようにして、ありふれた代数的データ型では表現できない型を作れるようにしたものです。 -XGADTs はデータ型の宣言に対する代替構文(-XGADTSyntax)を暗黙のうちに有効にしています。以下の 2 つの宣言が等価になるのです。 -- 普通の構文 data List a = Empty | Cons a (List a) -- GADT の構文 data List a where Empty :: List a Cons :: a -> List a -> List a 例えば、データ型 Term を考えると、あらゆる型になりうる a でパラメータ化された Term を受け取り、そ

          1