Sml元组长度

Sml tuples length

我想知道是否有可能在 sml 中获取元组的长度?!参见示例

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

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

(1,"test","nick") 

有些像

("name","nick")

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

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

Return > (1,"test2",2)

这里有更多信息 M Molbdnilo @molbdnilo

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

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

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

datatype Identifier = Name of string
                    | Number of int

然后你可以获得 IdentifierPerson:

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