gadt

    1

    1答えて

    私はXというコンテナ型を持っています。 X以上の異種リストが必要なので、そのコンストラクタはあるタイプの変数aに存在する型に存在します。しかし、私はそれがEqタイプのクラスのインスタンスであることを望みます。ハックなソリューションは次のようになります。 {-# LANGUAGE GADTs #-} data X where X :: (Eq a, Show a) => a -> X ins

    1

    3答えて

    私はハスケルでドメイン固有の言語を書いており、 という2つのASTを持つデザインを定義しています。構文を表す初期の型なしのものと、すべてを表す の最終型付きのものです。私は GADTとして最終的なものを書いています。 は、私はそれがほとんど作業だと思うが、私は は、初期変換する機能を書いてトラブルを抱えている - >最終(タイプをチェックし、加えていくつかの他のものは、すべての参照のような は変数

    13

    1答えて

    Towards Observational Type Theoryの「5. Full OTT」の最後に、OTTでコーパス可能なコンストラクタのインデックス付きデータ型を定義する方法を示します。アイデアは次のようにパラメータにインデックス付きのデータ・タイプを有効にする基本的には次のとおりです。 data IFin : ℕ -> Set where zero : ∀ {n} -> IFin

    2

    1答えて

    私は、GADTが "GADT付きの式"の例をインターネットに散らばって使用しようとするまで、GADTは素晴らしいと思った。 伝統的なADTは、無料でEqの外見上の定義上の平等を親切に提供します。 (非常に当然のことながら)私が手 data Expr a where (:+:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr a (:-

    2

    1答えて

    このヒントは、Showのインスタンスの値のリストを作成することです。 GADTを使用して具体的なShowableタイプを作成する次のスニペットが見つかりました。 data Showable where Showable :: Show a => a -> Showable instance Show Showable where show (Showable x) = show x

    2

    1答えて

    私は、遅延評価を使用して無限シーケンスを処理するライブラリを作成しています。簡潔にするために、シーケンスの各用語のインデックスにOrdという制約をアサーションするために、一般化された代数データ型(GADT)を使用しています。したがって、次のtypechecks:予想通り {-# LANGUAGE GADTs #-} data Term ix cff where Term :: (Or

    4

    1答えて

    を使用してconstrained data typeを宣言できますか?私の試み data ConstrainedRecord a where ConstrainedRecord :: Num a => { first :: a, second :: a } "レコードの構文はここでは違法です"。

    3

    1答えて

    高度な型レベルプログラミングをしようとしています。この例は私の元のプログラムの縮小バージョンです。 私は(ハスケル)型の表現をしています。この例では、関数型、基本型、型変数のみを扱います。 表現Type tは、1つのタイプ変数tによってパラメータ化され、タイプレベルの差別化も可能です。これを達成するために、主にGADTを使用しています。異なる型と型変数は、型レベルのリテラルを使用することによって区

    3

    1答えて

    は、次のデータ型 私はそれのためモノイドインスタンスを導出する方法を {-# LANGUAGE GADTs #-} data Response a where ResponseMap :: HashMap Text (Sum Int) -> Response (HashMap Text (Sum Int)) ResponseSum :: Sum Int -> Respons