import std::socket::tcp::(bind, accept, read, write_all, close, peer_addr, listener_addr) import system::io::println cps println $ "Hello Orchid!"; const 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!

" const 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; } const accept_loop := \server. do cps { cps client = accept server; cps _ = handle_client client; cps pass $ accept_loop server; } const 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; }