You forgot to give newModel its value

Change to this:

 NewFace newFace ->
      (newModel newFace, Cmd.none)

and all should be OK


On Fri, Jun 3, 2016 at 5:40 PM, Robert Walter <[email protected]>
wrote:

> If this is not the right forum for these kinds of questions, please point
> me to the right place.
>
> Anyway, I try to work my way the The Elm Architecture.
> As an exercise, I tried to enhance the Random Dice example by adding a
> second die. My idea is to add a second Int to the Model and use the
> Random.pair generator to produce random pairs.
>
> This is what I can come up with:
>
> import Html exposing (..)
> import Html.App as Html
> import Html.Events exposing (..)
> import Random
>
> main =
>   Html.program
>     { init = init
>     , view = view
>     , update = update
>     , subscriptions = subscriptions
>     }
>
>
> -- MODEL
>
> type alias Model =
>   { dieFace1 : Int
>   , dieFace2 : Int
>   }
>
>
> init : (Model, Cmd Msg)
> init =
>   (Model 1 1, Cmd.none)
>
>
> -- UPDATE
>
> type Msg
>   = Roll
>   | NewFace (Int, Int)
>
>
> update : Msg -> Model -> (Model, Cmd Msg)
> update msg model =
>   case msg of
>     Roll ->
>       (model, Random.generate NewFace (Random.pair (Random.int 1 6) (
> Random.int 1 6)))
>
>
>     NewFace newFace ->
>       (newModel, Cmd.none)
>
>
> newModel : (Int, Int) -> Model
> newModel (a, b) =
>   Model a b
>
>
> -- SUBSCRIPTIONS
>
> subscriptions : Model -> Sub Msg
> subscriptions model =
>   Sub.none
>
>
> -- VIEW
>
>
> view : Model -> Html Msg
> view model =
>   div []
>     [ h1 [] [ text (toString model.dieFace1) ]
>     , h1 [] [ text (toString model.dieFace2) ]
>     , button [ onClick Roll ] [ text "Roll" ]
>     ]
>
>
> This fails compiling with the following message:
>
> Detected errors in 1 module. -- TYPE MISMATCH
> --------------------------------------------------------------- The type
> annotation for `update` does not match its definition. 42| update : Msg
> -> Model -> (Model, Cmd Msg)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> The type annotation is saying: Msg
> -> { dieFace1 : Int, dieFace2 : Int }
> -> ( { dieFace1 : Int, dieFace2 : Int }, Cmd Msg ) But I am inferring
> that the definition has this type: Msg -> (( Int, Int ) -> Model) -> ( (
> Int, Int ) -> Model, Cmd Msg )
>
>
> I guess what I'm missing is how to create a new Model out of the (Int,
> Int) tuple. Maybe this is, however, fundamentally wrong?
>
> --
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
There is NO FATE, we are the creators.
blog: http://damoc.ro/

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to