Denis
@fsdnbot вот что т опохожее
Anonymous
@fsdnbot вот что т опохожее
Есть примеры использования? Пишу let f a b = f a b;; и ничего не отвечает
Ivan
насколько помню он наоборот по сигнатуре ищет функцию
Anonymous
Мм понятно
Artemy
sn, могу предложить разве что онлайн-среду (эдакий fiddler) с трансляторм F# -> JS. По крайней мере, для того, что может быть транслировано в JS, будет работать. Те же типы можно глянуть в редакторе в тултипах
Artemy
https://try.websharper.com/
Artemy
По крайней мере, там последняя версия F# поддерижвается
Artemy
Для простых функций, типа let myfunc a b = a * b;; точно работает без проблем
Artemy
Вот демо-подтверждение :) https://i.imgur.com/h8eh3E7.png
Romɑn
Почему нельзя предположить что у меня нет ide? Сложилась такая вот ситуация
К сожалению такого сайта не знаю, но если найдете, то поделитесь плз
Anonymous
В райдере можно видеть сигнатуры твоих функций
Да сайт же нужен ну ебвашмать ребят без обид но 4 раз уточняю уже
Viacheslav
Shub
Ну ладно, наверняка и для emacs есть плагин
Есть. Пристойный. Немного спартанский, но я что-то никак не придумаю, чего б туда добавить
Anonymous
- взято с fsharpforfunandprofit. Вопрос: а какая разница между pure тогда? Комбинатор же тоже не может иметь сайд эффектов ("no global value can be accessed")
Ayrat
Они достаточно уникальны
Ayrat
Они все чистые, да
Ayrat
Но просто чистых функций много, не все из них комбинаторы
Ayrat
Комбинаторы это такие строительные блоки
Vladislav
https://www.reddit.com/r/sysadmin/comments/eaphr8/a_dropbox_account_gave_me_stomach_ulcers/
Nuxs🏴‍☠️
Комбинаторы разные бывают. let konst v _ = v
зачем константы в функциональных яп?
Ayrat
Это же функциональная константа
Ayrat
konst 5 - это функция
Nuxs🏴‍☠️
но ведь можно же просто let x = 5
Ayrat
Принимающая любой сигнал, и возвращающая 5
Nuxs🏴‍☠️
а
Nuxs🏴‍☠️
let x a = 5
Igor
Комбинаторы разные бывают. let konst v _ = v
Напомните, а почему не always? (как в elm https://package.elm-lang.org/packages/elm/core/latest/Basics#always )
Ayrat
let x a = 5
Вот ты и написал комбинатор. Но очень частный
Nuxs🏴‍☠️
он же всегда возвращает 5
Nuxs🏴‍☠️
почему нельзя сразу юзать 5?
Romɑn
смысл от него?
Почитай про комбинаторы в Вики.
Romɑn
Писать на трёх базовых комбинаторах сейчас это как писать на асме, когда есть с#.
Ayrat
Комбинаторная логика — Википедия https://ru.m.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0
Romɑn
Писать на трёх базовых комбинаторах сейчас это как писать на асме, когда есть с#.
Но знать три базовых комюинатора и саму идею, совсем не плохо
Igor
Igor
Nuxs🏴‍☠️
Ayrat
To Mock a Mockingbird - Wikipedia https://en.m.wikipedia.org/wiki/To_Mock_a_Mockingbird
Ayrat
Вот книга про птичек
Ayrat
(на самом деле нет)
Ayrat
Она раскрывает комбинаторну логику через орнитологию
Фил Ранжин
Есть длительная операция, которая умеет херачить нотификации о своём прогрессе. Отменяемая. Как бы её можно было представить в функциональной манере?
Фил Ранжин
Типа, на чистых функциях
Фил Ранжин
Мне пришло в голову на каждое изменение состояния операции вываливать ивент с новым инстансом её самой в качестве пэйлоада. Но есть ощущение, что я крупный долбаёб
Ayrat
Есть длительная операция, которая умеет херачить нотификации о своём прогрессе. Отменяемая. Как бы её можно было представить в функциональной манере?
Тут вопрос только а одном, если отмена происходит снаружи (не по воле функции), то завернуть в монаду (всё что имеет контекст исполнения можно завернуть в монаду и забыть). Если отмена определяется в самой функции, то сделать ее рекурсивной и прокидывать стейт
Фил Ранжин
снаружи да
Ayrat
В функции чекать стейт и отменять/продолжать
Ayrat
снаружи да
Тогда монада
Фил Ранжин
я не очень понимаю, если честно. Монада хорошо подходит для отмены/старта
Фил Ранжин
А что делать с тем, что операция сама по своей воле меняет свой стейт?
Ayrat
я не очень понимаю, если честно. Монада хорошо подходит для отмены/старта
У тебя функции будут возвращать чот типа Cancellable<int>, чистые шопиздец.
Ayrat
Грязнота в рантайме
Ayrat
FP way!
Фил Ранжин
вот типа такого?? let op = operation.start(...); op.OnDataUploaded(renderData); .... this.click = op = op.cancel()
Фил Ранжин
не фпвей
Ayrat
вот типа такого?? let op = operation.start(...); op.OnDataUploaded(renderData); .... this.click = op = op.cancel()
Не, вот эти кенселы будут внутри реализации монады. Где-то в методах bind, return и пр