0

Мы знаем, что pure functions:Что означает «чистый» в функциональном программировании, если приложение мутирует стек?

  1. Всегда возвращает тот же результат для данного входа
  2. Производят не имеет побочных эффектов

Это приводит нас к referential transparency - где выражение может быть заменен значение без изменения поведения программы.

Это говорит о том, что программа может быть указана как purely functional, если она исключает разрушительные изменения (обновления) объектов в рабочей среде программы.

Это commentator wrote:

борется с тем, что «чистый» в FP установка на самом деле означает, что, принимая во внимание само приложение является протоколом для мутации (стек)

Мой вопрос: Что «чисто» в функциональном программировании означает, что если приложение мутирует стек?

+0

То же самое, что и если бы стек не существовал? Стек - это просто деталь реализации и не имеет значения при определении «чистой» функции. – andars

ответ

2

Тот факт, что функция мутирует стек, является следствием реализации машины. Для определения чистого значения не имеет значения, так как факт, что использование «значения» требует изменения регистра в ядре процессора, не имеет значения.

Если функция не мутирует (или зависит от) что-либо внешнее по отношению к ее собственной структуре стека (например, глобальные переменные, io, случайность), ее все равно можно считать чистым.

+0

Можно ли реализовать машину, которая не мутировала стек? – hawkeye

+0

Там могут быть реализаций, которые не мутируют «стек» или даже имеют стек, но я уверен, что у меня есть физическая машина, которая вычисляет что-то, будет мутировать (я хотел бы услышать, что я ошибаюсь хоть). – andars

+0

Не могли бы вы указать на такую ​​нестационарную мутирующую машину? – hawkeye

Смежные вопросы