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.

Reply via email to