Size: a a a

PureScript — русскоговорящее сообщество

2021 November 14

SO

Sash Osh in PureScript — русскоговорящее сообщество
Он тупой и прописан на стороне компилятора
источник

SO

Sash Osh in PureScript — русскоговорящее сообщество
поддерживаю
источник

SO

Sash Osh in PureScript — русскоговорящее сообщество
Импорты вполне себе часть кода, я думал в LS сделать поддержку сохранения форматирования импортов, по идее это не сложно было было, но такое полу-хаккерский подход
источник
2021 November 16

SO

Sash Osh in PureScript — русскоговорящее сообщество
источник
2021 November 19

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Вопрос к знатокам: в Elm Signals а также в purescipt-signal есть функция  mapSignal :: forall a b. (a -> b) -> Signal a -> Signal b.  Она же используется в functor instance, т.е Signal is Functor. (https://github.com/bodil/purescript-signal/blob/master/src/Signal.purs#L40)

Если же посмотреть на JS реализацию этой функции то становится понятно, что оригинальный Signal a мутируется https://github.com/bodil/purescript-signal/blob/master/src/Signal.js#L25 в него добавляется подписка для Signal b. В этом случае я бы ожидал увидеть такой тип функции: mapSignal :: forall a b. (a -> b) -> Signal a -> Effect (Signal b). Понятно, что на обычный функтор это уже не очень похоже, но Effect показывает факт изменения энвайронмента. Тут по идее должна быть философская дискуссия на тему "Если побочный эффект происходит, но доказать этого никто не может, то является ли он эффектом?". Если бы сигналы можно было бы сравнивать по Eq то нарушался бы закон fmap id == id

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

KV

Kirill Valyavin in PureScript — русскоговорящее сообщество
Ссылочная прозрачность нарушается?
источник

K

Kir in PureScript — русскоговорящее сообщество
Если он прозрачен, то ладно
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Какое определение ссылочной прозрачности тут использовать?
источник

KV

Kirill Valyavin in PureScript — русскоговорящее сообщество
А они чё разные бывают
источник

AK

Antony Kapranov in PureScript — русскоговорящее сообщество
Можно упростить программу, как формулу, заменив вызов функции на результат:

Пример нарушения в js:

console.log(1);
console.log(1);

Заменяем второй вызов на результат, и поведение меняется

const x = console.log(1);
x;
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
да но ведь сигналы нельзя сравнить по =
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Поведение программы не меняется с точки зрения результатов на экране, меняется только количество коллбэков внутри сигнала и я не думаю что эту разницу можно как то обозреть.
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Конкретно этот абзац: Если все функции, участвующие в выражении, являются чистыми функциями, то выражение является ссылочно прозрачным. Кроме того, некоторые нечистые функции могут быть включены в выражение, если их значения отбрасываются и их побочные эффекты несущественны.
источник

AK

Antony Kapranov in PureScript — русскоговорящее сообщество
Если в ситуации, когда есть два одинаковых вызова mapSignal, заменить второй вызов на результат первого вызова и при этом поведение не меняется, то прозрачно
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
я думаю это как раз тот случай, когда функция чистой не является но побочный эффект не существенен.
источник

KV

Kirill Valyavin in PureScript — русскоговорящее сообщество
Если два выражения вычисляются в одно и то же значение, но в процессе вычисления выделяется разное количество памяти, это вычисления с эффектами или чистые?
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
т.е. надо убедиться что разница в количестве коллбэков (подписок) никогда не повлияет на программу кроме как на количество памяти.
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Чистые, но немного заляпанные :)
источник

KV

Kirill Valyavin in PureScript — русскоговорящее сообщество
Ну короче вопрос сводится к тому, какие программы Вы считаете эквивалентными
источник