У меня есть список в SML, который содержит членов из типа данных "expr"
(список "b").У меня также есть функция "What"
, аргументы которой приведены только от типа даты "expr"
.Теперь у меня проблема в следующем коде:
datatype expr = K of string| Number2 of expr * (expr list);
datatype number = Number1 of string | Number3 of int;
What....
| What (Number2 (t,[]))= Number3(0)::What(t)
| What (Number2 (y,(a::b)) = append (What(a), What(b));
Ошибка произошла, потому что b является списком expr
, а функция What
получила только "expr
", а не "expr list
",Все, что я хочу сделать, это проверить, что все члены "b"
, и создать новый список - какой член имеет тип данных "number"
.Я пытался использовать map function
, но это не помогло (см. Отметки здесь: SML - несвязанная переменная или конструктор ).
Есть идеи?Есть еще один способ сделать это, не используя карту?Я укладываю его на день ..