
Aragaer
04.04.2018
08:14:56
да, не так прочитал

Hot
04.04.2018
08:15:00
Меня сейчас больше интересует кодогенерация сторонних ЯП на Haskell. И я хз, где найти под это какой-нибудь тутор для уже начавших, но ещё не особо шарящих.

Leonid
04.04.2018
08:16:08
fun n = "public static void main() { return " <> show n <> "; }" - кодогенерация на хаскеле

Yuriy
04.04.2018
08:16:18

Google

Yuriy
04.04.2018
08:17:00

Александр
04.04.2018
08:17:31

Hot
04.04.2018
08:17:35

Yuriy
04.04.2018
08:19:20

Hot
04.04.2018
08:19:43
Спасибо, гляну.

Yuriy
04.04.2018
08:26:01
@qnikst может рассказать про всякие inline-*, впрочем, это не совсем то

Hot
04.04.2018
08:26:32
Ну пусть расскажет, если ему не лень.


Leonid
04.04.2018
08:26:47
расскажет скоро, в Питере
Очередная встреча сообщества пройдет 19 апреля в офисе JetBrains,
На повестке дня:
«eDSL для дерева переходов на free-монадах и экзистенциальных типах»
Александр Гранин, в прошлом сотрудник "Лаборатории Касперского" и “2ГИС”, а ныне Haskell-разработчик в компании Restaumatic, основатель сообщества LambdaNsk в Новосибирске, расскажет о том, как спроектировать статически типизированное дерево переходов с возможностью ходить по нему вперед и назад и почему не стоит писать такой умный код.
«Теория и практика встраивания внешних языков программирования в Haskell»
Александр Вершилов, разработчик в Tweag I/O, рассмотрит в докладе подход, позволяющий встраивать языки без дополнительного бойлерплейта и использующий сильные стороны гостевого и основного языка, на примере Haskell, Java и R.
«Возможности использования формальных верификаций на Coq для простейших моделей смарт-контрактов» (Андрей Ляшин)
Андрей Ляшин, участник стартапа FinProof и популяризатор теории категорий в программировании, рассмотрит реализацию основных функций стандартного токена ERC20 с демонстрацией доказуемости и недоказуемости свойств для корректной и, соответвенно, некорректной реализаций рекурсивных функций переводов, лежащих, в частности, в основе атаки на the DAO.
—---
Встречаемся 19.04 в 19:00 в офисе JetBrains: Университетская наб., 7-9-11, корп. 5 (вход с Кадетской линии), БЦ «Universe».
Вход бесплатный, но необходимо зарегистрироваться (проход в БЦ по спискам):
https://spb-fp-meetup.timepad.ru/event/696867


Hot
04.04.2018
08:27:07
Доклад какой-то будет?

Alexander
04.04.2018
08:27:24
будет
но это не кодогенерация - кодогеренация это ivory и т.п.
как-то было дело, я вообще руками код генерил только с pretty-printer-ом

Google

Hot
04.04.2018
08:28:04
Встреча всё равно интересная, зарегаюсь.

Alexander
04.04.2018
08:28:16
возможно этот код даже все ещё работает где-то (cc @voidlizard )

Dmitry
04.04.2018
08:28:30
что где?
если ты про сишный трие - то он работает, да
и генерация db для матчинга отпечатков трафика (в роутер) тоже работает

Alexander
04.04.2018
08:30:41
ага
про эти, прикольно

Dmitry
04.04.2018
08:31:10
жалко что emufat больше не работает, вот он был эпичен
до сих пор приятно вспомнить
что прикольно - сами эти псевдофлешки до сих пор валяются по квартире
жалко только, что эпичные технологически проекты не всегда являются эпичными с точки зрения бизнеса

Alexander
04.04.2018
08:33:59
угу, вообще достаточно интересная штука
правда возможность тупо подключить телефон подкосило это

Dmitry
04.04.2018
08:34:42
ну, когда делали с телефонами не так дела обстояли. опять же, это был заказ заказчика
ответственность за анализ технологических решений и перспектив был на нём

Alexander
04.04.2018
08:38:34
ага
вообще согласен, прикольный был проект
в то время если бы у меня была машина я бы такую штуку купил :)

Dmitry
04.04.2018
08:50:18
ага
вообще обидно, что провал был по большей части юридически-административный.

Google

Dmitry
04.04.2018
08:50:47
техологически норм отожгли
хотя конечно лучше было б внедрить это в прошивку самого модема

Denis
04.04.2018
08:51:27
да вообще многие проекты не по техническим причинам фейлятся
а с учетом что некоторые продавать умеют даже пригоршню грязи, там и вовсе больше половины, наверное

Rigidus
04.04.2018
08:54:37

A64m
04.04.2018
08:56:29
(но это не точно)

Hot
04.04.2018
08:59:03
(но (не (точно это)))

kana
04.04.2018
09:04:11
насколько приветствуется использовать линзовый-mtl <~?
(<~) :: MonadState s m => ASetter s s a b -> m b -> m ()
очень удобный, но возможно некоторые проблемы при чтении кода (из-за путаницы с <-)

IC
04.04.2018
09:09:40
Точки разлепить попробуй, а то выглядит как ООП какое-то или, извините, Ruby

