Процедура scotty
не возвращается, она берет на себя управление и постоянно обслуживает запросы веб-маршрутов. Если он вернется, у вас возникнет проблема с потоком управления - как вы будете держать порт открытым для получения запроса?
Одно из решений - поместить каждый вызов на scotty
в отдельном потоке. Например:
#!/usr/bin/env cabal
{- cabal:
build-depends: base, scotty
-}
{-# LANGUAGE OverloadedStrings #-}
import Control.Concurrent
import Web.Scotty
main :: IO ()
main = do
forkIO $ scotty 3000 $ do
get "/" $ do
text "hello"
scotty 4000 $ do
post "/" $ do
text "world"
С операцией:
% curl -XPOST localhost:4000
world%
% curl -XGET localhost:3000
hello%