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