@@ -0,0 +1,27 @@
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE DeriveGeneric #-}
3+{-# LANGUAGE DerivingStrategies #-}
4+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5+{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE TypeOperators #-}
7+
8+module Seeded where
9+
10+import Data.Aeson
11+import Data.Typeable (Typeable)
12+import GHC.Generics (Generic)
13+import Servant
14+
15+newtype Seed = Seed Int
16+ deriving (Generic, Eq, Show, Typeable)
17+ deriving newtype (FromHttpApiData, ToHttpApiData)
18+
19+instance ToJSON Seed
20+instance FromJSON Seed
21+
22+type Api = Capture "seed" Seed :> Get '[JSON] ()
23+ :<|> Get '[JSON] ()
24+
25+server :: Server Api
26+server = (\(Seed _) -> error "we blow up if we get here")
27+ :<|> pure ()