
Alexander
16.06.2017
13:00:48
на одной чаше весов болото, на другой developer time
причем developer time может быть хороший, т.к. если что-то исправляется то это надо анонсировать и ответить на вопросы n человек если не очевидно
btw Data.Bool.bool в prelude есть
где мой event-log в Debug?! =)

Google

Alexander
16.06.2017
13:04:41
кстати приятная прелюда
а не все есть

Denis
16.06.2017
13:04:55

Alexander
16.06.2017
13:05:02
выше ссылка

Denis
16.06.2017
13:06:06
какая именно?

Alexander
16.06.2017
13:06:39
unversum

Dmitry
16.06.2017
13:06:55
на одной чаше весов болото, на другой developer time
Ну, developer time есть. Но опять же, не каждый разработчик вбухивает часы на развитие. Возможно, в начале более активно, но потом некоторые best practices разрабатываются, всё устаканивается, нужно только следить за обновления в обычном prelude и фиксить баги, если вдруг что.
С другой стороны, обычный prelude тоже в некоторой степени можно считать болотом, потому что там очень редко происходят изменения и не такие значительные. Много людей постоянно жалуется, что функции частичные, неэффективный String тип, и прочее... Конечно, foundation может быть альтернативой, которая всё сделает лучше, но здесь. Но пока у нас довольно удобный инструмент. Реально облегчение от работы всё же есть.

Alexander
16.06.2017
13:07:23
/shrug
я не спорю

Tema
16.06.2017
13:07:45

Alexander
16.06.2017
13:07:53
и как я говорил, если в каком-то проекте своя прелюда, то я не доказываю им что они не правы
ну иногда тихо ругаюсь, если мне он как зависимость нужен, но это мелочи

Google

Alexander
16.06.2017
13:08:20
я вообще люблю тихо ругаться

Dmitry
16.06.2017
13:11:06
и как я говорил, если в каком-то проекте своя прелюда, то я не доказываю им что они не правы
@jagajaga по-моему до сих пор против этой прелюды, ему идея изначально не нравилась, и сейчас не нравится) Но разработчики победили в этой войне. Да и просто хочется иногда побыть дизайнером если не языка, то хотя бы его стандартной либы... Но это так, приятная отдушина :)
Изначально universum был форком protolude с минорными изменениями. Потом, конечно, сильно разошлись, но некоторые принципе остались в основе. Если есть пожелания, то всегда welcome :) Я не очень понял про event-log...

Alexander
16.06.2017
13:12:01
про event-log я слепой, все что мне нужно есть. Пожелания врятли будут, это ж её использовать надо, а я маловероятно, что буду
т.е. если почитаю код то что-нить предложу, но скорее всего моё мнение надо будет выкинуть пока не поиспользую

Dmitry
16.06.2017
13:21:04
Любое мнение ценное, может помочь)

Max
16.06.2017
13:23:38
https://cryptol.net/
на х-е

Alexey
16.06.2017
13:24:04
Други, а нормально что у меня простое приложение на серванте занимает 24мб? Собирал -O2.

Artyom
16.06.2017
13:24:35
и как я говорил, если в каком-то проекте своя прелюда, то я не доказываю им что они не правы
я могу за себя сказать, что мне все решения кажутся не особо хорошими
• юзать обычную Prelude с импортами всяких helper functions: слишком много импортов получается
• сделать Imports.hs: хорошо, что можно экспортировать ещё и какие-то локальные полезные-только-для-одного-проекта вещи, но плохо то, что если много проектов, приходится его таскать в каждый
• сделать прелюду: а) всё то, что @qnikst сказал выше, б) вообще изобретать велосипеды кажется каким-то не очень хорошим стилем
• пропихивать улучшения в стандартные либы: этот вариант мне нравится больше всех, но он одновременно и самый геморный


Alexander
16.06.2017
13:25:25
автоматически если только при install
у стека точно, у кабала не помню, вроде флагом регулируется

Artyom
16.06.2017
13:26:49
в общем, после strip+upx должно меньше стать
сейчас на Cardano проверю
оригинал: 87 MB
после strip: 58 MB
после upx -9: 12 MB
я где-то читал, что бинарники после upx даже быстрее загружаются (т.к. распаковка в памяти быстрее, чем чтение с диска), поэтому должен быть win-win

