Вопросы с тегом «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 …

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

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

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

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

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

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

2
Как функциональное программирование справляется с ситуацией, когда на один и тот же объект ссылаются из разных мест?
Я читаю и слышу, что люди (также на этом сайте) регулярно хвалят парадигму функционального программирования, подчеркивая, как хорошо иметь все неизменное. Примечательно, что люди предлагают этот подход даже в традиционно обязательных ОО-языках, таких как 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.