import std::socket::tcp::(bind, accept, read, write_all, close, peer_addr, listener_addr) import system::io::println let http_response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: 44\r\nConnection: close\r\n\r\n

Hello Orchid!

" let handle_client = \client. do cps { cps addr = peer_addr client; cps println $ "Client connected: ${addr}"; cps request = read client 4096; cps println $ "Received request from ${addr}"; cps _ = write_all client http_response; cps _ = close client; cps println $ "Connection closed: ${addr}"; cps pass 0; } let accept_loop = \server. do cps { cps client = accept server; cps _ = handle_client client; cps pass $ accept_loop server; } let main = do cps { cps server = bind "127.0.0.1:8080"; cps addr = listener_addr server; cps println $ "HTTP Server listening on ${addr}"; cps println "Press Ctrl+C to stop"; cps pass $ accept_loop server; }