Functional programming 将Time.now转换为Date-Elm

Functional programming 将Time.now转换为Date-Elm,functional-programming,elm,Functional Programming,Elm,你好,我是Elm的新手,在获取当前时间并将其转换为Elm中的日期时遇到了一些困难 我有一个消息类型-message和一个向模型添加新消息的函数。我正在尝试存储消息发布的时间以及文本和用户id 然而,我不断得到这个错误- The argument to function `fromTime` is causing a mismatch. 59| Date.fromTime (currentTime Time.now)

你好,我是Elm的新手,在获取当前时间并将其转换为Elm中的日期时遇到了一些困难

我有一个消息类型-message和一个向模型添加新消息的函数。我正在尝试存储消息发布的时间以及文本和用户id

然而,我不断得到这个错误-

The argument to function `fromTime` is causing a mismatch.

59|              Date.fromTime (currentTime Time.now)
                            ^^^^^^^^^^^^^^^^^^^^
Function `fromTime` is expecting the argument to be:

Time

But it is:

x -> Time -> Time

Hint: It looks like a function needs 2 more arguments.
这是密码

type alias Message =
    { text : String,
      date : Date,
      userId : Int
    }

currentTime : task -> x -> Time -> Time
currentTime _ _ time =
    time

newMessage : String -> Int -> Message
newMessage message id =
    { text = message
    , date = Date.fromTime (currentTime Time.now)
    , userId = id
    }

我真的搞不懂发生了什么事。任何帮助都将不胜感激。谢谢。

Elm是一种纯语言,函数调用是确定性的。请求当前时间稍微复杂一点,因为我们无法调用任何函数根据一天中的时间返回不同的时间。具有相同输入的函数调用将始终返回相同的内容

获得当前时间取决于副作用。我们必须要求架构以一种纯粹的方式给我们时间。Elm处理这一问题的方法是通过
任务
程序
功能。通过
update
函数中的
Cmd
向Elm架构发送
任务。然后,Elm体系结构在幕后做自己的事情来获取当前时间,然后用纯代码响应,再次调用
update
函数

下面是一个简单的示例,您可以粘贴到,单击按钮查看转换为日期的当前时间

导入Html公开(…)
导入Html.Events(onClick)
导入时间曝光(…)
进口日期
导入任务
主要=
Html.program
{init={message=“单击按钮查看时间”}![]
,视图=视图
,update=update
,订阅=\ \->Sub.none
}
类型别名模型={message:String}
视图模型=
分区[]
[按钮[单击获取时间][文本“获取当前时间”]
,div[][text model.message]
]
输入味精
=获取时间
|现在是时候了
更新msg模型=
味精案例
获取时间->
模型[Task.perform Now Time.Now]
现在t->
{model| message=“日期现在是”++(toString(date.fromTime t))}![]
如果您熟悉javascript,
Now
消息的用途大致可以看作是一个回调函数,它提供的参数是Elm体系结构发送的时间