For those interested: here is the example I refered to:
import Html exposing (..)
import Html.Events exposing (onClick)
import Time exposing (Time, second)
import Task

main =
  Html.program
    { init = init
    , view = view
    , update = update
    , subscriptions = subscriptions
    }

-- MODEL
type alias Model = { msgs : List String, timerOn : Bool }

init : (Model, Cmd Msg)
init =
  { msgs = []
  , timerOn = True
  } ! []

-- UPDATE
type Msg
  = Tick Time | DoStuff | DoMore


update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
  case msg of
    Tick newTime ->
      { msgs = toString msg :: model.msgs
      , timerOn = True
      } ! []
      
    DoStuff ->
      { model | msgs = toString msg :: model.msgs }
      ! [ send DoMore ]
      
    DoMore ->
      { model | msgs = toString msg :: model.msgs, timerOn = False } ! []
      
      
send : msg -> Cmd msg
send msg =
  Task.succeed msg
  |> Task.perform identity


-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
  if model.timerOn then
    Time.every 10 Tick
  else
    Sub.none

-- VIEW
view : Model -> Html Msg
view model =
  div []
    [ button [ onClick DoStuff ] [ text "click" ] 
    , ul []
      <| List.map itemView model.msgs
    ]
    
itemView : String -> Html Msg
itemView string =
  li [] [ text string ]


-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to