Size: a a a

Compiler Development

2020 April 01

ИЧ

Илья Чистяков in Compiler Development
я бы оч хотел пример с линзой наколбасить на питоне, но понять что он делает не получается
источник

МБ

Михаил Бахтерев in Compiler Development
Mikhail Maltsev
А у какого объекта будет вызван метод bar?
Это не метод будет, а функция специального вида.
источник

МБ

Михаил Бахтерев in Compiler Development
Илья Чистяков
я бы оч хотел пример с линзой наколбасить на питоне, но понять что он делает не получается
Линза - это просто пара функций get и set. Потом это всё обобщается
источник

AG

Alex Gryzlov in Compiler Development
Михаил Бахтерев
Имеется в виду профункторная оптика?

Меня больше заинтересовал вопрос о связи с монадами, эффектами и прочим таким
в ограниченном смысле можно еще через траверсалы зайти
источник

AG

Alex Gryzlov in Compiler Development
Илья Чистяков
я бы оч хотел пример с линзой наколбасить на питоне, но понять что он делает не получается
линза это комбинатор двустороннего программирования
источник

AT

Alexander Tchitchigin in Compiler Development
Alex Gryzlov
линза это комбинатор двустороннего программирования
Или даже "обратимого программирования"... 🤔
источник

МБ

Михаил Бахтерев in Compiler Development
Alex Gryzlov
ну связь с монадами у профункторов известная: Monad ~= ArrowApply
Если я верно помню, там только в одну сторону связь: легко из профунктора сделать монаду. Обратное не вспоминается. Что бы погуглить?
источник

ИЧ

Илья Чистяков in Compiler Development
Alex Gryzlov
линза это комбинатор двустороннего программирования
а в терминах императивного языка она имеет аналог?
источник

AG

Alex Gryzlov in Compiler Development
Илья Чистяков
а в терминах императивного языка она имеет аналог?
ну не знаю, backpropagation например достаточно императивное понятие?
источник

MM

Mikhail Maltsev in Compiler Development
Alexander Tchitchigin
Ни у какого. В ФП же нет объектов и методов. 😃
Ок, сформулирую по-другому
> Если в цепочке this.foo.bar .foo вернул итератор
...
> А в линзах всё ОК будет, если по типам сойдётся.
Что имеется в виду? Что будет делать ФП-аналог кода "this.foo.bar", который будет работать с линзами, если foo возвращает некий аналог итератора?
источник

ИЧ

Илья Чистяков in Compiler Development
Alex Gryzlov
ну не знаю, backpropagation например достаточно императивное понятие?
не понятно как нейронки связанны с языками
источник

AG

Alex Gryzlov in Compiler Development
Михаил Бахтерев
Если я верно помню, там только в одну сторону связь: легко из профунктора сделать монаду. Обратное не вспоминается. Что бы погуглить?
источник

Т8

Т-34 85 in Compiler Development
Alex Gryzlov
звучит как будто у вас там что-то типа стрелок вместо монад
стрелка == лямбда?
источник

AG

Alex Gryzlov in Compiler Development
Т-34 85
стрелка == лямбда?
функции можно считать вырожденным случаем стрелок да
источник

AT

Alexander Tchitchigin in Compiler Development
Mikhail Maltsev
Ок, сформулирую по-другому
> Если в цепочке this.foo.bar .foo вернул итератор
...
> А в линзах всё ОК будет, если по типам сойдётся.
Что имеется в виду? Что будет делать ФП-аналог кода "this.foo.bar", который будет работать с линзами, если foo возвращает некий аналог итератора?
Если this.foo - это traversl, то .bar будет "применяться" к каждому элементу, по понятным причинам.
источник

AT

Alexander Tchitchigin in Compiler Development
Т-34 85
стрелка == лямбда?
Нет, это те стрелки, которые в ТК.
источник

AG

Alex Gryzlov in Compiler Development
не совсем в тк, но рядом да
источник

MM

Mikhail Maltsev in Compiler Development
Alexander Tchitchigin
Если this.foo - это traversl, то .bar будет "применяться" к каждому элементу, по понятным причинам.
Так понятно, спасибо
источник

AT

Alexander Tchitchigin in Compiler Development
Mikhail Maltsev
Так понятно, спасибо
Не забудьте только ещё и про prisms, folds, setters и iso. 😉
источник

AG

Alex Gryzlov in Compiler Development
еще решетки и калейдоскопы
источник