在此Github example中,任务类型定义如下:
type Task x a = Task
然后按照几个使用此类型的函数进行操作。
如何理解任务类型?
将类型定义为:
时的含义是什么 type Foo a b = Foo
Task是一个特定的案例,我们依赖于Task的原生javascript实现吗?
答案 0 :(得分:6)
Task是一个特定的案例,我们依赖于Task的原生javascript实现吗?
完全。您会注意到Task
类型而非Task
标记(右侧的内容)是从模块导出的,因此您无法实际访问后者。它是一个占位符,可以使类型系统变得快乐。
相反,Native JavaScript实现知道真正的任务是什么,a JS object。处理任务的任何本机模块(Task
模块或任何第三方库,如elm-http
)都在秘密中。但是,Task
模块会导出大量辅助函数,您只需使用已发布的库就可以对任务进行大量控制。
澄清编辑:是的,您需要使用第三方库来获取实际上在外部世界中起作用的任务。要实际运行该任务,您需要将其发送出端口;在你这样做之前,任务只是要做的工作的描述。
答案 1 :(得分:0)
似乎它创造了一种外卡。
在以下代码中:
import Html exposing (..)
type Dog a = Fido
myFunc: Dog Int -> String
myFunc myDog =
"Wouf Wouf"
main = text (myFunc Fido)
myFunc
需要Dog Int
。然后,您可以将Fido
发送到该方法。