type-families

    12

    1答えて

    data T a = T Integer (P (T a) a) それらに関して定義 type family P (x :: *) (a :: *) :: * where P x() = x P x a = (x, a) とデータ型(同型×1≅Aを反映するようになって)、次のタイプのファミリーを考慮することにより、いくつかのタイプのハックによって書き込みすることです後者

    6

    1答えて

    私はクラスを持っているとしましょう: class C a b t where f :: (a, b) -> (t a, t b) 今、この定義で、私が言うのインスタンスを定義することができます (a,b) -> (Maybe a, Maybe b) (a,b) -> ([a], [b]) でもないために(私の知る限り理解して): : (a,b) -> (a,b) (a,b)

    14

    1答えて

    型のレベルリストの先頭に何かがあるかどうかを判断する型ファミリがあります。 type family AtHead x xs where AtHead x (x ': xs) = True AtHead y (x ': xs) = False この結果を表すシングルトンを構築したいと思います。これは単純な型のリストでうまく動作します。 data Booly b where

    5

    1答えて

    私は、実行を「見る」ためにモノイドを含む応用ファンクタに取り組んでいます。しかし、時には私はこの部分をまったく気にしないので、モノオイドの選択は決して消費されないので無関係です。 {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-}

    7

    2答えて

    Haskellの中箱なしタイプは、これらの制限を持っている理由、私は疑問に思う: newtype Vec = Vec (# Float#, Float# #) いますが、型synonimを定義することができます:あなたはアンボクシングタイプのためのnewtypeを定義することはできません を type Vec = (# Float#, Float# #) タイプファミリーはボックス化されて

    19

    1答えて

    タイプの利点同義語ファミリーは明確です - それはタイプレベルの機能です。 しかし、データファミリではそうではありません - 私の質問は、データファミリの使用ケースですか?どこで使うべきですか?

    7

    2答えて

    タイプファミリーで式を表現しようとしていますが、私が望む制約を記述する方法を見つけられないようで、それができないと感じ始めています。ここに私のコードです: class Evaluable c where type Return c :: * evaluate :: c -> Return c data Negate n = Negate n instance (Eval

    16

    1答えて

    GHCi(または他の場所)内に存在し、任意のタイプの式からタイプの同義語やファミリを拡張する機能があるのだろうかと思います。例えば 、私はこれらの型を持っている場合、 data A = A data B = B data F a = F a data G a = G a data H a b = H a b type S a b = H (F a) (G b) type T a =

    7

    1答えて

    私はHaskellに埋め込まれた言語で作業しています。私の言語はソースコードとして印刷することができるので、Compileクラスを作成し、印刷可能なすべてのプログラム要素に対してクラスインスタンスを作成しました。そうすれば、コードを構成的にダンプすることができます。これは、モードの概念が考慮される前にうまくいきました。 各言語は2つのモード(クラスModeのインスタンスとして実装)で使用できます。

    7

    1答えて

    まず、いくつかの典型的なタイプレベルの自然数のものから始めました。 {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeFamilies #-} data Nat = Z | S Nat type family Plus (n :: Nat