Size: a a a

2019 December 30

PK

Petr Kozorezov in ErlangRus
Yuri Pipchenko
Всех с наступающим!
А есть ли способ определить функцию и спеку к ней в одном макросе?
Лично я не видел такого. И сомневаюсь, что можно.
источник

PK

Petr Kozorezov in ErlangRus
Точнее, не думаю, что можно это сделать так, чтобы это было читабельно 🙂
источник

YP

Yuri Pipchenko in ErlangRus
У меня не получилось. Но мало ли, не все ещё варианты перебрал..
источник

PK

Petr Kozorezov in ErlangRus
а что ты хочешь этим получить?
источник

PK

Petr Kozorezov in ErlangRus
вариант вроде того, что в сях? foo(integer() A) -> integer().
источник

YP

Yuri Pipchenko in ErlangRus
Мне надо сделать много однотипных функций. Макросом они все вполне описываются. Ну и спеки к ним. И вот из за спек приходится делать две строки в коде вместо одной.
источник

AB

Alex Bubnov in ErlangRus
Кстати, и вправду интересно, как оптимизатор хаскеля разбирается, что можно реиспользовать, что нет. Только по обертке? Но ведь можно сделать другую монаду для недетерменированных вычислений
источник

AB

Alex Bubnov in ErlangRus
Оптимизатор хаскеля же должен полагаться на referential transparency по дефолту
источник

PK

Petr Kozorezov in ErlangRus
Yuri Pipchenko
Мне надо сделать много однотипных функций. Макросом они все вполне описываются. Ну и спеки к ним. И вот из за спек приходится делать две строки в коде вместо одной.
Ну может я не до конца понимаю, но две строки вместо одной в случае функции и спеки не выглядят плохо.
источник

YP

Yuri Pipchenko in ErlangRus
Да, согласен. Но хочется одну ). Ладно, спасибо.
источник

AG

Anton Grechnev in ErlangRus
Сергей Иванов
это жесть конечно - эрланговские вакансии сносить в эрланговском чатике
https://t.me/erlangrus/46916
Вот она, можешь изучить
источник

СИ

Сергей Иванов in ErlangRus
я знаю эту вакансию, но смысл ее удалять?
источник

AB

Alexander Bogosyan in ErlangRus
Yuri Pipchenko
Да, согласен. Но хочется одну ). Ладно, спасибо.
через шаблонизатор какой нибудь можно сделать наверное типа как тут: https://github.com/tsloughter/grpcbox_plugin/blob/master/priv/grpcbox_service_client.erl
источник

AB

Alexander Bogosyan in ErlangRus
тут используется тот же темплейтер который rebar3 new app итд делает
источник

LW

Lev Walkin in ErlangRus
Авроамэриканец Начрэл
Мне интересна часть о детерменированости
Любые функции в хаскеле, не содержащие unsafe — чистые и детерминированные. Даже функции, работающие в монаде IO.
источник

LW

Lev Walkin in ErlangRus
Lev Walkin
Любые функции в хаскеле, не содержащие unsafe — чистые и детерминированные. Даже функции, работающие в монаде IO.
Это, по сути, набор инструкций рантайму, что делать. И функция возвращает всегда один и тот же набор инструкций. А интерпретировать его рантайм может единожды, или многократно. Если он это сделает многократно, может получить разные ответы. Но эта штука находится уже под капотом хаскелевского рантайма.
источник

АН

Авроамэриканец Начрэл in ErlangRus
Lev Walkin
Любые функции в хаскеле, не содержащие unsafe — чистые и детерминированные. Даже функции, работающие в монаде IO.
Результат IO функции невозможно определить по входным данным. Следовательно она не детерменирована
источник

И

Иλьямбда in ErlangRus
Авроамэриканец Начрэл
Результат IO функции невозможно определить по входным данным. Следовательно она не детерменирована
Нет никаких IO функций, есть функции, возвращающие значения типа IO a
источник

И

Иλьямбда in ErlangRus
И если мы напишем функцию вида

f :: Int -> IO ()
f x = print $ "hello, " <> show x

То f 5 будет вполне себе детерминированна
источник

LW

Lev Walkin in ErlangRus
Авроамэриканец Начрэл
Результат IO функции невозможно определить по входным данным. Следовательно она не детерменирована
как сказано выше, функция возвращает IO a, а не a. То есть, она возвращает схему вычислений, а не результат.
источник