@hackage Shpadoinkle-console0.0.1.3
Support for the native browser console
Categories
License
BSD-3-Clause
Maintainer
fresheyeball@protonmail.com
Links
Versions
Shpadoinkle Console
This package exposes some useful debugging functions for tracing the state of Shpadoinkle applications as they change over time. It exposes some type classes currently.
class LogJS (c :: Type -> Constraint) where
logJS :: c a => a -> JSM ()
class LogJS c => Trapper c where
trapper :: c a => JSContextRef -> a -> a
class Assert (c :: Type -> Constraint) where
assert :: c a => Bool -> a -> JSM ()
These are intended to by used with TypeApplications, so you can choose the means of conversion before passing to console.log. For example:
main :: IO ()
main = runJSorWarp 8080 $ do
ctx <- askJSM
simple runParDiff initial (view . trapper @ToJSON ctx) getBody
This will log all state by first encoding to JSON with Aeson, then then logging with JSON.parse so the browser console has the nice native display. If we change it to trapper @Show ctx it will use the Show instance instead.
We also export a handful of console bindings such as console.time, console.table, console.info, console.warn, console.debug, and of course console.log.