Elm “什么是正确的部分?”;查询:SelectionSet Response RootQuery“;类型注释?

Elm “什么是正确的部分?”;查询:SelectionSet Response RootQuery“;类型注释?,elm,Elm,我试图理解: 我知道这是一种语法,但我找不到关于用空格分隔的多个“单词”的文档示例或解释 我看到这些例子: 答案:Int factorial:Int->Int 距离:{x:Float,y:Float}->Float add:number->number->number() 我在任何地方找到了query:Int语法,既不在中也不在中 是否执行选择集,响应,根查询 函数参数 多值函数结果 致以最诚挚的问候, 圣菲 上述中的响应主要是针对Haskell、Elm等函数式语言的通用函数语法

我试图理解:

我知道这是一种语法,但我找不到关于用空格分隔的多个“单词”的文档示例或解释

我看到这些例子:

  • 答案:Int
  • factorial:Int->Int
  • 距离:{x:Float,y:Float}->Float
  • add:number->number->number
    ()
我在任何地方找到了
query:Int
语法,既不在中也不在中

是否执行
选择集
响应
根查询

  • 函数参数
  • 多值函数结果
致以最诚挚的问候,
圣菲




上述

中的响应主要是针对Haskell、Elm等函数式语言的通用函数语法

例如:

add : Int -> Int -> Int 
add x y = x + y
第一行是两个整数参数的函数,返回值为整数。第二行实现了第一行中给出的规范。可以按如下方式调用此函数:

> add 2 3
  5 
注意这个例子:

> inc = add 1
> inc 2
  3
这里的
add1
是一个“部分应用的函数”。它的类型为
Int->Int
。在许多语言中,
add1
没有意义。但由于函数在Elm中是一流的,因此,
add1
是有意义的:它是一个函数。部分应用程序也称为“currying”。

是一种具有两个类型变量的类型。定义如下:

type SelectionSet decodesTo scope
    = SelectionSet (List RawField) (Decoder decodesTo)
在这样的类型声明中,类型后面的任何小写名称都是类型变量,可以由任何类型填充(除了少数特殊的、
number
appendeable
comparable
compappended
)。一个简单的例子是,您可以使用
可能是Int
可能是String
。类似地,接受两个类型变量(键和值),因此您可以使用
Dict String String
Dict Int MyCustomType
(Dict的键类型需要是
可比的


因此,在您的场景中,
Response
对应于
decodesTo
RootQuery
对应于
scope
选择集
有一个解码为
响应
值的
解码器
,它还携带这个
范围
类型变量,该变量不直接用于它所保存的数据中。它被用作类型级别的一条信息,以便您(和库)知道调用(具有类型
(a->b)->SelectionSet a scope->SelectionSet b scope
)将保留该
scope
值;也就是说,它防止混合作用域。

它是一个带有类型变量的类型。请参阅中的“类型变量”部分
type SelectionSet decodesTo scope
    = SelectionSet (List RawField) (Decoder decodesTo)