Created
March 19, 2021 03:59
-
-
Save emmanueldenloye/68767ab87827a5e048d4a9cecffa43b4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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