Oak is an implementation of the Elm architecture in Purescript.
bower install purescript-oak
This library requires the virtual-dom
module. You can get it by using npm to install virtual-dom.
npm install virtual-dom
Documentation is published on pursuit.
A breif example Oak app:
module Main (main) where
import Oak
import Prelude hiding (div)
type Model
= {number :: Int}
data Msg
= Inc
| Dec
view :: Model -> Html Msg
view model = div [] do
button [onClick Inc] do
text "+"
div [] do
text model.number
button [onClick Dec] do
text "-"
next :: Msg -> Model -> (Msg -> Effect Unit) -> Effect Unit
next msg mod h = mempty
update :: Msg -> Model -> Model
update msg model = case msg of
Inc -> model { number = model.number + 1 }
Dec -> model { number = model.number - 1 }
init :: Model
init = { number: 0 }
app :: App Msg Model
app = createApp { init, view, update, next }
main :: Effect Unit
main = do
rootNode <- runApp app Nothing
container <- getElementById "app"
appendChildNode container rootNode