Last active
July 27, 2024 09:23
-
-
Save JoelQ/c93a8f6a81262ff12c93ab2ff859f8e5 to your computer and use it in GitHub Desktop.
Turn an Elm random generator into task, allowing it to be chained with other side effects.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 0.19 | |
randomToTask : Generator a -> Task x a | |
randomToTask generator = | |
Time.now | |
|> Task.map (Tuple.first << Random.step generator << Random.initialSeed << Time.posixToMillis) | |
-- 0.18 | |
randomToTask : Generator a -> Task x a | |
randomToTask generator = | |
Time.now | |
|> Task.map (Tuple.first << Random.step generator << Random.initialSeed << round) | |
Interesting discussion regarding cmd chaining
https://gist.github.com/alpacaaa/13335246234042395813d97af029b10f
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for your answer. I'm aware of the effect on randomness.
I searched for a way to combine
Cmd
s. The use case need both aUuid
(Generator
) and the currentPosix
(Task
). There is noCmd#andThen
but there isTask#andThen
. This snippet is the closest solution I found so far while it's not ideal.