Resolving dependencies... Starting auto-update-0.1.6 Starting appar-0.1.8 Starting SHA-1.6.4.4 Starting base-compat-0.11.1 Building appar-0.1.8 Building auto-update-0.1.6 Building SHA-1.6.4.4 Building base-compat-0.11.1 Completed appar-0.1.8 Starting base-orphans-0.8.2 Completed auto-update-0.1.6 Starting base64-bytestring-1.1.0.0 Building base-orphans-0.8.2 Building base64-bytestring-1.1.0.0 Completed base64-bytestring-1.1.0.0 Starting basement-0.0.11 Building basement-0.0.11 Completed base-orphans-0.8.2 Starting blaze-builder-0.4.1.0 Building blaze-builder-0.4.1.0 Completed base-compat-0.11.1 Starting bsb-http-chunked-0.0.0.4 Completed SHA-1.6.4.4 Starting byteorder-1.0.4 Building bsb-http-chunked-0.0.0.4 Building byteorder-1.0.4 Completed bsb-http-chunked-0.0.0.4 Starting bytestring-builder-0.10.8.2.0 Completed byteorder-1.0.4 Starting cabal-doctest-1.0.8 Building bytestring-builder-0.10.8.2.0 Building cabal-doctest-1.0.8 Completed blaze-builder-0.4.1.0 Starting clock-0.8 Completed bytestring-builder-0.10.8.2.0 Starting colour-2.3.5 Building clock-0.8 Building colour-2.3.5 Completed clock-0.8 Starting data-default-class-0.1.2.0 Completed cabal-doctest-1.0.8 Starting dlist-1.0 Building data-default-class-0.1.2.0 Building dlist-1.0 Completed data-default-class-0.1.2.0 Starting easy-file-0.2.2 Building easy-file-0.2.2 Completed dlist-1.0 Starting entropy-0.4.1.6 Completed colour-2.3.5 Starting exceptions-0.10.4 Completed easy-file-0.2.2 Starting file-embed-0.0.13.0 Building exceptions-0.10.4 Building file-embed-0.0.13.0 Building entropy-0.4.1.6 Completed file-embed-0.0.13.0 Starting first-class-families-0.8.0.0 Building first-class-families-0.8.0.0 Completed exceptions-0.10.4 Starting ghc-tcplugins-extra-0.3.2 Building ghc-tcplugins-extra-0.3.2 Completed entropy-0.4.1.6 Starting hashable-1.3.0.0 Completed first-class-families-0.8.0.0 Starting hourglass-0.2.12 Building hashable-1.3.0.0 Building hourglass-0.2.12 Completed ghc-tcplugins-extra-0.3.2 Starting integer-logarithms-1.0.3 Building integer-logarithms-1.0.3 Completed integer-logarithms-1.0.3 Starting mime-types-0.1.0.9 Building mime-types-0.1.0.9 Completed hashable-1.3.0.0 Starting network-3.1.2.0 Building network-3.1.2.0 Completed hourglass-0.2.12 Starting network-byte-order-0.1.5 Building network-byte-order-0.1.5 Completed mime-types-0.1.0.9 Starting old-locale-1.0.0.7 Building old-locale-1.0.0.7 Completed network-byte-order-0.1.5 Starting primitive-0.7.1.0 Building primitive-0.7.1.0 Completed old-locale-1.0.0.7 Starting random-1.1 Building random-1.1 Completed random-1.1 Starting semigroups-0.19.1 Building semigroups-0.19.1 Completed semigroups-0.19.1 Starting splitmix-0.1.0.1 Building splitmix-0.1.0.1 Completed network-3.1.2.0 Starting syb-0.7.1 Building syb-0.7.1 Completed basement-0.0.11 Starting tagged-0.8.6 Building tagged-0.8.6 Completed splitmix-0.1.0.1 Starting th-abstraction-0.3.2.0 Building th-abstraction-0.3.2.0 Completed syb-0.7.1 Starting transformers-compat-0.6.5 Building transformers-compat-0.6.5 Completed tagged-0.8.6 Starting type-errors-pretty-0.0.1.1 Building type-errors-pretty-0.0.1.1 Completed primitive-0.7.1.0 Starting unix-compat-0.5.2 Completed type-errors-pretty-0.0.1.1 Starting unliftio-core-0.2.0.1 Building unix-compat-0.5.2 Building unliftio-core-0.2.0.1 Completed th-abstraction-0.3.2.0 Starting void-0.7.3 Building void-0.7.3 Completed transformers-compat-0.6.5 Starting word8-0.1.3 Building word8-0.1.3 Completed unliftio-core-0.2.0.1 Starting zlib-0.6.2.2 Completed void-0.7.3 Starting time-manager-0.0.0 Building zlib-0.6.2.2 Completed unix-compat-0.5.2 Starting time-compat-1.9.3 Building time-manager-0.0.0 Building time-compat-1.9.3 Completed word8-0.1.3 Starting base-compat-batteries-0.11.1 Completed time-manager-0.0.0 Starting blaze-markup-0.8.2.7 Building base-compat-batteries-0.11.1 Building blaze-markup-0.8.2.7 Completed time-compat-1.9.3 Starting cookie-0.4.5 Completed blaze-markup-0.8.2.7 Starting ansi-terminal-0.10.3 Building cookie-0.4.5 Completed zlib-0.6.2.2 Starting unordered-containers-0.2.12.0 Building ansi-terminal-0.10.3 Building unordered-containers-0.2.12.0 Completed base-compat-batteries-0.11.1 Starting psqueues-0.2.7.2 Completed cookie-0.4.5 Starting data-fix-0.3.0 Building psqueues-0.2.7.2 Building data-fix-0.3.0 Completed ansi-terminal-0.10.3 Starting case-insensitive-1.2.1.0 Building case-insensitive-1.2.1.0 Completed data-fix-0.3.0 Starting async-2.2.2 Building async-2.2.2 Completed case-insensitive-1.2.1.0 Starting old-time-1.1.0.3 Completed async-2.2.2 Starting uuid-types-1.0.3 Completed psqueues-0.2.7.2 Starting simple-sendfile-0.2.30 Building old-time-1.1.0.3 Building uuid-types-1.0.3 Building simple-sendfile-0.2.30 Completed unordered-containers-0.2.12.0 Starting iproute-1.7.9 Completed simple-sendfile-0.2.30 Starting memory-0.15.0 Building iproute-1.7.9 Building memory-0.15.0 Completed uuid-types-1.0.3 Starting QuickCheck-2.14.1 Completed old-time-1.1.0.3 Starting distributive-0.6.2 Building QuickCheck-2.14.1 Building distributive-0.6.2 Completed iproute-1.7.9 Starting vector-0.12.1.2 Building vector-0.12.1.2 Completed distributive-0.6.2 Starting scientific-0.3.6.2 Building scientific-0.3.6.2 Completed memory-0.15.0 Starting atomic-primops-0.8.3 Building atomic-primops-0.8.3 Completed scientific-0.3.6.2 Starting type-errors-0.2.0.0 Building type-errors-0.2.0.0 Completed atomic-primops-0.8.3 Starting resourcet-1.2.4.2 Building resourcet-1.2.4.2 Completed type-errors-0.2.0.0 Starting blaze-html-0.9.1.2 Building blaze-html-0.9.1.2 Completed resourcet-1.2.4.2 Starting ansi-wl-pprint-0.6.9 Building ansi-wl-pprint-0.6.9 Completed ansi-wl-pprint-0.6.9 Starting http-types-0.12.3 Building http-types-0.12.3 Completed QuickCheck-2.14.1 Starting streaming-commons-0.2.2.1 Building streaming-commons-0.2.2.1 Completed http-types-0.12.3 Starting vault-0.3.1.4 Building vault-0.3.1.4 Completed vault-0.3.1.4 Starting unix-time-0.4.7 Building unix-time-0.4.7 Completed streaming-commons-0.2.2.1 Starting comonad-5.0.6 Completed unix-time-0.4.7 Starting pem-0.2.4 Building pem-0.2.4 Building comonad-5.0.6 Completed pem-0.2.4 Starting cryptonite-0.27 Building cryptonite-0.27 Completed blaze-html-0.9.1.2 Starting asn1-types-0.3.4 Building asn1-types-0.3.4 Completed comonad-5.0.6 Starting attoparsec-0.13.2.4 Building attoparsec-0.13.2.4 Completed asn1-types-0.3.4 Starting unagi-chan-0.4.1.3 Building unagi-chan-0.4.1.3 Completed vector-0.12.1.2 Starting optparse-applicative-0.15.1.0 Building optparse-applicative-0.15.1.0 Completed unagi-chan-0.4.1.3 Starting http2-2.0.5 Building http2-2.0.5 Completed attoparsec-0.13.2.4 Starting wai-3.2.2.1 Building wai-3.2.2.1 Completed optparse-applicative-0.15.1.0 Starting fast-logger-3.0.1 Building fast-logger-3.0.1 Completed wai-3.2.2.1 Starting bifunctors-5.5.7 Building bifunctors-5.5.7 Completed fast-logger-3.0.1 Starting asn1-encoding-0.9.6 Building asn1-encoding-0.9.6 Completed asn1-encoding-0.9.6 Starting polysemy-1.3.0.0 Building polysemy-1.3.0.0 Completed bifunctors-5.5.7 Starting websockets-0.12.7.1 Building websockets-0.12.7.1 Completed http2-2.0.5 Starting http-date-0.0.8 Building http-date-0.0.8 Completed http-date-0.0.8 Starting wai-logger-2.3.6 Building wai-logger-2.3.6 Completed websockets-0.12.7.1 Starting asn1-parse-0.9.5 Building asn1-parse-0.9.5 Completed asn1-parse-0.9.5 Starting assoc-1.0.1 Building assoc-1.0.1 Completed wai-logger-2.3.6 Completed assoc-1.0.1 Starting these-1.1.1.1 Building these-1.1.1.1 Completed polysemy-1.3.0.0 Starting polysemy-plugin-0.2.5.0 Completed these-1.1.1.1 Starting strict-0.4 Building strict-0.4 Building polysemy-plugin-0.2.5.0 Completed strict-0.4 Starting aeson-1.5.3.0 Building aeson-1.5.3.0 Completed polysemy-plugin-0.2.5.0 Completed cryptonite-0.27 Starting x509-1.7.5 Building x509-1.7.5 Completed x509-1.7.5 Starting warp-3.3.13 Building warp-3.3.13 Completed aeson-1.5.3.0 Starting wai-extra-3.0.29.2 Building wai-extra-3.0.29.2 Completed warp-3.3.13 Completed wai-extra-3.0.29.2 Starting wai-app-static-3.1.7.1 Building wai-app-static-3.1.7.1 Completed wai-app-static-3.1.7.1 Starting wai-websockets-3.0.1.2 Building wai-websockets-3.0.1.2 Completed wai-websockets-3.0.1.2 Starting polysemy-webserver-0.2.1.0 Building polysemy-webserver-0.2.1.0 Failed to install polysemy-webserver-0.2.1.0 Build log ( /home/builder/.cabal/logs/ghc-8.6.3/polysemy-webserver-0.2.1.0-A1REaII7N2XABJ0LD2hCwF.log ): cabal: Entering directory '/tmp/cabal-tmp-7117/polysemy-webserver-0.2.1.0' Configuring polysemy-webserver-0.2.1.0... Preprocessing library for polysemy-webserver-0.2.1.0.. Building library for polysemy-webserver-0.2.1.0.. [1 of 2] Compiling Paths_polysemy_webserver ( dist/build/autogen/Paths_polysemy_webserver.hs, dist/build/Paths_polysemy_webserver.o ) [2 of 2] Compiling Polysemy.WebServer ( src/Polysemy/WebServer.hs, dist/build/Polysemy/WebServer.o ) src/Polysemy/WebServer.hs:252:68: error: • Could not deduce: m ~ Sem rInitial0 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ () bound by a pattern with constructor: StartWebServer :: forall (m :: * -> *). Warp.Port -> (Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived) -> WebServer m (), in a case alternative at src/Polysemy/WebServer.hs:252:18-40 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Wai.Request -> PendingWebRequest -> Sem rInitial0 Wai.ResponseReceived Actual type: Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived • In the second argument of ‘runStartWebServer’, namely ‘app’ In the expression: runStartWebServer port app In a case alternative: StartWebServer port app -> runStartWebServer port app • Relevant bindings include app :: Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived (bound at src/Polysemy/WebServer.hs:252:38) v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 252 | StartWebServer port app -> runStartWebServer port app | ^^^ src/Polysemy/WebServer.hs:253:92: error: • Could not deduce: m ~ Sem rInitial1 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ () bound by a pattern with constructor: StartWebServerSettings :: forall (m :: * -> *). Warp.Settings -> (Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived) -> WebServer m (), in a case alternative at src/Polysemy/WebServer.hs:253:18-52 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Wai.Request -> PendingWebRequest -> Sem rInitial1 Wai.ResponseReceived Actual type: Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived • In the second argument of ‘runStartWebServerSettings’, namely ‘app’ In the expression: runStartWebServerSettings settings app In a case alternative: StartWebServerSettings settings app -> runStartWebServerSettings settings app • Relevant bindings include app :: Wai.Request -> PendingWebRequest -> m Wai.ResponseReceived (bound at src/Polysemy/WebServer.hs:253:50) v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 253 | StartWebServerSettings settings app -> runStartWebServerSettings settings app | ^^^ src/Polysemy/WebServer.hs:254:54: error: • Could not deduce: m ~ Sem rInitial2 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Wai.ResponseReceived bound by a pattern with constructor: RespondWebRequest :: forall (m :: * -> *). PendingWebRequest -> Wai.Response -> WebServer m Wai.ResponseReceived, in a case alternative at src/Polysemy/WebServer.hs:254:18-49 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial2) r) (f Wai.ResponseReceived) • In the expression: runRespondWebRequest reqId response In a case alternative: RespondWebRequest reqId response -> runRespondWebRequest reqId response In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 254 | RespondWebRequest reqId response -> runRespondWebRequest reqId response | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:255:40: error: • Could not deduce: m ~ Sem rInitial3 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Maybe BS.ByteString bound by a pattern with constructor: GetBody :: forall (m :: * -> *). Int -> Wai.Request -> WebServer m (Maybe BS.ByteString), in a case alternative at src/Polysemy/WebServer.hs:255:18-35 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial3) r) (f (Maybe BS.ByteString)) • In the expression: runGetBody maxLen req In a case alternative: GetBody maxLen req -> runGetBody maxLen req In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 255 | GetBody maxLen req -> runGetBody maxLen req | ^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:257:56: error: • Could not deduce: m ~ Sem rInitial4 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Maybe Wai.Response bound by a pattern with constructor: UpgradeToWebSocketsResponse :: forall (m :: * -> *). WS.ConnectionOptions -> (WS.PendingConnection -> m ()) -> Wai.Request -> WebServer m (Maybe Wai.Response), in a case alternative at src/Polysemy/WebServer.hs:256:18-57 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: WS.PendingConnection -> Sem rInitial4 () Actual type: WS.PendingConnection -> m () • In the second argument of ‘runUpgradeToWebSocketsResponse’, namely ‘app’ In the expression: runUpgradeToWebSocketsResponse opts app req In a case alternative: UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req • Relevant bindings include app :: WS.PendingConnection -> m () (bound at src/Polysemy/WebServer.hs:256:51) v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 257 | runUpgradeToWebSocketsResponse opts app req | ^^^ src/Polysemy/WebServer.hs:259:20: error: • Could not deduce: m ~ Sem rInitial5 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Either (Either WS.HandshakeException WS.ConnectionException) WS.Connection bound by a pattern with constructor: AcceptPendingWebSocketConnection :: forall (m :: * -> *). WS.PendingConnection -> WS.AcceptRequest -> WebServer m (Either (Either WS.HandshakeException WS.ConnectionException) WS.Connection), in a case alternative at src/Polysemy/WebServer.hs:258:18-59 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial5) r) (f (Either (Either WS.HandshakeException WS.ConnectionException) WS.Connection)) • In the expression: runAcceptPendingWebSocketConnection conn opts In a case alternative: AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 259 | runAcceptPendingWebSocketConnection conn opts | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:261:20: error: • Could not deduce: m ~ Sem rInitial6 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ () bound by a pattern with constructor: RejectPendingWebSocketConnection :: forall (m :: * -> *). WS.PendingConnection -> WS.RejectRequest -> WebServer m (), in a case alternative at src/Polysemy/WebServer.hs:260:18-59 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial6) r) (f ()) • In the expression: ioToWebServerTactics (WS.rejectRequestWith conn opts) In a case alternative: RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 261 | ioToWebServerTactics (WS.rejectRequestWith conn opts) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:263:52: error: • Could not deduce: m ~ Sem rInitial7 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Maybe a1 bound by a pattern with constructor: WhilePingingWebSocket :: forall (m :: * -> *) a. WS.Connection -> Int -> m a -> WebServer m (Maybe a), in a case alternative at src/Polysemy/WebServer.hs:262:18-49 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem rInitial7 a1 Actual type: m a1 • In the third argument of ‘runWhilePingingWebSocket’, namely ‘app’ In the expression: runWhilePingingWebSocket conn n app In a case alternative: WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app • Relevant bindings include app :: m a1 (bound at src/Polysemy/WebServer.hs:262:47) v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 263 | runWhilePingingWebSocket conn n app | ^^^ src/Polysemy/WebServer.hs:265:20: error: • Could not deduce: m ~ Sem rInitial8 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ () bound by a pattern with constructor: SendWebSocketDataMessages :: forall (m :: * -> *). WS.Connection -> [WS.DataMessage] -> WebServer m (), in a case alternative at src/Polysemy/WebServer.hs:264:18-52 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial8) r) (f ()) • In the expression: ioToWebServerTactics $ WS.sendDataMessages conn msgs In a case alternative: SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 265 | ioToWebServerTactics $ WS.sendDataMessages conn msgs | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:267:20: error: • Could not deduce: m ~ Sem rInitial9 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: x ~ Either WS.ConnectionException WS.DataMessage bound by a pattern with constructor: ReceiveWebSocketDataMessage :: forall (m :: * -> *). WS.Connection -> WebServer m (Either WS.ConnectionException WS.DataMessage), in a case alternative at src/Polysemy/WebServer.hs:266:18-49 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial9) r) (f (Either WS.ConnectionException WS.DataMessage)) • In the expression: runReceiveWebSocketDataMessage conn In a case alternative: ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 267 | runReceiveWebSocketDataMessage conn | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/Polysemy/WebServer.hs:269:20: error: • Could not deduce: m ~ Sem rInitial10 from the context: Member (Final IO) r bound by the type signature for: runWebServerFinal :: forall (r :: [(* -> *) -> * -> *]) a. Member (Final IO) r => Sem (WebServer : r) a -> Sem r a at src/Polysemy/WebServer.hs:(248,1)-(249,54) or from: (x ~ (), WS.WebSocketsData a1) bound by a pattern with constructor: SendWebSocketCloseCode :: forall a (m :: * -> *). WS.WebSocketsData a => WS.Connection -> Word16 -> a -> WebServer m (), in a case alternative at src/Polysemy/WebServer.hs:268:18-53 ‘m’ is a rigid type variable bound by a type expected by the context: forall x (m :: * -> *). WebServer m x -> Tactical WebServer m r x at src/Polysemy/WebServer.hs:(251,3)-(270,14) Expected type: Sem (WithTactics WebServer f m r) (f x) Actual type: Sem (WithTactics WebServer f (Sem rInitial10) r) (f ()) • In the expression: ioToWebServerTactics $ WS.sendCloseCode conn code msg In a case alternative: SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg In the expression: case v of StartWebServer port app -> runStartWebServer port app StartWebServerSettings settings app -> runStartWebServerSettings settings app RespondWebRequest reqId response -> runRespondWebRequest reqId response GetBody maxLen req -> runGetBody maxLen req UpgradeToWebSocketsResponse opts app req -> runUpgradeToWebSocketsResponse opts app req AcceptPendingWebSocketConnection conn opts -> runAcceptPendingWebSocketConnection conn opts RejectPendingWebSocketConnection conn opts -> ioToWebServerTactics (WS.rejectRequestWith conn opts) WhilePingingWebSocket conn n app -> runWhilePingingWebSocket conn n app SendWebSocketDataMessages conn msgs -> ioToWebServerTactics $ WS.sendDataMessages conn msgs ReceiveWebSocketDataMessage conn -> runReceiveWebSocketDataMessage conn SendWebSocketCloseCode conn code msg -> ioToWebServerTactics $ WS.sendCloseCode conn code msg • Relevant bindings include v :: WebServer m x (bound at src/Polysemy/WebServer.hs:251:16) | 269 | ioToWebServerTactics $ WS.sendCloseCode conn code msg | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cabal: Leaving directory '/tmp/cabal-tmp-7117/polysemy-webserver-0.2.1.0' cabal: Error: some packages failed to install: polysemy-webserver-0.2.1.0-A1REaII7N2XABJ0LD2hCwF failed during the building phase. The exception was: ExitFailure 1