Упаковка типов данных в стандартном 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.

Другие вопросы по тегам