39 lines
987 B
Haskell
39 lines
987 B
Haskell
|
{-# LANGUAGE DataKinds #-}
|
||
|
{-# LANGUAGE TypeOperators #-}
|
||
|
module Servant.HoistSpec where
|
||
|
|
||
|
import Test.Hspec (Spec)
|
||
|
|
||
|
import Servant
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
-- https://github.com/haskell-servant/servant/issues/734
|
||
|
-------------------------------------------------------------------------------
|
||
|
|
||
|
-- This didn't fail if executed in GHCi; cannot have as a doctest.
|
||
|
|
||
|
newtype App a = App a
|
||
|
|
||
|
type API = Get '[JSON] Int
|
||
|
:<|> ReqBody '[JSON] String :> Get '[JSON] Bool
|
||
|
|
||
|
api :: Proxy API
|
||
|
api = Proxy
|
||
|
|
||
|
server :: App Int :<|> (String -> App Bool)
|
||
|
server = undefined
|
||
|
|
||
|
-- Natural transformation still seems to need an explicit type.
|
||
|
f :: App a -> App a
|
||
|
f = id
|
||
|
|
||
|
server' :: App Int :<|> (String -> App Bool)
|
||
|
server' = hoistServer api f server
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
-- Spec
|
||
|
-------------------------------------------------------------------------------
|
||
|
|
||
|
spec :: Spec
|
||
|
spec = return ()
|