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)