data-diverse-0.5.0.0: src/Data/Diverse/Reduce.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Data.Diverse.Reduce where
-- | Convert something @v@ into @r@ using handlers.
-- This class is required in order to step through all the different types in a variant.
class Reduce v handler r where
reduce :: handler r -> v -> r