Я мушу визнати, що я мало знаю про функціональне програмування. Я читав про це звідси і там, і так дізнався, що у функціональному програмуванні функція повертає той самий вихід, за той же вхід, незалежно від того, скільки разів функція викликається. Це точно як математична функція, яка оцінює один і той же вихід на те саме значення вхідних параметрів, яке бере участь у вираженні функції.
Наприклад, врахуйте це:
f(x,y) = x*x + y; // It is a mathematical function
Незалежно від того, скільки разів ви використовуєте f(10,4)
, його значення завжди буде 104
. Таким чином, де б ви не писали f(10,4)
, ви можете замінити його 104
, не змінюючи значення цілого виразу. Ця властивість називається референтною прозорістю виразу.
Як говорить Вікіпедія ( посилання ),
І навпаки, у функціональному коді вихідне значення функції залежить лише від аргументів, які вводяться у функцію, тому виклик функції f вдвічі з однаковим значенням для аргументу x дасть однаковий результат f (x) обох разів.
Чи може функціонал часу (який повертає поточний час) існувати у функціональному програмуванні?
Якщо так, то як воно може існувати? Чи не порушує принцип функціонального програмування? Це особливо порушує референтну прозорість, яка є однією з властивостей функціонального програмування (якщо я правильно це розумію).
Або якщо ні, то як можна знати поточний час у функціональному програмуванні?