Size: a a a

2020 October 29

Y

Yuuri in fprog_spb
Alexander Tchitchigin
+ open recursion.
«А если делать на анафорических лямбдах — так задачка вообще на пять минут»
источник

Y

Yuuri in fprog_spb
Я что-то пока не понимаю, как сделать AST на final tagless. Мне нужно хранить АТД для дерева, чтобы по нему туда-сюда ходить, а не обработать линейно один раз.
источник

K

Kakadu in fprog_spb
Т.е. матчить его хочется? У Олега в lecture notes был пример про это
источник

L

Liscript-bot in fprog_spb
@GabrielFallen, ошибка преобразования в число: String: open
источник

Y

Yuuri in fprog_spb
Kakadu
Т.е. матчить его хочется? У Олега в lecture notes был пример про это
На либу в таком стиле бы поглядеть.
источник

MP

Mike Potanin in fprog_spb
Yuuri
А ещё будет очень здорово, если подскажете, как на хаскеле лучше организовать то представление AST из презентации.
Я делал отдельные типы для представления выражений на разных стадиях обработки и кучу почти тождественных преобразований. Знакомые в одном исследовательском проекте в аналогичном случае создавали один общий тип.
Может быть можно воспользоваться GATD с параметром фантомным типом в зависимости от которого доступны нужные конструкторы.
источник

SK

Sergio Keler in fprog_spb
Функциональное программирование в музыке.
источник
2020 October 30

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Я что-то пока не понимаю, как сделать AST на final tagless. Мне нужно хранить АТД для дерева, чтобы по нему туда-сюда ходить, а не обработать линейно один раз.
Закодируйте по Чёрчу -- будет дерево, по которому можно "ходить" сколько угодно раз. 🤷‍♀
источник

AT

Alexander Tchitchigi... in fprog_spb
В общем-то, final tagless так же работает...
источник

MP

Mike Potanin in fprog_spb
Sergio Keler
Функциональное программирование в музыке.
А про типизацию там глава есть? https://habr.com/ru/company/nix/blog/490010/
источник

SK

Sergio Keler in fprog_spb
Кривой перевод очень до смешного.  Местами не понял, полез в оригинал.
Про типизацию в старой советской книжке пока не видел. Только начал читать.
источник

Y

Yuuri in fprog_spb
Alexander Tchitchigin
Закодируйте по Чёрчу -- будет дерево, по которому можно "ходить" сколько угодно раз. 🤷‍♀
Но зачем столько ухищрений, если можно просто иметь ADT?
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Но зачем столько ухищрений, если можно просто иметь ADT?
"Просто ADT" у Вас уже есть. Но что-то Вас всё-таки не устраивает, а? 😉
источник

Y

Yuuri in fprog_spb
Да, лишние уровни вложенности. А с полиморфными вариантами и лишних уровней нет, и дерево остаётся простым деревом!
источник

MK

Maxim Koltsov in fprog_spb
TTG уже упоминали?
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Да, лишние уровни вложенности. А с полиморфными вариантами и лишних уровней нет, и дерево остаётся простым деревом!
Дерево простым не остаётся, строго говоря, оно разваливается на куски — это раз. Без open recursive style полиморфные варианты всё равно не решают expression problem — это два. Сильно подозреваю, что у них есть "скрытые особенности" (подводные камни) в части типизации, композиции и реализации — это три.

Не надо думать, что полиморфные варианты — серебряная пуля. Final tagless, Free monads, Church encoding обеспечивают примерно все те же плюшки за примерно ту же цену. Дальше вопрос личного вкуса, IMHO. 🤷‍♀️
источник

Y

Yuuri in fprog_spb
«примерно ту же»?..
источник

Y

Yuuri in fprog_spb
— Как решить такую-то маленькую задачку?
— Вот тебе много умных слов, иди разбирайся.
Спросить на Reddit, что ли…
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
— Как решить такую-то маленькую задачку?
— Вот тебе много умных слов, иди разбирайся.
Спросить на Reddit, что ли…
А кто определяет размер задачи? 😂
источник

Y

Yuuri in fprog_spb
Количество строк в альтернативном решении!
источник