Описание тега referential-transparency

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

Почему Отложенный фабричный метод имеет возвращаемое значение в контексте F

Я смотрю на cats.effect.concurrent.Deferred и заметил, что все чистые фабричные методы внутри объекта-компаньона возвращают F[Deferred[F, A]], не просто Deferred[F, A] лайк def apply[F[_], A](implicit F: Concurrent[F]): F[Deferred[F, A]] = F.delay(u…
2 ответа

Если все в языке программирования является выражением, будет ли оно прозрачным по ссылкам?

Я где-то готов, хотя я не смог найти его после долгих поисков, что если какой-нибудь парень создаст новый язык программирования, он будет полностью прозрачным, где все является выражением. Некоторые вопросы о ссылочной прозрачности указывают, что не…
4 ответа

Что можно назвать эквивалентом ООП "ссылочной прозрачности"?

Насколько я понимаю, термин " ссылочная прозрачность" действительно может применяться только к функциональному коду. Однако вызов метода для объекта в объектно-ориентированном коде может иметь аналогичное свойство: возвращаемое значение метода и сос…
1 ответ

Clojure: наборы, порядок и чистота

Является (vec #{1 2 3}) гарантированно всегда вернусь [1 3 2] или порядок может быть другим? Я не очень заинтересован в деталях реализации этого, но перехожу от неупорядоченного к упорядоченному в целом, чтобы мои функции были чистыми и легко тестир…
2 ответа

Нахождение кратчайшего пути между двумя точками на сетке, используя Haskell

Это проблема, которую я могу легко решить нефункциональным образом. Но решение этого вопроса на Хаскеле доставляет мне большие проблемы. Я, будучи неопытным, когда дело доходит до функционального программирования, безусловно, является причиной. Эта …
6 ответов

Что произойдет, если вы скомпилируете программу, которая не требует ввода? (Вопросы чистоты Haskell IO (снова))

putStrLn при вызове с любыми аргументами всегда будет возвращать значение типа IO (), Я согласен, что это чисто, я могу справиться с этим. Но действительно ли это прозрачно? Я так думаю, потому что для любого данного ввода вы можете заменить вызов ф…
1 ответ

Ссылочная прозрачность

Что означает термин "ненаблюдаемый", когда он используется в контексте с термином "относительная прозрачность" в функциональном программировании?
0 ответов

Безопасно ли использовать unsafeThaw индексируемый распакованный вектор?

Я только что опубликовал этот код: import qualified Data.Vector.Unboxed as VU import qualified Data.Vector.Algorithms.Intro as VAlgo argSort :: (Ord a, VU.Unbox a) => VU.Vector a -> VU.Vector Int argSort xs = VU.map fst $ VU.create $ do xsi &…
4 ответа

Рекурсивно модифицирующие части структуры данных в Haskell

Привет, ребята. Я новичок в Haskell, я хотел бы создать программу на Haskell, которая могла бы применять законы Деморгана к логическим выражениям. Проблема в том, что я не могу изменить данное выражение на новое (после применения законов Деморгана) …
1 ответ

Ссылочная прозрачность в dplyr::filter: изменение имени столбца

Основной вопрос (к чему все сводится) Как мне сконструировать звонок rlang::quo с "левой" вместо "правой" части выражения, являющейся ссылочно прозрачным Взято со страницы справки rlang::quo, это работает quo(foo(!! quo(bar))) # <quosure: global&…
11 окт '17 в 08:50
4 ответа

Как функциональные языки моделируют побочные эффекты?

Поскольку побочные эффекты нарушают прозрачность ссылок, не противоречат ли они функциональным языкам?
9 ответов

Существуют ли чисто функциональные схемы или лиспы?

Я поиграл с несколькими функциональными языками программирования и мне действительно понравился синтаксис s-expr, используемый Лиспсом (в частности, Схемой). Я также вижу преимущества работы на чисто функциональном языке. Следовательно: Существуют л…
3 ответа

Почему лень хорошо сочетается с прозрачностью ссылок?

Я читал учебник по Haskell (Learn You a Haskell), в котором автор сказал, что лень хорошо сочетается с прозрачностью ссылок. После дополнительного чтения и некоторых поисков я все еще не понимаю, почему. Обратите внимание, что я понимаю, что хорошег…
18 ответов

Что такое ссылочная прозрачность?

Что означает термин ссылочная прозрачность? Я слышал, что это описывается как "это означает, что вы можете заменить равные равными", но это выглядит как неадекватное объяснение.
7 ответов

Вывод типа мешает ссылочной прозрачности

Какое точное обещание / гарантию предоставляет язык Haskell в отношении прозрачности ссылок? По крайней мере, в отчете на Haskell это понятие не упоминается. Рассмотрим выражение (7^7^7`mod`5`mod`2) И я хочу знать, равно ли это выражение 1. Для моей…
2 ответа

Как вставить O(log(n)) в Data.Set?

Просматривая документы Data.SetЯ видел, что вставка элемента в дерево упоминается как O(log (n)). Тем не менее, я бы интуитивно ожидал, что он будет O(n * log (n)) (или, может быть, O(n)?), Поскольку прозрачность ссылок требует создания полной копии…
0 ответов

Алгоритм определения преимуществ функции запоминания

проблема Допустим, у меня есть некоторый язык программирования с только ссылочно-прозрачными функциями. Хорошо известно, что любая из этих функций может быть запомнена. Однако не всегда стоит запоминать функции с точки зрения времени или пространств…
2 ответа

Как вы соединяетесь с API на функционально чистом языке?

Мне просто интересно узнать, как на чисто функциональном языке вы можете подключиться с помощью API, не вызывая побочных эффектов?
3 ответа

Есть ли какая-то польза от переноса API Haskell Edison и Core на F#?

Модули Edison API и Core являются реализацией чисто функциональных структур данных на Haskell. Достаточно ли охватывают структуры данных F# и нативные.Net варианты использования в Edison API и Core? Будет ли какая-то польза от попыток перенести моду…
0 ответов

Попытка нарушить ссылочную прозрачность в Excel UDF

Я делаю несколько тестов, чтобы понять, что вы можете и не можете делать с макросами Excel. Ситуация такова, что я хочу вызвать следующий UDF из ячейки и дать ему оценку "hotdawg", а также побочный эффект установки ячейки D13 в значение "SIDE EFFECT…