Affichage des articles dont le libellé est Can we deconstruct arbitrary type constructors?. Afficher tous les articles
Affichage des articles dont le libellé est Can we deconstruct arbitrary type constructors?. Afficher tous les articles

mardi 14 février 2017

Can we deconstruct arbitrary type constructors?

Vote count: 0

In Haskell, or any other programming language supporting pattern matching, can we achieve the following:

Given a type constructor e.g. Left :: a -> Either a b I can extract its argument with

let f (Left x) = [x]

Is there any way to achieve the same thing for any type constructor, something like an operator (*) to lift Left x to Apply (λa.Left a) [x] or BinTree x y to Apply (λa,b.BinTree a b) [x,y], so we could do

let extract x = case *x of Apply _ xs -> xs

asked 33 secs ago

Let's block ads! (Why?)



Can we deconstruct arbitrary type constructors?