happstack-server-0.2.1: src/Happstack/Server/HTTP/SocketTH.hs
{-# LANGUAGE TemplateHaskell #-}
module Happstack.Server.HTTP.SocketTH(supportsIPv6) where
import Language.Haskell.TH
import Data.List
import Data.Maybe
import Network.Socket(SockAddr(..))
-- find out at compile time if the SockAddr6 / HostAddress6 constructors are available
supportsIPv6 :: Bool
supportsIPv6 = $(let c = "Network.Socket.SockAddrInet6"; d = ''SockAddr in
do TyConI (DataD _ _ _ cs _) <- reify d
if isJust (find (\(NormalC n _) -> show n == c) cs)
then [| True |]
else [| False |] )