
Thank you for putting comparisons and benchmarks, upfront.
Do you mind explaining the invalid monad instance of Lucid and how it would
impact a library user?
Also, I'm assuming one shouldn't call the `compile` function each time a
page needs to be rendered, right? Should one put the results of the
`compile` function in a top-level Map and use those to get the speed gains?
Side comment, the use of `dynamic` makes it look similar to reflex `dyn*`
API.
-- Saurabh.
On Thu, Oct 26, 2017 at 4:15 PM, Mike Ledger
Hi Haskell-Cafe,
I've been working on and off on a HTML templating library that is slightly novel for a few months.
Here's the good parts: * it's faster than lucid and blaze * it has a valid monad instance * it has another valid monad instance, that is slightly different! * it paramaterises templates by the data they require * the HTML5 combinators don't rely on any highly overloaded/overlapping typeclasses; type errors in nice-html templates tend to be nice monomorphic type mismatches
To achieve this, it has a distinct compilation phase (at runtime) for templates. This means the actual rendering function does very little beyond concatenate Text and escape dynamic input. It also severely restricts usage to the built-in combinators available -- at least, for dynamic data -- and can make writing a nice-html template difficult, though littering _ throughout type signatures helps.
Check it out!
Benchmark results, a README, and an example: https://github.com/ TransportEngineering/nice-html Hackage: https://hackage.haskell.org/package/nice-html
The only thing on the roadmap right now is to have some nice :-) way to assign JavaScript event handlers to Markup. This is something that I really appreciate when using React.js, so my eventual aim is for nice-html to be like a (more) server-side version of React. Right now, you can keep track of element ids with `Text.Html.Writer.note`, but it's neither a very good nor very useful interface.
Cheers, Mike
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.