@hackage regular-web0.1.1
Generic programming for the web
Categories
License
BSD-3-Clause
Maintainer
Chris Eidhof <chris+hackage@eidhof.nl>
Links
- Homepage
- Documentation
- No source repository
- Security
Versions
Installation
Dependencies (8)
Dependents (1)
@hackage/acme-everything
This package implements generic functions for web programming.
Based on the regular library [1], we provide generic functions for generating HTML, Formlets, and JSON.
For a larger example, see the Example.lhs [2] file on github.
Example
Consider the following datatypes:
data Person = Person {
_name :: String
, _age :: Int
, _isMale :: Bool
, _place :: Place
}
data Place = Place {
_city :: String
, _country :: String
, _continent :: String
}We can now derive a Regular instance for the Person datatype using Template
Haskell:
$(deriveAll ''Place "PFPlace") $(deriveAll ''Person "PFPerson")
type instance PF Place = PFPlace type instance PF Person = PFPerson
We can construct an example person:
location :: Place location = Place "Utrecht" "The Netherlands" "Europe" chris :: Person chris = Person "chris" 25 True location
And, as an example, we can generate |HTML| and |JSON| values:
locationHtml :: X.Html locationHtml = ghtml location
personHtml :: X.Html personHtml = ghtml chris
locationJSON :: JSValue locationJSON = gto location