Упаковка типов данных в стандартном ML
Этот вопрос является дополнительным вопросом к вопросу, опубликованному здесь:
Понимание пользовательского списка приложений Стандарт мл
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как правильно обернуть узел добавления в NonNil правильно. Код у меня есть:
fun alistAppend (xs: 'a alist, ys: 'a alist): 'a alist =
case xs of
Nil => ys
| _ => NonNil (Append (xs,ys));
Я знаю, что этот код может не добавляться правильно, я просто пытаюсь выяснить, как получить правильный тип возврата для этой функции. Как правильно обернуть узел добавления?
1 ответ
Решение
Удалось это выяснить, создав новый val:
val paired = (xs ,ys);
Я был в состоянии проверить значения обоих х и у одновременно. Просто нужно проверить, не равны ли значения xs и ys NonNil, а затем создать соответствующий узел добавления в узле NotNil.