@hackage suavemente0.1.0.0
An applicative functor that seamlessly talks to HTML inputs.
Categories
License
BSD-3-Clause
Maintainer
sandy@sandymaguire.me
Links
Versions
Installation
Dependencies (19)
Dependents (0)
suavemente
| Hackage
Dedication
Today's kitchen is all about a well-planned space that makes cooking a completely interactive experience among family and friends.
Candice Olson
Overview
Suavemente is an applicative functor capable of seamlessly talking to HTML elements. Running a suavemente program automatically spins up a webserver and hooks up its pages with websockets. The use case is to quickly deploy simple, interactive Haskell programs without needing to figure out how the fuck GHCJS works.
Example
{-# LANGUAGE ApplicativeDo #-}
module Main where
import Diagrams.Backend.SVG
import Diagrams.Prelude hiding (rad)
import Web.Suavemente
main :: IO ()
main = suavemente $ do
rad <- slider "Radius" 1 10 5
r <- realSlider "Red" 0 1 0.05 1
g <- realSlider "Green" 0 1 0.05 1
b <- realSlider "Blue" 0 1 0.05 1
x <- slider "X" 0 20 10
y <- slider "Y" 0 20 10
pure (
circle rad
# fc (sRGB r g b)
# translate (r2 (x, y))
# rectEnvelope (p2 (0, 0)) (r2 (20, 20))
:: Diagram B)
To Do
The "protocol" is disgusting---it just tries to read the incoming websocket
data. A better approach would be to hook it up via FromJSON, but it's
nontrivial to get JSON out of a web form and I cbf.
Pull requests are welcome!