{-# LANGUAGE
QuasiQuotes, TemplateHaskell,
FlexibleInstances, MultiParamTypeClasses,
DataKinds, TypeFamilies,
UndecidableInstances
#-}
module Main
where
import Prelude
import Domain
import DomainOptics
import Optics
main =
return ()
declare Nothing labelOpticDeriver
[schema|
ServiceAddress:
sum:
network: NetworkAddress
local: FilePath
NetworkAddress:
product:
protocol: TransportProtocol
host: Host
port: Word16
TransportProtocol:
enum:
- tcp
- udp
Host:
sum:
ip: Ip
name: Text
Ip:
sum:
v4: Word32
v6: Word128
Word128:
product:
part1: Word64
part2: Word64
|]