Size: a a a

Scala User Group

2020 October 17

Oℕ

Oleg ℕizhnik in Scala User Group
потому что в качестве типов высшего порядка в скале могут выступатьтайпалиасы, а в хаскеле сильно огранично требованием, чтобы заголовок был всё равно объявлением типа данных первого класса
источник

ΑZ

Αλεχ Zhukovsky in Scala User Group
Ortofax
*монада IO в частности - метапрограммирование
получается любая монада. Но считат какой-нибудь мейби за метапрограммирование как-то не очень полезно
источник

ΑZ

Αλεχ Zhukovsky in Scala User Group
яб ы проводил грань на кодогенерации
источник

I

Ilya in Scala User Group
Αλεχ Zhukovsky
получается любая монада. Но считат какой-нибудь мейби за метапрограммирование как-то не очень полезно
Ну не все инструменты одинаково полезны в каждой конкретной ситуации
источник

ΑZ

Αλεχ Zhukovsky in Scala User Group
Ilya
Ну не все инструменты одинаково полезны в каждой конкретной ситуации
я скорее про то, что опрееделение куда попадает слишком много "лишних" объектов - плохое
источник

I

Ilya in Scala User Group
Αλεχ Zhukovsky
я скорее про то, что опрееделение куда попадает слишком много "лишних" объектов - плохое
Вот такой пример в голову пришёл.
У меня есть ДСЛ для формул
И есть 2 интерпретатора (забудем пока про ТФ, может я свой парсер написал) пусть первый рассчитывает конкретное значение по заданным параметрам а второй генерит некое визуальное представление?
Это уже мета или еще нет?
источник

O

Ortofax in Scala User Group
на фримонадах!
источник

I

Ilya in Scala User Group
Ortofax
на фримонадах!
На lex/yacc. Имхо не суть)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya
Почему? Если, к примеру, у меня есть 2 транслятора. Один исполняет бизнес-дейсьвия, второй стоит граф исполнения и пытается его оптимизировать?
Ну хорошо, один свой ДСЛ вы можете считать метапрограммированием относительно второго своего интерпретатора.
Ни один из них не является метапрограммированием относительно scala.
Потому что ни один из них не оперирует конструктами языка scala как своими входными данными
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Макросы и инлайны оперируют деревьями выражений scala, семейства типов и матч-тайпы оперируют типами как  данными
источник

I

Ilya in Scala User Group
Oleg ℕizhnik
Ну хорошо, один свой ДСЛ вы можете считать метапрограммированием относительно второго своего интерпретатора.
Ни один из них не является метапрограммированием относительно scala.
Потому что ни один из них не оперирует конструктами языка scala как своими входными данными
Те получается что термин "мета-программа" без привязки к платформе это не имеет смысла? Те скала это мета-ассемблер?))) Ну в принципе нормально
источник

λ

λoλegΥch in Scala User Group
все ассемблер
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya
Те получается что термин "мета-программа" без привязки к платформе это не имеет смысла? Те скала это мета-ассемблер?))) Ну в принципе нормально
Да мета-программирование всегда относительно какого-то способа программировать всегда.
scala - meta-assembler только тогда, когда scala берёт код на ассемблере и генерирует другой код на ассемблере, т.е. довольно редко
источник

Oℕ

Oleg ℕizhnik in Scala User Group
если код на ассемблере только в качестве выхода это фронтенд, а не метапрограммирование
источник

I

Ilya in Scala User Group
Oleg ℕizhnik
Да мета-программирование всегда относительно какого-то способа программировать всегда.
scala - meta-assembler только тогда, когда scala берёт код на ассемблере и генерирует другой код на ассемблере, т.е. довольно редко
А как шаблоны с++ взаимодействовать могут с AST?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya
А как шаблоны с++ взаимодействовать могут с AST?
Точно так же, они получают типы и константные выражения, могут нетривиальным образом анализировать их, с ветвлением и рекурсией и производить новые типы вместе с термами
источник

I

Ilya in Scala User Group
Я вот больше бы на возможность создание тьюринг-полгого языка смотрел наверное. Хотя тогда ломбок становится не мета
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Язык не обязательно тюринг полный
источник

I

Ilya in Scala User Group
Oleg ℕizhnik
Точно так же, они получают типы и константные выражения, могут нетривиальным образом анализировать их, с ветвлением и рекурсией и производить новые типы вместе с термами
Но там нет работы с конкретным АСТ
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Он должен преодолевать некоторую неформальную границу "сложности"\"интересности"
источник