Длина кортежей sml

Меня интересовало, есть ли способ получить длину кортежа в 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

1 ответ

Пример того, что от вас, скорее всего, ждут; определить некоторые полезные типы сумм .

Для начала придумаем два способа идентифицировать человека:

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

datatype Identifier = Name of string
                    | Number of int

тогда вы можете получить Identifier для 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
Другие вопросы по тегам