Trying to figure out how to get the current time, and I found the method, but don't know how to read the type signature.
The signature is now : Task x Time you can see it here.
Can't figure out how to search for it since they use x as a variable name everywhere, I can generally find the rightish place within the parser code, but have a lot of difficulty following it.
The type x is a so called type parameter. This means that the type is not defined yet.
In your particular case, the definition of the type Task, the first type after Task denotes the type with which your asynchronous operation may fail.
At the moment of the definition of the function this type is not fully defined. You have the freedom, in your program, to use as error type the type you want
The definition:
now : Task x Time
means (loosely translated):
Time.now is a Task which, when executed, will give you either:
- output of type
xif it fails,- output of type
Timeif it succeeds.
Since the Task Time.now can never fail, it doesn't matter what the error type is.
In Elm, lowercase types (a, b, x, comparable, msg) mean that the type could be anything, i.e. the function would work with different types.
msg for message types.comparable means that it needs to be a type where you can compare
two values (e.g. if the function does comparison between to values of
that type, to determine which one is larger etc).This makes sense for input types. But less so for output. I guess in this case the x means more or less "not applicable". A Task type needs an error output type. But in this case, it is irrelevant.
Addendum: To actually get the current time, you would need to take two more steps:
Performing the task, which returns a Cmd:timeCmd = Task.perform identity MyMsg Time.now
This will perform the time-task, and wrap the resulting time in a Cmd MyMsg
Handle the Cmd output: for this, you would need to include a MyMsg handler in your update function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With