4

В контексте функционального программирования, который является правильным термином для использования: постоянным или неизменным? Когда я Google «неизменные структуры данных» я получаю Wikipedia link к статье о «Persistent структуры данных», которая даже идет дальше сказать: структурыКакой термин использовать при обращении к функциональным структурам данных: постоянный или неизменный?

таких данные эффективны непреложного

Какой дальнейший путает вещи для меня. Функциональные программы полагаются на постоянные структуры данных или неизменяемые структуры данных? Или они всегда одно и то же?

ответ

2

Постоянная защита данных сохраняет только предыдущую версию себя после изменения. В зависимости от типа постоянной структуры данных ... вы можете или не сможете изменить предыдущие версии.

Неизменяемый тип не может быть изменен вообще.

Функциональные языки в основном полагаются на неизменяемые типы (также называемые значениями) для их хранения данных (хотя вы можете использовать Mutable типы в некоторых ... но это должно быть сделано явно).

+0

Кроме того, стоит отметить, что неизменность является основной концепцией функционального программирования. Необходимо обеспечить, чтобы выражение или функция не вносит изменений в общее состояние программы, что является важным аспектом ссылочного перевода sparency. – Rob

+0

Я не согласен, существует различная степень настойчивости. –

0

Неизменяемый обычно означает «не изменяется». Стойкость обычно воспринимается как «сохраненная на постоянном носителе информации». Тем не менее, упомянутая статья Википедии, похоже, воспринимает эти два слова как очень похожие вещи (но не точные). Фактически в нем указывается:

Постоянная структура данных не является структурой данных, предназначенной для постоянного хранения, например диска; это другое и несвязанное чувство слова «стойкий».

2

В статье также говорится, что «в чисто функциональной программе все данные неизменяемы», что верно.

По-моему, вам не нужно делать это различие. Если вы программируете на функциональном языке или в полностью функциональном стиле - в отличие от использования функциональных идиом в императивном коде, где удобно - тогда вы можете просто сказать «структура данных». По определению они будут неизменными и постоянными.

Если вам необходимо провести различие по какой-либо причине, то «постоянный» может быть более подходящим для динамических структур, таких как деревья и очереди, где значения «изменяются» на основе трассировок выполнения и «неизменяемы» для простого значения объекты.

0

«Неизменяемый» используется гораздо чаще, поскольку «персистентный» перегружен (обычно это означает «хранится вне и изжигает программу»), и даже правильное определение несет дополнительный семантический багаж, который часто не связан с отличительным качеством чисто функциональное программирование - тот факт, что нет изменчивого состояния. A = A и всегда будет для всех значений A.

3

Правильный термин для функциональных структур данных - неизменяемый. Teerm «стойкий» используется, по крайней мере, три способов:

  • настойчивой структура данных относятся к ситуации, когда у вас есть старые структуры данных, необходимо создать новую, но вы держите указатель Старый.Как правило, старые и новые разделяют много состояний —, они могут отличаться только постоянным количеством объектов кучи или, возможно, линейным числом структур данных кучи. Такая постоянство является следствием наличия неизменных структур данных, плюс a алгоритм, который сохраняет указатели на старые версии структуры данных, что позволяет им сохраняться.

  • A Постоянная переменная - это значение, значение которого сохраняется в нескольких вызовах одной и той же программы. Это можно сделать с помощью языковых функций или библиотек.

  • A Постоянный язык программирования - это тот, который обеспечивает постоянные переменные. Святой Грааль ортогональное сохранение: программист может решить, является ли переменная постоянной, независимой от всех других свойств этой переменной. На данный момент такой язык программирования - это далеко идущие исследования, но полезно сохранить терминологическое различие.

Я не чувствую до редактирования Википедии сегодня :-(

0

В this article, авторы используют слово «постоянный» как означающее «наблюдательно неизменны, хотя реализованы с мутациями под капотом». В этом конкретном случае мутации скрыты модульной системой функционального, но не чистого языка программирования.