Skip to content

Instantly share code, notes, and snippets.

@jkarni
Created November 26, 2014 14:01
Show Gist options
  • Select an option

  • Save jkarni/1513f1a4991c0cb5d9fb to your computer and use it in GitHub Desktop.

Select an option

Save jkarni/1513f1a4991c0cb5d9fb to your computer and use it in GitHub Desktop.
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Typeable
import Data.Data
import Data.Proxy
import GHC.TypeLits
---- vvv this still needs to be fixed
data (path :: Symbol) :> b = Proxy path :> b
data Post a = Post a
deriving (Data, Typeable)
clean :: forall str met. (KnownSymbol str, Data met) => (str :> met) -> String
clean (Proxy :> y) = symbolVal p
++ (dataTypeName $ dataTypeOf y)
where p :: Proxy str
p = Proxy
t1 :: "endpoint" :> Post String
t1 = Proxy :> undefined
main = print $ clean t1
--- prints
--- > "endpointMain.Post"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment