For the second point you could do "Task.process (always GetAcc) <| 
Task.succeed ()" or "Task.perform identity <| Task.succeed GetAcc".

Op zaterdag 25 februari 2017 21:12:26 UTC+1 schreef Tomasz Primke:
>
> I use Elm 0.18.
>
> I have written the following, simple Elm program. It is supposed to
> accumulate values, sent from JS. I'd also like to get the accumulated
> value from the program, back to JS.
>
>     port module App exposing (..)
>     
>     import Json.Decode
>     import Task
>     
>     -- model
>     
>     type alias Model =
>       { acc : Int
>       }
>     
>     addNumber : Int -> Model -> Model
>     addNumber n model =
>       { model | acc = model.acc + n }
>     
>     init : (Model, Cmd Msg)
>     init =
>       (Model 0, Cmd.none)
>     
>     -- update
>     
>     type Msg
>       = GetAcc ()
>       | AddNumber Int
>     
>     port toJS : Int -> Cmd msg
>     
>     update : Msg -> Model -> (Model, Cmd Msg)
>     update msg model =
>       case msg of
>         GetAcc ->
>           (model, toJS model.acc)
>         AddNumber n ->
>           (addNumber n model, Task.perform GetAcc <| Task.succeed ())
>     
>     -- subscriptions
>     
>     port fromJS : (Int -> msg) -> Sub msg
>     
>     subscriptions : Model -> Sub Msg
>     subscriptions model =
>       fromJS AddNumber
>     
>     -- main
>     
>     main =
>       Platform.program { init = init,
>                          update = update,
>                          subscriptions = subscriptions }
>
>
> There are two problems with the code:
>
> 1) Without the `import Json.Decode`, the code is compiled, yet I get
> the `ReferenceError: _elm_lang$core$Json_Decode$int is not defined`
> error after loading the result JS file,
>
> It's similar to this issue: https://github.com/elm-lang/core/issues/683
>
> Is it an Elm bug?
>
> 2) The message type is defined as follows:
>
>     type Msg
>       = GetAcc ()
>       | AddNumber Int
>
>
> With such a definition, I can create a command to get the accumulator
> value using the `Task` module functions:
>
>  
>    Task.process GetAcc <| Task.succeed ()
>
>
> Is it possible to create command for the following Msg definition:
>
>     type Msg
>       = GetAcc
>       | AddNumber Int
>
>
> In this case, `GetAcc` has a type of `Msg`, while in my code, its type
> is `() -> Msg`, which was needed for the function `Task.process`.
>
>

-- 
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