什么“类型任务x a =任务”在任务的Elm实现中意味着什么?

时间:2015-08-15 17:30:25

标签: elm

在此Github example中,任务类型定义如下:

type Task x a = Task

然后按照几个使用此类型的函数进行操作。

如何理解任务类型?

将类型定义为:

时的含义是什么

type Foo a b = Foo

Task是一个特定的案例,我们依赖于Task的原生javascript实现吗?

2 个答案:

答案 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发送到该方法。