On 07/12/12 02:19, Edward Kmett wrote:

I am happy to announce the release of version 3.7 of the lens package,
which provides "Lenses, Folds, and Traversals" for working with
arbitrary data types.

Do you use types to index the fields of tuples? It's a good general mechanism to represent the "tupleness" of certain types. I had a quick look and it didn't seem you were doing this.

For instance, consider this type:

 data P = MkP Int Bool Char

If one wants to consider the three fields as separate items, one can construct a type that's an index to them:

 data PInd :: * -> * where
   PFirst :: PInd Int
   PSecond :: PInd Bool
   PThird :: PInd Char

It's then straightforward to construct an isomorphism between P and "forall a. PInd a -> a". You can also use it to build lenses for the fields, etc.

-- Ashley

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to