Size: a a a

2021 April 03

t

toriningen in Haskell
ну мне просто так видится, что практических кейсов будет куда больше, если убрать требование сохранять изначальное поведение.
источник

t

toriningen in Haskell
да и, если я верно понимаю, у порождающей функции в целом нет никаких ожиданий насчет конкретных эффектов, которые будет иметь фактическая интепретация ФМ
источник

t

toriningen in Haskell
т.к. интерпретаторов может быть много...
источник

к

кана in Haskell
ну, под поведением я имел в виду не поведение интерпретатора
источник

t

toriningen in Haskell
ну, тогда "поведение" для чистых вещей типа Add можно понять, но зачем в таком случае ФМ?
источник

к

кана in Haskell
а такую трансформацию, что для всех нужных нам интерпретаторов evalX, evalX x = evalX (transform x)

как например склейка 5 принтов подряд в один принт через \n, чтобы уложиться в один IO вызов
источник

MK

Maxim Koltsov in Haskell
toriningen
а что такое "частичное выполнение" в конкретно этом случае?
Partial evaluation
источник

t

toriningen in Haskell
Maxim Koltsov
Partial evaluation
нет, это я понял. я не понял, как можно "частично применить" коллбэк бинда, если у него по сути один только аргумент. Речь о суперкомпиляции? Скормить ему некий Специальный Объект, который будет вести себя по разному в разных контекстах?
источник

MK

Maxim Koltsov in Haskell
Ну если сделать PE хаскеля, то всё получится :)
источник

MK

Maxim Koltsov in Haskell
Если серьёзно, то для этого надо не использовать хаскель в колбеках, только дсл
источник

MK

Maxim Koltsov in Haskell
В общем что-то сделать можно
источник

t

toriningen in Haskell
Maxim Koltsov
Если серьёзно, то для этого надо не использовать хаскель в колбеках, только дсл
окей, но мне кажется, что это не решает проблему, а загоняет ее на уровень ниже - по сути, этот dsl должен быть полноценным тюринг-полным языком... выглядит, как переизобретение хаскеля поверх хаскеля
источник

t

toriningen in Haskell
и этот dsl точно так же надо будет оптимизировать.
источник

t

toriningen in Haskell
если он полностью представим в виде статической структуры, то мне и фримонада не нужна - я могу сразу на этом dsl писать
источник

MK

Maxim Koltsov in Haskell
toriningen
окей, но мне кажется, что это не решает проблему, а загоняет ее на уровень ниже - по сути, этот dsl должен быть полноценным тюринг-полным языком... выглядит, как переизобретение хаскеля поверх хаскеля
А должен ли? :)
источник

t

toriningen in Haskell
Maxim Koltsov
А должен ли? :)
ну если мы хотим быть on-par с хаскелем, то да.

а если задачи подразумевают, что можно обойтись чем-то более ограниченным, то нужна ли ФМ?
источник

KV

Kirill Valyavin in Haskell
toriningen
ну ведь это (цитата из любой статьи про монады) "просто как будто AST для вашего кода!"
Дык оно в рантайме строится. Чтобы был статический анализ, нужно что-то менее выразительное, вот селективы уже предложили
источник

MK

Maxim Koltsov in Haskell
Про PE в языках с эффектами можно тут посмотреть
https://www.researchgate.net/publication/259162812_Normalization_by_Evaluation_and_Algebraic_Effects
источник

MK

Maxim Koltsov in Haskell
Но это конечно вещь затрагивающая весь язык
источник

MK

Maxim Koltsov in Haskell
С хаскелем такое наверное только на уровне тх можно сделать, и то если написать свой интерпретатор
источник