Dmitry
клика (клиент, кликать) кликало клюка (+ глюк)
А Haskell - это Колмогоров или Марков, тоже ничё так
undefined
А Haskell - это Колмогоров или Марков, тоже ничё так
Тогда уж Шейнфинкель, для восстановления справедливости
A64m
АНДРЕИЧ
A64m
ААМ
A64m
советский аналог хаскеля бейнса карри - андрей андреич марков
Iliya
Марков уже в рефале осуществлён
Anonymous
ну вот. С именем почти определились. Осталось описать язык и написать компилятор.
Евгений
Ну Марков не будет функциональным + рефал, да
Dmitry
Как там с суперкомпиляцией-то? Не смогли?
Евгений
Ну Марков не будет функциональным + рефал, да
Если бы я закончил матмех, то генеологию математическую от маркова бы вёл как раз
Евгений
Как там с суперкомпиляцией-то? Не смогли?
Ещё в советское время ж смогли
Dmitry
Ну начали смагивать же
Dmitry
А потом выяснилось, что сложно некоторые структуры сворачивать, разве нет?
Евгений
Насколько я понимаю уже когда стали к джаве в нулевые прикручивать выяснилось
Dmitry
Ну вот и я что-то такое читал. Дальше продвижений не было?
Евгений
Ну это хз, турчин давно престарелый западный академик. Я только с советской историей знаком
Евгений
Но я думаю, что это классическая задача, сводящаяся к проблеме останова. Если у тебя рекурсивные ссылки в данных не ограничены никак, то суперкомпиляция требует оракула.
Евгений
В рефале работало, потому что там ссылок и указателей нету
A64m
ну вот. С именем почти определились. Осталось описать язык и написать компилятор.
в гхц в парсере кейворды на кириллические поменять и все
Alexander
например, какой скалист?
Да я их помню разве
Anonymous
в гхц в парсере кейворды на кириллические поменять и все
если ГХЦ считать совершенством, то можно скормить ему АСТ, минуя парсер. А парсер вывести в отдельную либу. Тогда можно будет настраивать ГХЦ на любой язык.
Евгений
Звучит так, будто они тотальное подмножество в язык встроили
Dmitry
Эмм, наверное, надо развернуть мысль?
Евгений
Наверное это он мне
Oleg
Ну и хорошо
Евгений
Эмм, наверное, надо развернуть мысль?
По аннотации в три строчки сложно судить, но выглядит так, будто они делают вложение языка в его тотальное подмножество, для которого суперкомпиляция уже нормально работает. Иными словами -- выделяют в языке устойчивые тотальные структуры (индукцию, например) и суперкомпилируют только их, а сложные рекурсивные не трогают так, будто это целостные атомарные термы. Похожие хаки с оптимальной редукцией делают. Но это гипотеза, конечно
Alexander
суперкомпиляция это специализация + global program optimization с явным разворачиванием условий и оптимизацией с их учётом?
Alexander
или я все не правильно понимаю и стоит почитать?
Dmitry
Я это так же себе представляю.
Dmitry
На fprog статья была
Dmitry
Сейчас...
Dmitry
http://fprog.ru/2011/issue7/ -- там "Суперкомпиляция: идеи и методы"
Dmitry
Последний хороший обзор, который я читал. Думал, может, с 2011-го что-то ещё появилось. Кто-нить в курсе?
Kakadu
Можно попробовать посмотреть работы от Geoff Hamilton
Dmitry
+
Anonymous
@hsslbch будет жить. Поприветствуем!
Anonymous
@dmitryfrolove будет жить. Поприветствуем!
Anonymous
Есть тут люди знакомые с APS standard?
Cheese
это вообще из какой области?
Anonymous
Похоже https://www.apsstandard.org
Кабачок
O_O
Евгений
Это похоже на виндовое администрирование
Igor
Igor
Подскажите, пожалуйста, как понять эту запись?
Igor
Это из статьи Олега Киселёва "Typed Tagless Final Interpreters"
Igor
http://okmij.org/ftp/tagless-final/course/lecture.pdf
Igor
Я читаю статью и паралелльно переписываю код из статьи на Scala, но, к сожалению, не обладаю достаточными знаниями Haskell
Cheese
внутрь Wrapped можно положить значение любого типа, реализующего ExpSYM
Igor
Видимо, Haskell придется учить в любом случае, так как он, судя по-всему, lungua-franca в фп
Denis
В скале нет forall, потэтому придется сделать отдельный трейт с этим методом
Ilya
Полиморфная функция forall a. f a - > a внутри типа-обертки
Ilya
Полиморфная это значит, что функцию с сигнатурой f Int -> Int ты туда уже не засунешь
Denis
trait ForAllWithExpSYM { def apply[Repr: ExpSYM]: Repr }
Denis
final case class Wrapped(unwrap: ForAllWithExpSYM) extends AnyVal
Ilya
там нет такого
Действительно, вид стрелки перепутал, то что выше можно не читать
Denis
C Either думаю понятно
Igor
C Either думаю понятно
Да, с Either проблем нет
Cheese
trait ForAllWithExpSYM { def apply[Repr: ExpSYM]: Repr }
а вот этого одного не достаточно?
Denis
а вот этого одного не достаточно?
Достаточно, но если полную копию делать то как то так
Denis
trait ForAllWithExpSYM { def apply[Repr: ExpSYM]: Repr }
Можно во Wrapped переименовать и все
Igor
Можно во Wrapped переименовать и все
Я не понял как Wrapped решает проблему, описываемую в статье. Описать весь контекст проблемы в паре слов достаточно сложно, надеюсь, что кто-нибудь здесь читал и помнит эту статью.
Denis
Wrapped это просто тип обертка вокруг типа анонимной функции
Denis
По статье не скажу точно
Alexander
там не просто функция она "динамически" полиморфная RankN полиморфизм
Alexander
и.е. это функция которая работает с любым типом реализующим соотв класс типов
Alexander
хотел написать как это в скале или жаве, но понял, что не знаю
Cheese
Я не понял как Wrapped решает проблему, описываемую в статье. Описать весь контекст проблемы в паре слов достаточно сложно, надеюсь, что кто-нибудь здесь читал и помнит эту статью.
можно сказать, что это мономорфный тип с полиморфным конструктором. то есть можно значения разных типов привести к одному
Igor
final case class Wrapped(unwrap: ForAllWithExpSYM) extends AnyVal
Для того, чтобы что-то положить во Wrapped, мне придется реализовать trait ForAllWithExpSYM для оборачиваемого объекта?
Igor
https://scastie.scala-lang.org/w8CAEjIRQFqFJ0eAOHhAsw
Cheese
o.O
не согласен?
Alexander
я бы такое про экзистенциальные типы сказал, а не про RankN
Cheese
а в данном случае что?
Alexander
мне этими же терминами тяжело сказать
Cheese
а! я в первый раз был прав, потом переписал на неправильное
Alexander
внутри wrapped лежит функция, в которую можно передать любой тип определяемый caller-ом