Size: a a a

Compiler Development

2020 April 21

МБ

Михаил Бахтерев in Compiler Development
Алексей
вот математики всякие могут себе позволить описывать всякие процессы в виде функций от времени
У них там во времени меняются распределения вероятностей. То есть, они считают в монадах, фактически. Ну... В современной физике.
источник

А

Алексей in Compiler Development
Михаил Бахтерев
У них там во времени меняются распределения вероятностей. То есть, они считают в монадах, фактически. Ну... В современной физике.
не обязательно
источник

А

Алексей in Compiler Development
в классической физике не будет распределений
источник

А

Алексей in Compiler Development
обычно
источник

r

ruv in Compiler Development
Михаил Бахтерев
Ну тип Вы написать такой можете. А реализовывать как? Напомню, что функции, по определению, чистые.
Функция предоставляется средой (возвращается), реализовывать ее не надо )

Т.е., это даже практически реализовать возможно. Но, не оправдано, конечно же.

Как бы там ни было, я рассматривал чисто теоретический вопрос: возможно ли сокет описать функцией.

#functional
источник

МБ

Михаил Бахтерев in Compiler Development
А... Ну, да. Но там, строго говоря, и не процесс вычисляется, а состояние движения системы. Worldline
источник

А

Алексей in Compiler Development
ruv
Функция предоставляется средой (возвращается), реализовывать ее не надо )

Т.е., это даже практически реализовать возможно. Но, не оправдано, конечно же.

Как бы там ни было, я рассматривал чисто теоретический вопрос: возможно ли сокет описать функцией.

#functional
вообще тут встаёт вопрос, а что считать сайдэффектом
источник

А

Алексей in Compiler Development
если мы вызовем функцию с t = 1 год и будем весь этот год ждать её результата, то будет ли это сайдэффектом?
источник

МБ

Михаил Бахтерев in Compiler Development
ruv
Функция предоставляется средой (возвращается), реализовывать ее не надо )

Т.е., это даже практически реализовать возможно. Но, не оправдано, конечно же.

Как бы там ни было, я рассматривал чисто теоретический вопрос: возможно ли сокет описать функцией.

#functional
А. Ну, интерфейс, может и таким быть. Это как раз IO и есть. Изначальная фишка монад была именно в том, что можно дать чисто функциональный интерфейс к процессу.
источник

А

Алексей in Compiler Development
ну да в принципе монады тут более интересная концепция
источник

r

ruv in Compiler Development
Алексей
если мы вызовем функцию с t = 1 год и будем весь этот год ждать её результата, то будет ли это сайдэффектом?
После таймаута (минуты) возвращаемое значение уже не меняется, т.к. коннект завершается. Поэтому, ждать придется лишь пару минут.  Ну, это в том случае, если t именно время. А это может быть просто порядковый номер синхронного вызова. Если оказалось, что есть "пропуск", то система работает, как будто там были вызовы с пустым value1.
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
После таймаута (минуты) возвращаемое значение уже не меняется, т.к. коннект завершается. Поэтому, ждать придется лишь пару минут.  Ну, это в том случае, если t именно время. А это может быть просто порядковый номер синхронного вызова. Если оказалось, что есть "пропуск", то система работает, как будто там были вызовы с пустым value1.
Складывается впечатление, что Вы переизобретаете FRP. 😉
источник

r

ruv in Compiler Development
Михаил Бахтерев
А. Ну, интерфейс, может и таким быть. Это как раз IO и есть. Изначальная фишка монад была именно в том, что можно дать чисто функциональный интерфейс к процессу.
Вообще, можно ведь обойтись и без искусственного аргумента t  (чисто теоретическая конструкция):

socket: value1 -> ( socket2, value2 )

Для чтения или записи следующего значения надо вызывать функцию socket2, и т.д.
Технически, при повторных вызовах функция ведет себя как константа, возвращая то же самое значение независимо от аргумента.

Монада без монады? )
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Складывается впечатление, что Вы переизобретаете FRP. 😉
Ну, я как-бы рассуждаю лишь о чисто теоретической выражаемости какой-то идеи в каких-то терминах 😊
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Вообще, можно ведь обойтись и без искусственного аргумента t  (чисто теоретическая конструкция):

socket: value1 -> ( socket2, value2 )

Для чтения или записи следующего значения надо вызывать функцию socket2, и т.д.
Технически, при повторных вызовах функция ведет себя как константа, возвращая то же самое значение независимо от аргумента.

Монада без монады? )
Нет, это монада и есть. 😊
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Ну, я как-бы рассуждаю лишь о чисто теоретической выражаемости какой-то идеи в каких-то терминах 😊
Видимо, FRP — либо единственный, либо "естественный" способ выражать процессы функциями. Но не все процессы, как мне кажется. И с эффективной реализацией есть вопросы...
источник

AG

Alex Gryzlov in Compiler Development
frp хорошо для случаев когда весь нондетерминизм внешний
источник

r

ruv in Compiler Development
Alex Gryzlov
frp хорошо для случаев когда весь нондетерминизм внешний
Так, в функциональном мире и не бывает ведь внутреннего недетерминизма?
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Так, в функциональном мире и не бывает ведь внутреннего недетерминизма?
Почему бы и нет? Можно начать с того чтобы аргументы вычислять в недетерминированном порядке, поскольку побочных эффектов-то нет.
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Почему бы и нет? Можно начать с того чтобы аргументы вычислять в недетерминированном порядке, поскольку побочных эффектов-то нет.
Так, в чистых функциях результат же не зависит от порядка вычисления аргументов. Или как?
источник