Я пытаюсь понять, как многие базовые концепции информатики реализованы на функциональных языках. В настоящее время я не могу понять, как функциональные языки и философии работают с адресами в памяти.
Как эффективно решаются вопросы неизменности в контексте такой базовой концепции информатики, как сорта? Я знаю, что структурное разделение действительно необходимо, чтобы не допустить разрушения памяти. Но, на мой взгляд, это означает, что относительно простые понятия, такие как сортировка выбора, могут стать довольно сложными.
Может кто-нибудь объяснить, как функциональный язык имеет дело с местными сортами? Идея быть «на месте» отброшена и заменена структурой данных, которая поддерживает структурный обмен?
Я действительно пытаюсь понять, как неизменность соответствует адресам в памяти (подумайте о указателях). Например, данные на месте сортировки не уничтожаются, а перемещаются по новым адресам. Это считается мутацией? Я думаю, что ответ - да. Но тогда как вы можете делать такие вещи, как вращение, чтобы сбалансировать бинарное дерево? Как функциональные программисты думают об указателях?
Я знаю, что на этот вопрос ответить довольно сложно, но я чувствую, что это большая проблема в отношении реального понимания функциональной парадигмы. Любые идеи или ресурсы будут с благодарностью.