gpt4 book ai didi

scala - F[A] 和 A 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 17:53:28 24 4
gpt4 key购买 nike

对于像 Scala 和 Haskell 这样的语言,您可以使用类型构造函数来构造类型。区分所有这些部分的正确词汇是什么?

A 是一种类型。 F[A] 也是一种类型。是否存在区分这两者的语言?

什么是A

什么是F[A]

什么是F

最佳答案

不知道在 Scala 中,但在 Haskell 中,报告确实区分了两个句法类别:“类型”和“构造函数”。构造函数就是那些单原子类型,以大写字母开头,由 datanewtype 声明创建。例如

data Foo a = Bar

创建一个新的类型构造函数 Foo(和一个新的数据构造函数 Bar),并且可以通过将 Foo 应用于另一个类型来形成类型.当然,构造函数不必是更高级别的; data Baz = Quux 还声明了一个名为 Baz 的类型构造函数,不允许将其应用于任何其他类型。

(但请注意:通常使用“类型构造函数”来表示“带有箭头类型的任何类型级表达式”,因此如果您正在进行一些技术写作,您应该在介绍中包含一些文字以阐明其中的哪一个您打算在文档的其余部分中使用这两个含义。)

因此,在您的示例中,我们可以说 Map 是构造函数,Char 是构造函数,Int 是构造函数,Map Char 是一种类型,Map Char Int 是一种类型。

据我所知,这些类别中的任何一个都没有通用的简写术语:“绝对不是构造函数的类型”、“类型 *”、“类型这绝对不是那种 *”。对于允许应用于另一种类型的类型,有术语“高等类型”——例如MapMap Char 都是更高级的类型。

关于scala - F[A] 和 A 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51849405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com