Skip to content

Implementation of the Elm Architecture in Purescript

License

Notifications You must be signed in to change notification settings

robwhitaker/purescript-oak

 
 

Repository files navigation

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

About

Implementation of the Elm Architecture in Purescript

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PureScript 93.6%
  • JavaScript 6.3%
  • Shell 0.1%