什么是;键入Task x a=Task";在Elm任务的执行中意味着什么?

什么是;键入Task x a=Task";在Elm任务的执行中意味着什么?,elm,Elm,其中,任务类型定义如下: 键入Task x a=Task 然后遵循使用此类型的几个函数 如何理解任务类型 当我们将类型定义为: 输入Foo a b=Foo Task是我们依赖Task的本机javascript实现的一种特殊情况吗?似乎它创造了一种通配符 在以下代码中: import Html exposing (..) type Dog a = Fido myFunc: Dog Int -> String myFunc myDog = "Wouf Wouf" main = t

其中,任务类型定义如下:

键入Task x a=Task

然后遵循使用此类型的几个函数

如何理解任务类型

当我们将类型定义为:

输入Foo a b=Foo


Task是我们依赖Task的本机javascript实现的一种特殊情况吗?

似乎它创造了一种通配符

在以下代码中:

import  Html exposing (..)

type Dog a = Fido

myFunc: Dog Int -> String
myFunc myDog =
  "Wouf Wouf" 

main = text (myFunc Fido)
myFunc
需要一个
Dog Int
。然后,您可以将
Fido
发送到该方法

Task是我们依赖Task的本机javascript实现的一种特定情况吗

没错。您会注意到,
Task
类型而不是
Task
标签(右边的东西)是从模块导出的,因此您实际上无法访问后者。它是一个占位符,可以使类型系统满意

相反,本机JavaScript实现知道真正的任务是什么,也就是说。任何处理任务的本机模块(无论是
任务
模块还是任何第三方库,如
elm http
)都是保密的。但是,
Task
模块导出了大量帮助函数,您可以仅使用已发布的库对任务进行大量控制


澄清编辑:是的,您需要使用第三方库来获得一个在外部世界中实际起作用的任务。要实际运行该任务,您需要将其发送到一个端口;在此之前,任务只是对要做工作的描述。

如果我理解的话,异步任务只能从JS端创建。我说的对吗?感觉任务意味着很多事情:任务的结果和任务本身(异步过程)。我很难理解任务的概念。@Martinos:从Elm用户的角度来看,任务只是数据。它是一个描述异步进程的值,一旦它以正确的方式传递到端口,运行时将解释任务以实际运行它。我想我需要仔细考虑一下这一点。谢谢你的回答。