gpt4 book ai didi

f# - 选项类型会崩溃吗?

转载 作者:行者123 更新时间:2023-12-04 13:57:30 26 4
gpt4 key购买 nike

这是 F# 中的一个选项类型:

type Option<'a> =
| Some of 'a
| None

假设我有一个 OptionOption :
type Option2<'a> =
| O of Option<'a>
| None

它是否会折叠成一个 Option ?

最佳答案

不,F# 有一个 标称类型系统 .结构等效的类型不兼容。所以即使你有 OptionOption2完全相同(名称除外),这些类型会有所不同。您的情况不同,类似于询问整数列表和整数列表列表是否相同。

let hasOptionType (_ : Option<_>) = ()
let hasOption2Type (_ : Option2<_>) = ()

let o = Option.None
let o2 = Option2.None

hasOptionType o
//hasOption2Type o // does not compile
//hasOptionType o2 // does not compile
hasOption2Type o2

您可以使用类型别名,但可以同时使用:
type IntOption = Option<int>

let isOptionOfInt (_ : Option<int>) = ()
let isIntOption (_ : IntOption) = ()

let i = IntOption.None
let i2 = Option<int>.None

isOptionOfInt i
isOptionOfInt i2
isIntOption i
isIntOption i2

关于f# - 选项类型会崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41123234/

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