From 25e9f0415127434f9e2d7d31d2918671b781132b Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Tue, 26 Mar 2019 16:45:18 -0700 Subject: Add sample aero ibb app --- aero/Ibb.hs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 aero/Ibb.hs (limited to 'aero/Ibb.hs') diff --git a/aero/Ibb.hs b/aero/Ibb.hs new file mode 100644 index 0000000..e357317 --- /dev/null +++ b/aero/Ibb.hs @@ -0,0 +1,45 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RecordWildCards #-} + +module Ibb where + +import Miso +import Miso.String + +main :: IO () +main = startApp App {..} + where + initialAction = SayHelloWorld + model = 0 + update = updateModel + view = viewModel + events = defaultEvents + subs = [] + mountPoint = Nothing + +type Model = Int + +-- | Sum type for application events +data Action + = AddOne + | SubtractOne + | NoOp + | SayHelloWorld + deriving (Show, Eq) + +-- | Updates model, optionally introduces side effects +updateModel :: Action -> Model -> Effect Action Model +updateModel AddOne m = (m + 1) <# do + putStrLn "Hiya World" >> pure NoOp +updateModel SubtractOne m = noEff (m - 1) +updateModel NoOp m = noEff m +updateModel SayHelloWorld m = m <# do + putStrLn "Hiya World" >> pure NoOp + +-- | Constructs a virtual DOM from a model +viewModel :: Model -> View Action +viewModel x = div_ [] + [ button_ [ onClick AddOne ] [ text "+" ] + , text (ms x) + , button_ [ onClick SubtractOne ] [ text "-" ] + ] -- cgit v1.2.3