Skip to content

Instantly share code, notes, and snippets.

View pushpankar's full-sized avatar
🎧
Focusing

Pushpankar Kumar Pushp pushpankar

🎧
Focusing
  • London
View GitHub Profile
@joehillen
joehillen / server.hs
Last active December 21, 2024 10:16
A re-implementation of Simon Marlow's Async Haskell Chat Server using Conduits
{-# LANGUAGE OverloadedStrings, RecordWildCards, LambdaCase #-}
import Conduit
import Data.Conduit
import Data.Conduit.Network
import qualified Data.ByteString.Char8 as BS
import Data.Conduit.TMChan
import Text.Printf (printf)
import Control.Concurrent.STM
import qualified Data.Map as Map
(defmacro trace-letfn [fnspecs & body]
(let [mod-fns (mapv #(let [[name args & body] %]
`(~name ~args (t/trace-fn-call '~name (fn ~args ~@body) ~args)))
fnspecs)]
`(letfn ~mod-fns ~@body)))
(trace-letfn [(f [n] (println "Thing" n))
(g [m] (println "Somethin else" m))]
(f 1)
(g 2))