gpt4 book ai didi

syntax - F# Constructed Type 语法是否特殊?

转载 作者:行者123 更新时间:2023-12-05 01:05:05 27 4
gpt4 key购买 nike

我对 F# 的“构造类型”语法很好奇。已记录 here .

type-argument generic-type-name

or

generic-type-name

用下面的例子:

int option

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>

我很好奇“向后”语法是否有什么特别之处,在类型之前有参数,或者它是否只是具有一个参数的泛型类型的糖。以下是有效的:

type 'a MyOption = // MyOption<'a> also works
| MySome of 'a
| MyNone

但我无法让它与多个类型参数一起使用。为什么 F# 开发人员更喜欢这种语法用于具有一个参数的类型?是否有可能或需要两个人一起使用?

最佳答案

向后的语法是 legacy from OCaml .就个人而言,我从不使用它。如果你真的想要,你可以让它使用多个类型参数,如下所示:

type MyMap = (int, string) Map

但是,这会产生一个明确的警告(可能很快会变成 an error):

This construct is for ML compatibility. The syntax '(typ,...,typ) ident' is not used in F# code. Consider using 'ident<typ,...,typ>' instead. You can disable this warning by using '--mlcompatibility' or '--nowarn:62'.

最重要的是,我建议始终使用 .NET 语法:MyOption<'a>而不是 'a MyOption .

关于syntax - F# Constructed Type 语法是否特殊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71026376/

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