Запитання з тегом «pure-function»

Чиста функція - це функція, яка завжди обчислює одне і те ж з огляду на однакові аргументи і не може змінюватися або залежати від будь-якого зовнішнього стану.

6
Чи сама пам'ятна чиста функція вважається чистою?
Скажімо, fn(x)це чиста функція, яка робить щось дороге, як повернення списку основних факторів x. Скажімо, ми робимо запам’ятовувану версію тієї ж функції, що називається memoizedFn(x). Він завжди повертає той самий результат для заданого вводу, але він підтримує приватний кеш попередніх результатів для підвищення продуктивності. Формально кажучи, memoizedFn(x)вважається чистим? Або є …

7
Як ви називаєте функцію, коли той самий вхід завжди повертатиме один і той же вихід, але також має побічні ефекти?
Скажімо, у нас є нормальна чиста функція, така як function add(a, b) { return a + b } А потім ми його змінюємо таким чином, щоб він мав побічну дію function add(a, b) { writeToDatabase(Math.random()) return a + b; } Наскільки я знаю, це не є чистою функцією, оскільки я …

5
Чи виловлювання / викидання винятків робить інакше чистий метод нечистим?
Наступні приклади коду забезпечують контекст мого запитання. Клас Room ініціалізується делегатом. У першій реалізації класу Кімната немає охоронців проти делегатів, які кидають винятки. Такі винятки будуть переноситись до властивості North, де оцінюється делегат (зверніть увагу: метод Main () демонструє, як у клієнтському коді використовується екземпляр Room): public sealed class Room …

4
Чи є вагомі причини зробити чисті функції непублічними?
У мене були невеликі дебати з колегою. Простіше кажучи, чи є вагомі причини приховувати / інкапсулювати чисті функції? Під "чистим" я маю на увазі визначення вікіпедії : Завжди повертає однакові результати з одного входу. (Заради цього обговорення Foo Create(){ return new Foo(); }вважається нечистим, якщо Fooне має значення значення семантики.) …

2
Коли використовувати [Pure] на конструкторі?
Я дізнаюся про кодові контракти в .NET, і я намагаюся зрозуміти ідею чистих конструкторів. Документація кодових контрактів зазначає: Усі способи, які викликаються в рамках договору, повинні бути чистими; тобто вони не повинні оновлювати будь-який попередній стан. Чистим методом дозволяється змінювати об'єкти, створені після вступу в чистий метод. А в PureAttributeдокументації …

5
Чи функція негайно нечиста, якщо вона приймає функцію як параметр?
Оскільки чистота вхідного параметра до часу виконання невідома, чи функція негайно вважається нечистою, якщо вона приймає функцію як вхідний параметр? Пов’язано: якщо функція застосовує чисту функцію, яка визначена поза функцією, але не передається як параметр, чи вона все ще чиста, якщо вона відповідає критеріям відсутності побічних ефектів, і вихід залежить …

6
Чистий функціонал проти кажіть, не питайте?
"Ідеальна кількість аргументів для функції дорівнює нулю" - це неправильно неправильно. Ідеальна кількість аргументів - це саме та кількість, яка потрібна для того, щоб ваша функція була без побічних ефектів. Менш за все це, і ви без потреби викликаєте незрозумілість своїх функцій, змушуючи вас відволіктися від ями успіху і піднятися …

3
Походження "методу має повернути значення або мати побічні ефекти, але не обидва"
Одного разу я прочитав, що метод повинен або мати повернене значення (і бути референтно прозорим), або мати побічні ефекти, але не обидва. Я не можу знайти жодних посилань на це правило, але хочу дізнатися більше про нього. Яке походження цієї поради? З якої людини чи громади вона виникла? Додатковий кредит: …

5
Обчисліть, якщо функція чиста
Відповідно до Вікіпедії: У комп'ютерному програмуванні функція може бути описана як чиста, якщо обидва ці твердження про функцію утримуються: Функція завжди оцінює одне і те саме значення результату, задане тим самим значенням аргументів. Значення результату функції не може залежати від будь-якої прихованої інформації або стану, яка може змінюватися в ході …

2
Як функціональне програмування обробляє ситуацію, коли на один і той же об'єкт посилається декілька місць?
Я читаю і чую, що люди (також на цьому веб-сайті) звичайно вихваляють парадигму функціонального програмування, підкреслюючи, наскільки добре мати все незмінне. Зокрема, люди пропонують такий підхід навіть у традиційно необхідних мовах OO, таких як C #, Java або C ++, а не лише в суто функціональних мовах, таких як Haskell, …

3
Чому використання оператора або циклів призначення не відволікається у функціональному програмуванні?
Якщо моя функція відповідає нижчим двом вимогам, я вважаю, що функція Sum повертає підсумки елементів у списку, де елемент оцінюється як істинне для заданої умови, можна вважати чистою функцією, чи не так? 1) Для заданого набору i / p повертається той же o / p незалежно від часу, коли викликається …

4
Чи чистий цей метод?
У мене є такий метод розширення: public static IEnumerable<T> Apply<T>( [NotNull] this IEnumerable<T> source, [NotNull] Action<T> action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable<T> ApplyIterator<T>(this IEnumerable<T> source, Action<T> action) where T : class { foreach (var item in source) { action(item); yield return item; …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.