Alexander
16.06.2017
13:29:41
/me не стрипает, т.к. частенько надо лазать gdb
в тех проектах где надо
иначе все совсем печально

Alexey
16.06.2017
13:33:38
Спасибо. Получилось 3.5 мб после стрипа и упх. Не фонтан конечно, но лучше

Google

Alexander
16.06.2017
13:34:34
можно попробовать все -shared собирать
не будет статически слинкованного файла
будет куча .so
и будет как-то не интерпрайзно

Alexey
16.06.2017
13:35:33
нужен один бинарь

Artyom
16.06.2017
13:37:02
у меня есть вопрос по servant
есть адекватные причины, по которым в нём так сложно разобраться (webdev is inherently complex, etc) или просто это ужасная библиотека? я пытался помочь каким-то людям сделать что-то простое на servant (достать юзера из базы), убил на это часов пять и до сих пор не понимаю нормально, как servant работает внутри, хотявроденетупой

Dmitry
16.06.2017
13:39:10
есть презентация авторов
после неё норм. из сложного там тайплевел
который сложный
потому что он везде сложный
в каком языке тайплевел простой?
если испытываешь отвращение к тайплевелу, есть более простые веб фреймворки

Alexander
16.06.2017
13:40:33
вот по мне тайплевел там самое простое

Oleg
16.06.2017
13:40:38

Alexander
16.06.2017
13:40:44
ха-ха-ха
и ещё ха-ха
ну там многое конечно сильно приятнее

Dmitry
16.06.2017
13:41:33
а что в серванте сложное, если там тайплевел простой?
свою монаду впиливаешь методом копипасты, и в ней хоть на ушах стой
но объяснять как это делается я, пожалуй, пас

Google

Dmitry
16.06.2017
13:42:38
этот вот
:~>

Artyom
16.06.2017
13:44:06
ну, я-то привык к тому, что я вижу типы в библиотеке и знаю, что функции делают
а в серванте я вижу типы и знаю абсолютно ничего

Oleg
16.06.2017
13:45:11
по мне там немножко сложно композить хэндлеры, если их реально много. Это то, что я исправил в скаловской версии

Vasiliy
16.06.2017
13:46:13
мне вот эта статья неплохо помогла в понимании того, что там под капотом происходит http://www.well-typed.com/blog/2015/11/implementing-a-minimal-version-of-haskell-servant/

Dmitry
16.06.2017
13:47:45
@lightgreen ну это как-то неконкретно. т.е там реально взрывает мозги тайплевел уровень - описание API и генерация из этих описаний всякого
но когда сам запрос обрабатываешь, там же фактически IO
и делай в нем что что хочешь
ну еще неустранимый бойлерплейт печалит. но отчасти компенсируется всякими халявами, которые даёт сервант


Artyom
16.06.2017
14:08:58
но когда сам запрос обрабатываешь, там же фактически IO
когда запрос обрабатываешь, да
мне не запросы сложно обрабатывать, мне сложно кастомизировать сервантовскую логику обработки этих запросов
то есть, вот например я захотел сделать authentication не внутри запроса, а сразу для целого куска API. Начал читать http://haskell-servant.readthedocs.io/en/stable/tutorial/Authentication.html#generalized-authentication. Там на меня кинули Context, AuthHandler, AuthProtect и AuthServerData, и самое плохое то, что я вообще без понятия, что там вызывает что и какие вещи происходят под капотом серванта
потом (уже не помню почему, но не от хорошей жизни) мне пришлось лезть куда-то глубже и на меня свалились ещё DelayedIO, addAuthCheck, delayedFailFatal, HasLink, MkLink и друзья
я уверен, что были какие-то способы сделать всё правильно и по сервантовски, но проблема в том, что сам я не могу найти эти способы

blkmrkt
16.06.2017
14:49:43
Как впечатления от Idris?

Роман
16.06.2017
14:52:53


