Re: [elm-discuss] explain how Task works

2017-06-09 Thread Peter Damoc
Process.sleep time is creating a Task that will be running for the duration
of the time and then produce an empty tuple.

Task.andThen is taking this produced task and after it finishes it calls
the provided function (always <| Task.succeed msg)

(always <| Task.succeed msg) is equivalent to (\_ -> Task.succeed msg) and
is a function that ignores its argument and produces a Task that finishes
immediately producing the provided msg.

Task.perform identity  takes the above produced Task and converts it to a
Cmd. identity is defined as identity x = x this means that whatever is the
result of the task will be the result of the Cmd.

That being said, the function looks a little bit silly as the Task.andThen
is redundant. It should have been:

delay : Time -> msg -> Cmd msg
delay time msg =
  Process.sleep time
  |> Task.perform (always msg)


you can see it working here:
https://ellie-app.com/3r6knRYxB2Za1/0



On Sun, Jun 4, 2017 at 3:56 PM,  wrote:

> Can you explain, at a beginner's level, how Task works in the following 2
> lines under Process.sleep ?
>
>
> delay : Time.Time -> msg -> Cmd msg
> delay time msg =
> Process.sleep time
> |> Task.andThen (always <| Task.succeed msg)
> |> Task.perform identity
>
> Thanks
>
> --
> 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.
>



-- 
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 elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[elm-discuss] explain how Task works

2017-06-08 Thread machinelearningspeed
Can you explain, at a beginner's level, how Task works in the following 2 
lines under Process.sleep ?


delay : Time.Time -> msg -> Cmd msg
delay time msg =
Process.sleep time
|> Task.andThen (always <| Task.succeed msg)
|> Task.perform identity

Thanks

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