在这个Github示例中,任务类型定义如下:
type Task x a = Task
然后遵循几个使用此类型的函数。
任务类型应该如何理解?
定义类型为
是什么意思? type Foo a b = Foo
任务是一个特定的情况下,我们依赖于任务的原生javascript实现?
任务是一个特定的情况下,我们依赖于任务的原生javascript实现?
。您会注意到,从模块导出的是类型Task
,而不是标签Task
(右边的东西),因此您实际上无法访问后者。它是一个占位符,让类型系统满意。
Task
模块或任何第三方库,如elm-http
)都是秘密。但是,Task
模块导出了大量的辅助函数,您可以仅使用已发布的库对任务进行大量控制。
澄清编辑:是的,你需要使用第三方库来获得一个在外部世界实际起作用的任务。要实际运行该任务,您需要将其发送到端口;直到你做到这一点,任务只是一个描述要做的工作。
似乎它正在创建一种通配符。
在以下代码中:
import Html exposing (..)
type Dog a = Fido
myFunc: Dog Int -> String
myFunc myDog =
"Wouf Wouf"
main = text (myFunc Fido)
myFunc
期望Dog Int
。然后,您可以将Fido
发送给该方法。