A64m
04.04.2018
09:10:13
так и задумано же
это "официальное" соглашение для lens (я ему не следую, правда)

Yuriy
04.04.2018
09:12:21
выглядит как (memory.at) (address._Just). Так и задумано?

A64m
04.04.2018
09:13:13
да, что-то они не додумались рекомендовать
memory.at(address)._Just

kana
04.04.2018
09:13:22
такие кейсы иногда заворачиваю в скобки, но все лучше пробелов, которые заметно ухудшают читаемость

Yuriy
04.04.2018
09:14:43

kana
04.04.2018
09:15:41
да достаточно, ваше предположение не верно
мало того, оно тут мало интересно, на вопрос мой не ответили

Даниил
04.04.2018
09:21:31
вот пришёл кана и сразу стало как-то токсично

IC
04.04.2018
09:21:42
Жалоба была по читаемость. Ответ про читаемость. Не надо бояться whitespace, whitespace is your friend.
Спроси любого фронтендера.

Google

A64m
04.04.2018
09:22:34

kana
04.04.2018
09:23:23

A64m
04.04.2018
09:26:15
вопрос был в интеренете, значит надо к и б е р в ц е п и т ь с я в к и б е р г о р л о собеседника

Aleksey
04.04.2018
09:27:29
И вообще бесточечный код в стиле init.drop 5.reverse выглядит погано, хоть некоторыми такое и практикуется

Hot
04.04.2018
09:28:55
Так а для чего нужен этот ваш Ivory? Почитал доки, но так и не понял сути.
Какой-то язык внутри хачкеля.
Который что?

Aleksey
04.04.2018
09:29:46
> Using GHC type-system extensions, enforces safe low-level programming, while maintaining expressiveness.
(из описания пакета)
> The Ivory Language is an eDSL for safe systems programming. You can think of Ivory as a safer C, embedded in Haskell.
Не знаю уж, что тут непонятно...

Hot
04.04.2018
09:30:46
Так это сишная кодогенерация?

Aleksey
04.04.2018
09:31:14
eDSL

A64m
04.04.2018
09:31:31

Hot
04.04.2018
09:31:47
eDSL
Для какой предметной области?

Aleksey
04.04.2018
09:31:52

Pineapple
04.04.2018
09:31:57
Когда это к рекомендациям авторов прислушивались?

Aleksey
04.04.2018
09:32:04

Hot
04.04.2018
09:32:21
Ладно, видимо, не поюзавши, не пойму.

Aleksey
04.04.2018
09:33:31
Английским языком же написано, "eDSL для безопасного системного программирования". Что тут непонятно то? :)

Google

Hot
04.04.2018
09:34:00
Короче, я немного затрахался писать одну и ту же сущность по три раза с разными аннотациями и ещё какими-то минорными отличиями, а мне говорят, что надо, потому что ко-ко-ко архитектура и ко-ко-ко энтерпрайз. Какие сторонние либы мне стоит глянуть, что бы написать тулзу на Haskell, которая будет просто генерить все три класса, каждый с нужными аннотациями?

Aleksey
04.04.2018
09:35:43
Сторонние либы, генерирующие произвольный язык отсутствуют.
В каждом конкретном случае генерация пишется отдельно

Hot
04.04.2018
09:36:21
Ну логично. Под кодогенерацию котлина я нашёл только тот кусок из серванта, который вчера кидал.

Aleksey
04.04.2018
09:36:23
Примеры можно посмотреть в либах с именами вида language-smth

Hot
04.04.2018
09:36:41
Ну я смотрел language-java
Нашёл там парсеры и вот это всё.
Ткните, пожалуйста, носом в кодогенерацию хотя бы той же Java.
http://hackage.haskell.org/package/language-java
(я правда такой тупой, я не пытаюсь троллить)

A64m
04.04.2018
09:38:24
а что Language.Java.Pretty что-то не то выдает?

Hot
04.04.2018
09:39:09
Ну насколько я понимаю, pretty-printing - это когда из хрен пойми как отформатированного кода делается красиво отформатированный.

A64m
04.04.2018
09:39:36
в данном случае из АСТ
т.е. вы, к примеру, генерите разные варианты явовского класса.
1) парсите явовский класс
2) обрабатываете его, с помощью дженериков, если нужно
3) претти-принтите полученные классы

Hot
04.04.2018
09:42:26
Так, тут уже интереснее, спасибо!

Alexander
04.04.2018
09:48:13
а в телеграмме можно делать как-то конфиги нотификаций, чтобы типа с 3-х до 7 по каким-то каналам только хайлайты показывало?
и outline нотификаций как в irc клиентах?

Hot
04.04.2018
09:49:12
Маловероятно, как мне кажется.

Anatolii
04.04.2018
09:53:50
так, нашел в коде у себя loop, теперь хочу его на fix переписать

Alexander
04.04.2018
09:55:18
let loop = ... in loop тоже можно оставлять

Anatolii
04.04.2018
09:55:56
у меня там именно рекурсивный вызов пока не выполнится условие

Pineapple
04.04.2018
10:21:30
Я смутно помню, что было какое-то развитие идей data types a la carte, или что-то похожее на них. Но не помню названия. Никто не помнит?