gadt

    10

    2答えて

    私は最近F-algebrasについて少し学んだ: https://www.fpcomplete.com/user/bartosz/understanding-algebras。 私は、この機能をより高度な種類(索引付きおよび高級品)にしたいと考えていました。 さらに、 "Haskell a Promotion"(http://research.microsoft.com/en-us/people/

    8

    2答えて

    F#はOOP付きのMLです。ハスケルの一般化された代数的データ型と型式に最も近いのは何ですか?

    1

    2答えて

    私は次与えてきた私のHaskellの対象のためのユニからの継続練習を持っている: data Expr = Con Value | And Expr Expr data Value = IntValue Int | BoolValue Bool est :: Expr -> Val est (Con v) = v est (And x y) = ca

    5

    1答えて

    は、私は本当に持って主張します式が型付けされました。この行はコンパイラが渡さ data PPair where PPair :: (String, Expr a) -> PPair たら、私は私は本当に間違って何かをやっていると感じていた:私はGADTでPPairを定義し、[PPair]として、私は状態を実装しようとしました。私はその考えを抑え、コーディングを続けた。私が手 eval

    8

    1答えて

    GADTの紹介hereを読んでいました。プログラマーに構文木の種類を偉大にするように制限するというアイデアがありました。このアイデアを簡単なラムダ計算インタープリタに入れました。後で私はこの構文木に文字列をパースすることができないことに気づきました。なぜなら、1つの解析関数は、入力に応じてさまざまな種類の構文木を返す必要があるからです。 {-# LANGUAGE GADTs #-} data I

    13

    1答えて

    私はただ読んでいるだけです。種類をparametrisedの導入部で、著者はこの宣言 data List (A : Set) : Set where [] : List A _::_ : A → List A → List A にListの種類がSet → Setであることを言及し、Aこと、すなわち両方のコンストラクタへの暗黙の引数になります。 [] : {A : Set}

    6

    1答えて

    EnumクラスのHaskell導出メカニズムの拡張はありますか教えてください。私は、 `` nullary constructors ''のケースのほかに、多くの合理的な状況があることを意味します。このトピックに関連する作品はありますか?

    14

    1答えて

    GADTとデータ型を組み合わせるのが本当に好きです。以前よりも型の安全性が向上しています(ほとんどの場合、AgqなどのCoqとほとんど同じです)。悲しいことに、最も単純な例ではパターンマッチングは失敗し、型クラス以外の関数を書く方法はないと思います。 は、ここに私の悲しみを説明するための例です: data Nat = Z | S Nat deriving Eq data Le :: Nat -

    7

    1答えて

    時々、現存量の型の値を返す必要が生じます。これは、私がファントムタイプ(例えば、バランスのとれたツリーの深さを表す)を扱っているときに最も頻繁に起こります。 AFAIK GHCにはexistsという限定記号がありません。 existentially quantified data types(直接またはGADTのいずれかのみ)を許可します。 は例を与えるために、私はこのような機能を持っているしたい

    20

    2答えて

    Type-Safe Observable Sharing in Haskell Andy Gillは、DSLのHaskellレベルで存在していた共有を回復する方法を示しています。彼の解決策はdata-reify packageに実装されています。このアプローチはGADTと連携するように変更できますか?例えば、このGADTを与え: data Ast e where IntLit :: In