F# - 了解使用属的类型

问题描述 投票:0回答:1

我还有10天就要参加F#考试了,由于我目前正在做旧的考试套题,所以遇到了一个问题,就是对泛型的理解,尤其是有两个多态参数的类型。

这道题应该是比较容易解决的,但是语法上是怎么操作的,我不清楚.老考题如下。

以下类型 Sum<'a,'b> 包括两种不同的价值

type Sum<'a,'b> = 
| Left of 'a
| Right of 'b

现在我需要写两个类型为 Sum<int list, bool option>,其中一个应使用 Left 其二 Right.

如果您定义 let sum1 = Left "Hello World 它评价为 val sum1 : Sum<string,'a>但我找不到方法来创建 Sum<int list, bool option>.

你会如何解决?

generics f# polymorphism
1个回答
2
投票

如果你要写

let sum1 = Sum<string,int>.Left "Hello World"

你会得到 Sum<string,int>

所以如果你需要一个 Sum<int list, bool option> 那么......

(平心而论,在现实生活中,有一个......)。Sum<string,'a> 并不是真正的问题,因为 "a可以成为任何东西,如果它需要是一个。bool option 或其他什么东西,类型推理通常会为你做艰苦的工作,并约束'a)。

© www.soinside.com 2019 - 2024. All rights reserved.