2

Haskell 型を構築したい:

    type SinglePP = (String,GLattice)

GLattice は次のように定義されます。

    class GLattice l where
        join :: l->l->l
        ....

私がそれを行う方法はありますか?

4

2 に答える 2

3

ExistentialQuantification次のように拡張機能を使用します。

{-# LANGUAGE ExistentialQuantification #-}

class GLattice l where
    join :: l -> l -> l

data SinglePP = forall a . (GLattice a) => SinglePP String a

SinglePPこれにより、の 2 番目のフィールドに格納された値がクラスを実装する型を保持することが保証されGLatticeますが、どの型かは指定されません。これは、その操作のみを使用できることを意味しますGLattice

于 2013-05-15T04:50:35.620 に答える