Вопросы с тегом «pure-function»

Чистая функция - это функция, которая всегда оценивает одно и то же при одних и тех же аргументах и ​​не может изменяться или зависеть от какого-либо внешнего состояния.

47
Считается ли чистая запомненная функция чистой?

Допустим, fn(x)это чистая функция, которая делает что-то дорогое, например, возвращает список основных факторов x. И скажем, мы запоминаем версию той же самой функции memoizedFn(x). Он всегда возвращает один и тот же результат для заданного ввода, но поддерживает частный кэш предыдущих результатов...

43
Как вы называете функцию, когда один и тот же вход всегда будет возвращать один и тот же выход, но также имеет побочные эффекты?

Скажем, у нас есть нормальная чистая функция, такая как function add(a, b) { return a + b } И тогда мы изменим его так, что он имеет побочный эффект function add(a, b) { writeToDatabase(Math.random()) return a + b; } Насколько я знаю, это не считается чистой функцией, потому что я часто слышу, как...

27
Делает ли перехват / выброс исключений нечистым в противном случае чистым методом?

Следующие примеры кода предоставляют контекст для моего вопроса. Класс комнаты инициализируется с делегатом. В первой реализации класса Room нет защиты от делегатов, которые генерируют исключения. Такие исключения будут пузыриться до свойства North, где оценивается делегат (примечание: метод Main...

25
Есть ли веская причина сделать чистые функции закрытыми?

У меня была небольшая дискуссия с коллегой. Проще говоря, есть ли хорошая причина скрывать / инкапсулировать чистые функции? Под «чистым» я подразумеваю определение википедии : Всегда возвращает одинаковые результаты из одного и того же ввода. (Ради этого обсуждения Foo Create(){ return new Foo();...

19
Когда использовать [Pure] в конструкторе?

Я изучаю контракты кода в .NET и пытаюсь понять идею чистых конструкторов. В коде договора документация говорится: Все методы, которые вызываются в контракте, должны быть чистыми; то есть они не должны обновлять никакое ранее существующее состояние. Чистый метод позволяет изменять объекты, которые...

17
Является ли функция немедленно нечистой, если она принимает функцию в качестве параметра?

Так как чистота входного параметра неизвестна до времени выполнения, считается ли функция немедленно нечистой, если она принимает функцию в качестве входного параметра? Связано: если функция применяет чистую функцию, которая определена вне функции, но не передана в качестве параметра, будет ли она...

14
Чистый функционал против скажите, не спрашивайте?

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

12
Происхождение «метод должен возвращать значение или иметь побочные эффекты, но не оба»

Однажды я прочитал, что метод должен иметь возвращаемое значение (и быть ссылочно прозрачным) или иметь побочные эффекты, но не оба. Я не могу найти никаких ссылок на это правило, но хочу узнать больше об этом. Каково происхождение этого совета? Из какого человека или сообщества это возникло?...

11
Вычислить, если функция является чистой

Согласно Википедии: В компьютерном программировании функция может быть описана как чистая, если оба эти утверждения о функции выполняются: функция всегда оценивает одно и то же значение результата, учитывая одно и то же значение (я) аргумента. Значение результата функции не может зависеть от...

10
Как функциональное программирование справляется с ситуацией, когда на один и тот же объект ссылаются из разных мест?

Я читаю и слышу, что люди (также на этом сайте) регулярно хвалят парадигму функционального программирования, подчеркивая, как хорошо иметь все неизменное. Примечательно, что люди предлагают этот подход даже в традиционно обязательных ОО-языках, таких как C #, Java или C ++, а не только в чисто...

9
Этот метод чистый?

У меня есть следующий метод расширения: 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); }...

9
Почему использование оператора присваивания или циклов не рекомендуется в функциональном программировании?

Если моя функция удовлетворяет ниже двум требованиям, я полагаю, что функция, Sum возвращающая суммирование элементов в списке, где элемент оценивается как истинное для данного условия, может считаться чистой функцией, не так ли? 1) Для данного набора i / p, то же o / p возвращается независимо от...