Skip to content

Instantly share code, notes, and snippets.

@emmanueldenloye
Created March 19, 2021 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emmanueldenloye/68767ab87827a5e048d4a9cecffa43b4 to your computer and use it in GitHub Desktop.
Save emmanueldenloye/68767ab87827a5e048d4a9cecffa43b4 to your computer and use it in GitHub Desktop.
#!/usr/bin/env cabal
{- cabal:
build-depends: base
, dependent-sum
, mtl
-}
{-# language GADTs #-}
{-# language LambdaCase #-}
import Data.Dependent.Sum (DSum(..))
import Data.Functor.Identity
data MinimalTag a where
MinimalTag_String :: MinimalTag String
MinimalTag_Int :: MinimalTag Int
MinimalTag_Double :: MinimalTag Double
MinimalTag_Integer :: MinimalTag Integer
MinimalTag_Float :: MinimalTag Float
val :: DSum MinimalTag Identity
val = MinimalTag_Int :=> Identity 42
main :: IO ()
main = putStrLn $ function val
function :: DSum MinimalTag Identity -> String
function = \case
MinimalTag_String :=> Identity string -> show string
MinimalTag_Int :=> Identity int -> show int
MinimalTag_Double :=> Identity double -> show double
MinimalTag_Integer :=> Identity integer -> show integer
MinimalTag_Float :=> Identity float -> show float
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment