existential-type

    1

    1答えて

    実在型の値に多型関数のみを適用できます。 これらのプロパティは、式の対応する量指定子で表現でき、自然変換によって特徴付けられます。同様に 、我々は型コンストラクタ data List a = Nil | Cons a (List a) を定義するときに、このタイプのコンストラクタは型家族に対し、すべてのaの作品は、まさにこのアイデアを特徴づける自然は何の変換 type family TRes

    1

    1答えて

    変換関数を実行したくない場合は、いくつかのオプションがあります。 現在のオプションを処理するメソッドは次のようになります。 def writeOptionalXml[T](content: Option[T], mapFn: T => Xml): Xml = content match { case Some(c) => mapFn(c) case None => N

    5

    3答えて

    trait A { type T def test(t: T): Unit } case class B[S <: A](a: S, t : S#T) { def test() = a.test(t) // Error: type mismatch; // found : B.this.t.type (with underlying type S#T)

    1

    1答えて

    repaの周りに薄いラッパーを書き込んで、私がやっているドメイン固有の作業に余分な制約を与えようとしています。 newtype Tile p r a = Tile { _array :: Array r DIM2 a } Arrayがrepaから来ている:私はタイプがあります。残念ながら newtype Tile p a = Tile { _array :: Array ? DIM2 a }

    4

    1答えて

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

    4

    1答えて

    だから私はちょっと遊んでいて、存在と分散に関する何かを書こうとしていました。この興味深いコードが出てきました。 final case class Box[+T](val value: T) { def >>=[U](f: T => Box[U]) = f(value) def flatMap[U](f: (_ >: T) => (_ <: Box[_ <: U])): Box[

    1

    1答えて

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

    1

    1答えて

    class SomeClass extends ChildClass[F, SomeClass, SomeOtherClass] : abstract class ChildClass[B, C <: ChildClass[B, C, D], D <: OtherChildClass[B, D]] extends ParentClass[B, C, D] そしてそのサブクラスは、このように

    0

    1答えて

    私はdrmacvierのScalaの存在型についてのブログを行っています。それを読んだ後、私はタイプを試していました。rndujaブログで与えられているように、次のようにタイプの平等をチェックしています。 def implicitly[A](implicit a: A) = a // To check equality of two types class =:=[A, B] implic