0

我对是否有可能获取 sml 中的元组长度感兴趣?!查看示例

val tes = ((1,"test"),("test","some")) 
Lenght(tes) = 2

我想要它来解决问题有一个问题说要获取学生列表,其中包含每个学生信息的列表,但是学生信息在两种类型中有所不同,有些就像

(1,"test","nick") 

有些就像

("name","nick")

所以它想返回学生列表中每个列表的第一个元素,如下所示:

((1,"test","nick"),("test2","nick2"),(2,"test3","nick3"))

Return > (1,"test2",2)

这里有更多信息 M Molbdnilo @molbdnilo

4

1 回答 1

5

您最有可能做的事情的一个例子;定义一些有用的sum 类型

首先,让我们发明两种识别人的方法:

datatype Person = JustName of string
                | NameAndNumber of string * int

datatype Identifier = Name of string
                    | Number of int

那么你可以得到一个Identifierfor a Person

fun identifier (JustName n) = Name n
  | identifier (NameAndNumber (_, i)) = Number i

让我们和一些人一起测试:

- val people = [JustName "A", NameAndNumber ("B", 23), JustName "C", NameAndNumber ("D", 22)];
val people =
  [JustName "A",NameAndNumber ("B",23),JustName "C",NameAndNumber ("D",22)]
  : Person list

- map identifier people;
val it = [Name "A",Number 23,Name "C",Number 22] : Identifier list
于 2021-05-06T08:24:11.503 回答