Well, that works as well... ;) Oh boy... thanks On Friday, June 3, 2016 at 4:50:58 PM UTC+2, Peter Damoc wrote: > > 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] > <javascript:>> 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] <javascript:>. >> 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.
