Предположим, мне нужно обновить список при каждом вызове функции, чтобы сохранился предыдущий элемент списка.Как сохранить элементы в списке через программу в SML?
Вот моя попытка:
local
val all_list = [];
in
fun insert (x:int) : string = int2string (list_len((([email protected][x]))))
end;
Проблема в том, что каждый раз, когда я звоню, чтобы вставить, я получаю выход «1», что указывает, что список начинается с []
снова.
Однако я ожидал вывода "1"
для первого вызова для вставки и "2"
для второго вызова, ... и т. Д.
Я не могу найти обходной путь. Как это сделать?
В функциональном программировании, вызывая функцию несколько раз с тем же входом будет повторно дать такие же результаты. Почему вы ожидаете иначе? – Bergi
Вы никогда не обновляете переменную (а вы не можете!).Вы просто создаете новый список, длина которого вы затем определяете. – Bergi
Я могу порекомендовать прочитать [Программирование в стандартном ML] (http://www.cs.cmu.edu/~rwh/isml/book.pdf) Р. Харпера. Действительно хорошая книга! –