Haskell 型を構築したい:
type SinglePP = (String,GLattice)
GLattice は次のように定義されます。
class GLattice l where
join :: l->l->l
....
私がそれを行う方法はありますか?
Haskell 型を構築したい:
type SinglePP = (String,GLattice)
GLattice は次のように定義されます。
class GLattice l where
join :: l->l->l
....
私がそれを行う方法はありますか?
ExistentialQuantification
次のように拡張機能を使用します。
{-# LANGUAGE ExistentialQuantification #-}
class GLattice l where
join :: l -> l -> l
data SinglePP = forall a . (GLattice a) => SinglePP String a
SinglePP
これにより、の 2 番目のフィールドに格納された値がクラスを実装する型を保持することが保証されGLattice
ますが、どの型かは指定されません。これは、その操作のみを使用できることを意味しますGLattice
。