Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# OPTIONS_GHC -Wall #-}
- -- An example of representing a connection
- -- Types
- data ConnInfo = ConnInfo
- { connState :: ConnState
- , server :: String
- } deriving (Show)
- data ConnState
- = C1 Connecting
- | C2 Connected
- | C3 Disconnected
- deriving (Show)
- data Connecting = Connecting
- { whenInitiated :: Int
- } deriving (Show)
- data Connected = Connected
- { sessionId :: String
- , lastPing :: Maybe Int
- } deriving (Show)
- data Disconnected = Disconnected
- { whenDisconnected :: Int
- } deriving (Show)
- -- Code
- getSessionId :: ConnInfo -> String
- getSessionId ci = getSid $ connState ci where
- getSid (C1 _) = "Connecting..."
- getSid (C2 c) = sessionId c
- getSid (C3 _) = "Disconnected"
- connected :: ConnInfo
- connected = ConnInfo
- (C2 (Connected "session_id_1234" Nothing))
- "api.foo.app"
- main :: IO ()
- main = print $ getSessionId connected -- "session_id_1234"
Add Comment
Please, Sign In to add comment