type-level-computation

    2

    1答えて

    多次元配列(Tensors)をタイプセーフな方法で表現する型が必要です。私は、たとえば書くことができます:全ての要素がIntegerの どのように使用して、このタイプを定義している2つの要素を持っているそれぞれの3つの要素があり、それぞれが5要素を、持っている多次元配列を表すことになりzero :: Tensor (5,3,2) Integer を、タイプレベルのプログラミング? 編集: この使用

    4

    2答えて

    私は比較的新しいHaskellです。HListの定義の1つを理解しようとしています。 data instance HList '[] = HNil newtype instance HList (x ': xs) = HCons1 (x, HList xs) pattern HCons x xs = HCons1 (x, xs) 私はカップルの具体的な質問があります。 を私は見ている'[]

    3

    1答えて

    私はScalaの型レベルプログラミングを深めたいと思っていましたが、私は小さなエクササイズを始めました。私はタイプレベルでのPeano数の実装から始めました。以下はこのコードです! sealed trait PeanoNumType { // Type at the end indicates to the reader that we are dealing with types ty

    4

    1答えて

    ここで同様の質問がいくつかあります。私はそれらを読んで、自分のコードが動作するような答えは見つけられませんでした。私は、通常よりも正確な型指定を必要とするコーナーケースに当たったと思います。 私の場合は2単語です。私はスカラ言語の理解を深めるために非常にシンプルな異種リストの例を作りたいと思っています。私が自分自身に設定した制限があります。どんな形でも暗黙の意味はなく、ただのスカラ型システムです。

    3

    1答えて

    文字列に対して一連の前処理ステップを実行していますが、私はHListを使用してステップの安全性を向上させることを考えていました。いくつかの処理ステップは他の処理の後に実行する必要があるので、私は型システムでそれをエンコードすることを考えていました。私の最初の試みでした:それはそれが動作する可能順序でシーケンスdoA>doB>doDependsOnA>doDependsOnB、のすべてを呼び出すため

    19

    2答えて

    私はdfoldを使用しようとしています せずに機能をn回呼び出すために、タイプが各繰り返し関数呼び出しの後に変更することを可能にする折り目を作成すると、here dfold :: KnownNat k => Proxy (p :: TyFun Nat * -> *) -> (forall l. SNat l -> a -> (p @@ l) -> p @@ (l

    1

    1答えて

    私はHaskell型レベルプログラミングについて学びます。私はタイプレベルのリストで、キー、シンボルをルックアップするために少し機能を書いた: {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} import G

    19

    0答えて

    私はハスケルシングルトンを突き詰めようとしています。言語拡張にDataKindsこれを使用することにより data Nat = Zero | Succ Nat :紙Dependently Typed Programming with Singletons で、彼のブログ記事singletons v0.9 Released! リチャード・アイゼンバーグで はペアノの公理と自然数を定義するデータ型

    5

    1答えて

    は、私は一種[*]の、種類のリストがあるとします。 let Ts = '[Int, Bool, Char] 私はタプルのチェーンにこれを変換したい: type family Tupled (ts :: [*]) z :: * type instance Tupled (t ': ts) z = (t, Tupled ts z) type instance Tupled '[] z = z

    4

    1答えて

    GHC.TypeLitsモジュールのNatタイプを使用しています。これはプログラマインターフェイスを別のライブラリに定義する必要があると言います。いずれにしても、GHC.TypeLitsは、コンパイル時間NatをランタイムIntegerに変換するクラス機能natValを有するクラスKnownNatを有する。また、コンパイル時間Natを追加する型関数(+)があります。 問題は(KnownNat n1