Длина кортежей 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