Dmitry
16.06.2017
15:17:29
Изучал Idris по этому прекрасному курсу после самостоятельного чтения документации:
http://compsciclub.ru/courses/idrisprogramming/2017-spring/
Намного лучше всё в голове прояснилось. Ту самую книжку не читал, пока в планах. Решал задания в рамках этого курса. Они у каждого в закрытом репозитории. К сожалению, пока нет курса на степике такого же как с Haskell, было бы очень классно. В качестве экзаменационного проекта реализовал IntMap на зависимых типах на Idris. К сожалению, автор idris-containers не захотел мёржить мой PR, потому что алгоритм слишкой сложный для него( Но лично мне разобраться было очень интересно.
Язык (именно язык, а не компилятор) оставил очень приятное ощущение. Наверное, мне нравится даже больше, чем Haskell во многих местах (часть из которых отмечена в выложенном ранее блог-посте). Разумеется, использование зависимых типов и всех этих доказательств может быть утомительным, потому что нужно ещё больше специфицировать в типах, нужно больше тратить на доказательство компилятору, больше думать об архитектуре. Но лично я люблю выжимать больше гарантий из компилятора) И для написаного разного кода пока ещё хватало ума...
Наверное, больше всего в языке нравится ортогональность. Как Haskell является очень ортогональным языком, в котором фичи дружат друг с другом, так в Idris этого ещё больше, потому что из-за зависимых типов очень много конструкций уходит, всё дружит друг с другом, фичи более органично сочетаются. Это приятней по ощущениям.
Касательно компилятора... Ну, он не очень :D Иногда бывают баги. Например, сравнивать версию 1.0 у языка Kotin и Idris по тому, насколько корректно работает, нельзя. Иногда проблемы с парсингом, иногда сообщения об ошибках бесплолезные и странные, компилятор может зависнуть, тоталити чекер до сих пор не всегда работает, скорость компиляции и выполнения оставляет желать лучшего. Конечно, для истинных (извращенцев) ценителей это не помеха. Всё-таки, язык молодой, и эти проблемы преодолеваемы. Особенно если больше людей будет им интересоваться. С коммьюнити вообще беда... Если есть какие-то проблемы -- гугл тебе не помощник =\ Приходится разбираться самому почти всегда (это следствие предыдущего пункта). Что уже говорить про тулинг...
В общем, язык очень сыроватый, но приятный. Я бы хотел использовать его чаще. Но тут и Haskell использовать в продакшене бывает больновато, что уже говорить про Idris...


Евгений
16.06.2017
15:21:39
А где у него пакетная мусорка сейчас?

Dmitry
16.06.2017
15:26:55
В главном репозитории есть список библиотек:
https://github.com/idris-lang/Idris-dev/wiki/Libraries

Евгений
16.06.2017
15:27:34
Ну такое :(

Dmitry
16.06.2017
15:28:23
Согласен(

Vasiliy
16.06.2017
15:32:34
меня больше всего напрягло отсутствие вывода типов, к которому сильно привык
у всех определений верхнего уровня должны быть указаны типы

Евгений
16.06.2017
15:35:23

Google

Евгений
16.06.2017
15:35:56
http://www.zelenjava-pikapolonica.si/slike/Zelenjava/redkvica.jpg

Vasiliy
16.06.2017
15:36:16
в конечном коде - полностью согласен
но во время разработки я наоборот не пишу типы, чтоб проще было маневрировать, так сказать

Евгений
16.06.2017
15:38:09
> Secure web framework
> last commit Feb 3, 2014
?

Quet
16.06.2017
15:40:49
просто сразу написали так что больше и добавить-то нечего
и без ошибок само собой

Евгений
16.06.2017
15:42:39
Да оно небось не компилится

Evgeniy
16.06.2017
19:17:30
Things that Idris improves things over Haskell (Score: 100+)
Link: http://j.mp/2rDtSUw

Vasiliy
16.06.2017
19:18:23
уже третий раз здесь эта ссылка

Alexander
16.06.2017
19:21:51
давайте ради интереса обсудим?
мне понравились пункты про Num и рекорды
и 50/50 do
и жестокий минус в сторону overloading

Vasiliy
16.06.2017
19:22:52
а почему минус?
мне наоборот понравилось

Alexander
16.06.2017
19:24:05
у меня в итоге в репле да и так ничерта не работает пока код не абсолютно верный

Vasiliy
16.06.2017
19:24:16
вот эти вот T.pack и BS.pack, LBS.pack ненужны

Alexander
16.06.2017
19:24:20
и нужно аннотации типов везде добавлять