Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 февраля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
21 Кб, 1024x768
Функциональное программирование #3 Perekoter !JLHGEtxGTk #894904 В конец треда | Веб
PEREKOT Perekoter !JLHGEtxGTk #2 #894907
Прошлый тред >>875637 (OP)
#3 #894909
Тред добавлен в Перекотер - http://perekoter.tk/

Теперь он будет перекатываться автоматически!
#4 #894914
>>894904 (OP)
А где ссылки на Scala-ресурсы?
894924
#5 #894924
>>894914
В шапке не было. Есть в скалатреде >>767431 (OP)
#6 #895008
Ребяткти, архивач первого треда добавьте. Там более полная шапка в конце треда.
895858
Видео по ФП на JS #7 #895671
Хочется приобщиться к теории ФП без хаскеля на примере JS

Наверняка вы натыкались на ютубе на видео типа такого
https://youtu.be/yXJtrxVZmT4
https://youtu.be/e-5obm1G_FY (это совсем вводная для нуфань)
https://youtu.be/HvMemAgOw6I

Поделитесь теме что вам самим понравились.
#8 #895853
>>895671
Чувак, возьми все-таки хаскель. Как разберешься - можешь и к жс вернуться.
895885
#9 #895858
>>895008
нахуй он нужон, там ни одной виновой пасты, ни одного интересного срача, ни одного эпичного отсоса, ни одной интересной личности вообще нихуя
#10 #895885
>>895671
Вот еще https://youtu.be/lmcMcksoqkI (немного скучный, но на русском)
+Бамб

>>895853
Спасибо за совет, но попробуй в следущий раз ответить по теме.
896111
#11 #896022
>>895671

>ФП без хаскеля


маня-мечты
255 Кб, 1920x1080
#12 #896040
>>894904 (OP)
привет аноны, сижу изучаю haskell и тут вот оно самое то - что на скрине, что это и как это исправить ?
896043
#13 #896043
>>896040
Ну чё, функции май_факториал нет, где она, если она в мейне, то почему она там?
896047896048
#14 #896047
>>896043
сори сейчас перескриню
896049
211 Кб, 1920x1080
#15 #896048
>>896043
вот перескринил
#16 #896049
#17 #896054
>>896048
Попробуй выучить английский перед программированием.
896056
#18 #896055
>>896048
Для функции func нет реализации.
Что должна была делать последняя строка?
Да и вообще в ньюфаг тред с такими вопросами.
896056
#19 #896056
>>896054
>>896055
без вас уже разобрался, функцию последнюю не определил, но все равно большое спасибо
#20 #896059
>>896048

>Telemetry Consent


Чтоооу?!
896065
#21 #896065
>>896059
Ну анальный зонд, что не ясно.
896069
#22 #896069
>>896065
И почему этим продолжают пользоваться?
896071
34 Кб, 512x512
#23 #896071
#24 #896111
>>895671
Выступление бабы - говно, и даже относительная няшность не спасает.
>>895885
И вот это тоже говно.

Вообще, немного не понимаю вот этих жабаскриптеров. То один плачет, что андерскор не даёт ему делать композиции функций. То другой заявляет, что ему нужна надёжность, и как завезут ТСО в новый жабаскрипт, так он перестанет пользоваться циклами вообще и уйдёт целиком в рекурсию. И тут даже насрать на этот пуризм - ну поехал человек на старости лет, с кем не бывает - тут возникает другой, гораздо более интересный вопрос: а жабаскрипт-то тебе нахрена, в таком случае? Если тебе важна чистота, надёжность, конпозиции-мандадки, то зачем ты жрёшь это гонво, вместо перехода на более другой язык программирования? Есть эльмы, пюрескрипты, прочее говно, так же в жабаскрипт могут компиляться оригинальные хаскиль с окамлем и фшарпом - бери и пользуйся. Нет, я сделаю себе островок в море говна и буду плакаться, как снаружи воняет.
#25 #896324
http://ideone.com/0eM3DX
расово верный арканоид на яп
896326
#26 #896326
>>896324
Нечитабельный говнокод
896329
97 Кб, 1151x812
#27 #896329
>>896326
я забыл как собирать эту хуйню
помоги, няша?
896331
#28 #896331
>>896329
cabal install GLUT
896333
68 Кб, 1009x891
#29 #896333
>>896331
я походу сносил платформу, поэтому не собрается
ну и хуй с ним
896337
#30 #896337
>>896333
freeglut поставь или что там под шиндошс есть. Ну и cabal update сделай, а то чо как ретроград
#31 #896374
Прошел таки mooc по окамлю.
В целом понравилось.
Было бы время взялся бы еще за хаскель чтобы сравнить.
Увы, пока что есть время только питонить и жсить.
Есть кстати вариант попытаться взвалить на себя фронт и пролоббировать что-то.
Предложения? Знаю про эльм, clojurescript и ангуляр.
#32 #896410
>>896374

>Прошел таки mooc по окамлю.


Что выбрал в качестве финального задания?
896419
#33 #896419
>>896410
Klotski.
896421
#34 #896421
>>896419
Норм. Тоже его делал. Год назад.
897840
#35 #896628
>>896374
js_of_ocaml
#36 #896683
>>896374
Что за мук такой?
896906
#38 #896974
Зачем люди пишут на других языках, если есть Хаскель? Почему бы не переписать весь серверный, браузерный, десктопный и мобильный код на него? Ну разве что си оставить для железа.
896977897290
#39 #896977
>>896974
Тормозит, сука. А ещё судя по комментариям использующих его в проде — как вчеращние гости в девзене — течёт.
897269
#40 #897063
>>896906
Спасибо.
51 Кб, 572x546
169 Кб, 1136x648
#41 #897177
Посоны, помогите тупому виндузятнику накатить wxHaskell.
Взял отсюда:
https://wiki.haskell.org/WxHaskell/Windows
https://sourceforge.net/projects/wxhaskell/files/wxInstall/
897180897220
36 Кб, 400x366
121 Кб, 576x739
#42 #897180
>>897177
Вот лог попытки установить, например, process.
Да, нагуглить где брать эти хидеры у меня не получается.
897215897225898010
#43 #897215
>>897180
Stack попробуй
899102
sage #44 #897220
>>897177
Виртуалбокс + шаришь папку.
899102
#45 #897225
>>897180
Во всякой эмулирующей посикс виндопараше - мсус, цугвин там.
899102
#46 #897269
>>896977

>течёт.


Ты имеешь в виду space или mem leaks?
897275897279
#47 #897275
>>897269
А в чём разница? На офф. вики хачкеля об этом ничего нет, кроме того что это утечка памяти, лол
897279897295
#48 #897279
>>897269
>>897275

>хачкиль настолько безопасен в своей иммутабельности, чистоте и типобезопасности, что у него даже виды утечек есть разные


в голос блядь
#49 #897290
>>896974
Зачем людям хаскель, когда есть лисп?
897293
#50 #897293
>>897290
Медленнее чем хаскелль, менее выразительный и скобочек дохуя, это как минимум.
897299
#51 #897295
>>897275
Иногда space leak ошибочно путают с другой проблемой, называемой memory leak (англ. «утечка памяти»), однако это вовсе не одно и то же. Утечка памяти — это ошибка, характерная для языков с ручным управлением памятью, например, C. Если мы выделим память в куче (англ. heap), а затем потеряем указатель, связывающий нас с этой памятью — всё, выделенная память утекла, она потеряна для нас навеки. Но в случае space leak мы не теряем память: когда весь этот «хвост» из сложений в конце концов вычислится, память, занимаемая миллионами thunk-ов, освободится. Мы не теряем память, мы просто используем её слишком много.
897303
#52 #897299
>>897293

>Медленнее чем хаскелль


В прошлом треде замеряли: лисп опережал хаскель в 10 раз и незначительно отставал от крестов.

>менее выразительный


Если только на синтетических задачах, реальный код на хаскеле по вырвиглазности зачастую даёт фору даже крестам.
#53 #897300
>>897299
толсто
897305897307
#54 #897303
>>897295
А теперь расскажи как это дело коррелирует в одном флаконе с ленивостью? Как детерминировать когда это дело будет вычищено? Это та же самая утечка получается, только которая может когда-то при каком-то магическом стечении обстоятельств рассосаться, лол.

Писать в таком тоне, что GC-языки полностью защищены от утечек — это мягко говоря лукавить.
#55 #897305
>>897300
Что толсто? Ты просто подгорел и тебе возразить нечего?
#56 #897307
>>897300
Толсто только про перформанс (хотя учитывая что есть лиспы, которые могут компилироваться и в сишку — не очень), а код на хаскеле выглядит как та ещё залупа из брейнфаковскиз операторов если ты не только что его написал.
897316
#57 #897316
>>897307

>Толсто только про перформанс


Вообще-то, нихуя. Большинство реализаций (sbcl, ccl, allegrocl, lispworks) генерируют достаточно эффективный машинный код.

>которые могут компилироваться и в сишку


А вот они обычно медленнее.
#58 #897319
>>897299
Внезапно вынужден согласится, ибо высказывание истинно. Но хасекель все равно круче!
#59 #897378
>>897299

>лисп опережал хаскель в 10 раз и незначительно отставал от крестов.


В прошлом треде с лиспом сравнивали одно из множества вариантов решения на Хаскеле, причем не самое быстрое.

>код на хаскеле по вырвиглазности зачастую даёт фору даже крестам.


Синтаксис Хаскеля более гибкий. Можешь писать лаконичный выразительный код. А можешь вырвиглазное гавно, вот только в этом случае вины Хаскеля здесь нет.
897398
#60 #897398
>>897378

>В прошлом треде с лиспом сравнивали одно из множества вариантов решения на Хаскеле


Два сравнивали: самое быстрое и последнее запощенное.

>Синтаксис Хаскеля более гибкий.


У лиспа он вообще программируемый.

>Можешь писать лаконичный выразительный код.


А можешь - эффективный, насколько это возможно в хаскеле.
897472897478897583
#61 #897472
>>897398
В 2077 году уже у всех нормальных языков синтаксисы программируемые.
Только вот лисп стоит особняком — вместо решения задачи на языке, ты сначала пишешь свой язык. Это сразу к вопросу о читабельности.
897519
#62 #897473
Но вообще вы не подумайте что я из этих — хачкиль, он для развлечения, да.
#63 #897478
>>897398

>У лиспа он вообще программируемый.


И в чем заключается его программируемость? В том, что можно определить функцию и использовать ее как оператор (f hui)?
897519
#64 #897519
>>897472

>вместо решения задачи на языке, ты сначала пишешь свой язык


Только делают это не потому, что иначе нельзя, а потому что это не сложнее, чем определить свою монадку.
http://swizard.info/articles/solitaire/article.html

>Это сразу к вопросу о читабельности.


Нет, это не туда.
>>897478

>И в чем заключается его программируемость?


В программируемости парсера, например. Можешь хоть совершенно иной синтаксис запилить
https://github.com/y2q-actionman/with-c-syntax
Ну или более практичные примеры использования https://github.com/m2ym/cl-annot - аннотации как в питоне
https://github.com/fukamachi/re21 - конструкция #/regexp/
897524
#65 #897523
>>894904 (OP)

> Можешь хоть совершенно иной синтаксис запилить


почему тогда не запилили синтаксис без скобочек и с нормальными операторами?
897524897525908821
#66 #897524
#67 #897525
>>897523
Потому что нет надобности, очевидно.
897533
#68 #897533
>>897525
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
#69 #897538
>>897299

>незначительно отставал от крестов.


http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=sbcl&lang2=gpp

>всего-то до 10 раз по времени и до 60 раз оп памяти)


Ахуительные истории.
А вообще — непонятно как (и нахуя?) лисп сравнивать с фп языками, он всё же про метапрограммирование, а не про то, что ныне несёт в себе фп.
А вообще 2 — из функциональных языков самым быстрым будет окамл (именно потому, что позволяет писать императивный низкоуровенный код).
897560
F# #70 #897550
Есть тут опытные в F#?

Я было ринулся его изучать (после 10 лет C#) как Better-C#, но
- натолкнулся на куцый тулинг (хотя его даже core clr вроде поддерживает, но все очень сыро и неудобно)
- глобальный вывод типов (это большой минус для понимания программы и скорости компиляции)
- в той же JetBrains (авторы решарпера) не верят в F# https://www.reddit.com/r/fsharp/comments/4fr9bc/jetbrains_employee_on_why_project_rider_likely/
- все примеры которые я находил юзают F# для математики/обработки данных, а мне нужно тупо улучшить мое интерпрайзное существование
- гребанная дополнительная утилитная библиотека F# на 1.5MB (для Xamarin это критично)

Может кто нибудь рассказать успешные стори про F#, а то пока все очень грустно.
897554897561898011
#71 #897554
>>897550

> глобальный вывод типов (это большой минус для понимания программы и скорости компиляции)


вывод типов там говно, могли и не добавлять его

> решарпер


есть FSharpPowerTools плагин для vs
897568
#72 #897560
>>897538

>benchmarksgame


Их только ленивый не обоссал. К тому же, немалая часть решений на лиспе там не слишком эффективная, один товарищ пытался изменить ситуацию, но когда жава-макаки стали делать то же, что и он, но не макросами, а вручную, решения поудаляли, а товарищ расстроился и забил.
>>897538

>окамл


>самым быстрым


Он же даже в unboxed типы не умеет. То, во что может даже динамически типизированный лисп.

>из функциональных языков


Если уж лисп не про фп, то окамл тем более: он всё же про модули

>а не про то, что ныне несёт в себе фп

897565
#73 #897561
>>897550

>натолкнулся на куцый тулинг


Что ты под этим понимаешь? ИДЕ как в шарпе? Ну она есть только у шарпа.

> глобальный вывод типов (это большой минус для понимания программы и скорости компиляции)


А еще это глобальный плюс при написании. Энивей он там нихуя не глобальный (хотя ты наверно и не знаешь что такое "глобальный").

>в той же JetBrains (авторы решарпера) не верят в F#


И?

>все примеры которые я находил юзают F# для математики/обработки данных, а мне нужно тупо улучшить мое интерпрайзное существование


Если ты видишь новый язык, который конкретно фичастее и удобнее старого, но не видишь нахуя тебе оно надо — просто дропай нахуй, ты закостенел и даже не пытаешься понять что-то новое. Ты — энтерпрайз макакен, который и на нем напишет абстрактнуюфабрикусинглтонов Хотя учитывая, что он все же в отличие даже от того же окамла почти полностью ОО, не страшно, лол. Единственное что тебе этот новый язык даст — более краткий синтаксис.

>гребанная дополнительная утилитная библиотека F# на 1.5MB (для Xamarin это критично)


Тут в скала-треде спрашивают как под андроид писать и никого 50 мб рантайма не ебет, а тут такое.

Алсо, в леночкатреде проскакивало — https://blogs.msdn.microsoft.com/dotnet/2016/12/13/project-springfield-a-cloud-service-built-entirely-in-f/
Про околоэнтерпрайзные темы. Кстати, забавно там класс назван один

>Hyak.Common.CloudException


>Hyak


Особенно учитывая, что как минимут 3 разраба там русскоговорящие.
897580898012
#74 #897565
>>897560
Да Исаак регулярно отписывается на реддите и прочих местах — и почти все наезды на него выглядят так "я не смог повторить фишку из языкнейм по правилам, меня ткнули носом и послали нахуй, идите сами нахуй".
Но знаешь, на плюсах такой говнокод пишут всегда когда до них опускаются, а вот на лиспе ты такое говнище ради пары секунд ты ваять точно не станешь. Так что ирл ситуация будет еще печальнее.

>Он же даже в unboxed типы не умеет. То, во что может даже динамически типизированный лисп.


Самый важный показатель производительности конечно. Там же есть сводная статистика по всем языкам.
И там лисп со своими голыми типами проигрывает. При том, что качество реализаций на окамле тоже прекрасное, в первом же открытом примере там строка конкатенируется 7 раз вместо одного (дальше просто закрыл, лол).

>Если уж лисп не про фп, то окамл тем более: он всё же про модули


Он про типы. Не про то, как сделать супер-йобу на макросах.
897589
#75 #897568
>>897554

>есть FSharpPowerTools плагин для vs


Спасибо, но я на маке пишу под мобилки.

В принципе, за пределами Windows тоже на так все плохо:
- Xamarin/VSforMac поддерживает создание мобильных проектов на F#
- На CoreCLR и Visual Studio Code уже можно создавать консольные приложения на F#

Еще бы увидеть как кто-то это использует в продакшене.
sage #76 #897580
>>897561

> жир и маняпроекции


просто иди нахуй
897587
#77 #897583
>>897398

>Два сравнивали: самое быстрое и последнее запощенное.


Нет. Самый быстрый на мутабельном IOArray. Его не сравнивали. Кроме того, можно еще unsafe операции чтения\записи использовать.
897590
#79 #897587
>>897580

>пол часа думал как ответить


Нормас пригорел. Только вот я серьезно — кучу таких видел в том же мире скалы, которая заканчивается на яве с выводом типов и монадкой мэйби.

А вообще, печально что ты настолько пригорел и не смог прочитать ничего кроме тех 2 строк.
#80 #897589
>>897565

>и почти все наезды на него выглядят так


И к чему ты это?

>а вот на лиспе ты такое говнище ради пары секунд ты ваять точно не станешь


Это и не требуется. См. прошлый тред для примера. В крайнем случае просто явно объявляются типы в узких местах.

>в первом же открытом примере там строка конкатенируется 7 раз вместо одного (дальше просто закрыл, лол).


>неэффективность в одном случайном месте, которая, вполне возможно, и погоды-то не делает => качество реализаций на окамле тоже прекрасное


Замечательная логика.
Но а если оставить далекоидущие догадки и сравнить только нормально реализованные задачи, то можно заметить, что скорость исполнения примерно одинаковая.
897618
#81 #897590
>>897583
Сравнивали. Это он за 30сек и выполняется. Другой вариант - 60.
897599
#82 #897599
>>897590
Попутал. Скриншот с замером на 30с версии на Data.Array, IOArray не выкладывался, потому что выполняется те же 30с.
897620
#83 #897618
>>897589

>Замечательная логика.


Специально ради тебя пролистал еще несколько — пока в бенчмарке гонятся за миллисекундами — все вымазано в обработке ошибок, домазывают рекурсией, боксинг ивейдится вообще в одной реализации из всех, сплошные цепочки из мапов и фолдов — для бенчмарка это точно не самый лучший стиль написания, больше похоже на реальный код, лол.

>Но а если оставить далекоидущие догадки и сравнить только нормально реализованные задачи, то можно заметить, что скорость исполнения примерно одинаковая.


Смотря что есть "нормальная реализация". Для бенчмарка, который меряет скорость прохода по ручносозданному бинарному дереву, или которая будет писаться ирл?
В первом случае отсосут только всякие хаскели, в других — вообще все компилируемые языки не особо друг от друга отличаться будут (но мы-то как истинные долбоебы спорим что же быстрее на пару секунд, так что не котируется).

>И к чему ты это?


Про критику бг. Какие бы не были косяки в этих реализациях — они все проходят ревью по одним правилам -> все в одинаковых условиях (кроме си, лол).
897652
#84 #897620
>>897599
>>897599

>IOArray не выкладывался, потому что выполняется те же 30с.


Кстати выкладывался. Я версию Data.Array переделывал на UArray и сравнивал через RTS. И даже в этом случае, например 24 тест на IOArray на 300 мс быстрее выполнялся, чем версия на UArray.
Вот, оба варианта я сравнивал https://cpy.pt/AkJRN4Ma
#85 #897652
>>897618

>сплошные цепочки из мапов и фолдов


Специально для тебя, пиздобола, выдрал все сточки кода, в которых встречается map или fold https://bpaste.net/show/d7084a2b8fc0
Мало того, что до "сплошных цепочек" это, мягко говоря, не дотягивает, так ещё и используются они в незначительных местах

>В первом случае отсосут только всякие хаскели


В других - тоже они.

>быстрее на пару секунд


В 10 раз - это не пару секунд, это реально заметная на глаз разница.
897671
#86 #897671
>>897652
Ты туповатый или просто прикидываешься? (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
897673
#87 #897673
>>897671
Видимо, туповатый, раз до сих пор с тобой общаюсь.
897674
#88 #897674
>>897673
А мне кажется просто скобочкой приёбнутый.
897678
#89 #897678
>>897674
Грубо
897684
#90 #897684
>>897678
Не мы такие, трудное детство с бейсиком такое.
#91 #897840
>>896421
Тебе statement of accomplishment выслали?
Мне пока не пришло чот.
дедлайн на работе проебал чтобы вовремя успеть
897899
#92 #897899
>>897840
Его не сразу выдают.
Жди. Возможно, пару недель.
#93 #897926
>>894904 (OP)
Мужики, нахуй он нужен? Объясните
897931
#94 #897931
>>897926
Кто?
126 Кб, 825x503
#95 #897932
>>896374
Reason+rehydrate же!
898112
#96 #898010
>>897180
хЭдеры, блять
#97 #898011
>>897550
читни говнеца https://sergeytihon.wordpress.com/2016/10/23/f-advent-calendar-in-english-2016/
там ребятки постят в своих бложиках разное, проскакивают и кулстори :)
#98 #898012
>>897561

>Ты — энтерпрайз макакен, который и на нем напишет абстрактнуюфабрикусинглтонов


орнул
#99 #898112
>>897932
Что за тема?
898347
#100 #898347
>>898112
Дефолтная тема атома.
#101 #898391
>>894904 (OP)
Haskell-trainsient действительно такой охуенный, как пишет автор? В чем подвох?
#102 #898524
По кой ляд вообще ваш Хаскель нужен?
898769
sage #103 #898769
>>898524
Писать чтоб душа радовалась.
172 Кб, 724x1297
#104 #898839
Есть хоть один кложеёб? Или тут только один мамкины выёбщики-хаскелисты?
#105 #898844
>>898839
Тут только десять постов назад скобкоёб спорил о чем-то.
#106 #898856
>>898839
Скобочные безтиповые языки не нужны.
898907
#107 #898858
#108 #898863
>>898839
Есть и не один.
898864
#109 #898864
>>898863
Есть и не нужен.
898868
#110 #898868
>>898864
Нет ты.
898871
#111 #898871
#112 #898872
>>898839
Есть. Ток на фронте
#113 #898907
>>898856
Тащемта, в коммон лиспе даже вывод типов есть.
17 Кб, 276x300
#114 #899102
>>897220>>897215>>897225
В итоге просто накатил threepenny-gui.
Правда я в вебе полный ноль, но тут хотя бы понятно в какую сторону гуглить инфу.
А чтобы разбираться в этих ваших биндингах у меня не хватает базовых знаний и непонятно как их получать.
#115 #900014
Анон, есть какие-то пруфиты от изучения функциональных ЯП? Вакансий же всё равно нет.
900070
#116 #900070
>>900014
На скале вакансии есть.
Плюс функциональщина активно лезет и в мейнстрим языки, все эти лямбды-хуямбды, стримы-LINQ.

Немного поучив хаскелль я вот лично стал лучше все это понимать.
900080
#117 #900080
>>900070
Читал, что на Скале в проде пишут как на Жаве, т.е. с паттернами и полным ООП.
А если лямбды и прочее, что лезет и так понятно, стоит время вообще тратить? Просто отдачи не вижу никакой, кажется, лучше уж на си время потратить и потом врубаться в работу с памятью.
900082900117900150
#118 #900082
>>900080

> на си время потратить


"время потратить", кек.
Для си дней трёх достаточно.
#119 #900117
>>900080

>Читал, что на Скале в проде пишут как на Жаве, т.е. с паттернами и полным ООП


wrong
На скале пишут с линзами, монадами и тапклассами.
900118
#120 #900118
>>900117
тайпклассами
#121 #900150
>>900080
Да что то фигня, что это фигня. Если рассматривать это просто как дополнительный навык и изучение just for fun, то бери то что больше нравится.
#122 #900976
Почему в Haskell до сих пор нет зависимых типов? Даже в C++ они есть.
900991
#123 #900991
>>900976
Ну давай, покажи их на плюсах чтоле.
901003
#124 #900998
Парни расажите как делать промайсы в хескеле ?
#125 #901003
901014
#126 #901014
>>901003
ахахахах
х
а
х
а
х

Спасибо, такого не надо. В GHC 8 есть таки, если уж совсем больной - идрис есть.
901024
59 Кб, 724x489
#127 #901024
>>901014

>идрис


Зачем изобретать велосипед, когда есть цепепе http://ideone.com/AGo9yr
901026
#128 #901026
>>901024
Двачую.
Правда человечество пока не решило вопрос, как избежать глобального потепления, если все начнут компилировать такой код на плюсах.
901028
#129 #901028
>>901026
Ой-вей, я вас умоляю... Компилятор Idris тормозит всяко больше плюсов, т.к. писан на Haskell. Который, как мы выяснили в предыдущем треде, тормознее плюсов в ~9 раз.
Компиляторы плюсов же написаны на C или плюсах и работают быстро.
901029901031
#130 #901029
>>901028

>тормознее плюсов в ~9 раз.


Забыл написать "в лучшем случае".
#131 #901031
>>901028
Тут дело не в языке, нюфаже.
901033
#132 #901033
>>901031
А в чём же, олдфаже?
901035
#133 #901035
>>901033
В том что у плюсов в компиляторе чудовище из кучи легаси вместо архитектуры и то же самое с синтаксисом.
901037
#134 #901037
>>901035

>в компиляторе чудовище из кучи легаси вместо архитектуры


Эксперта по компиляторам видно за версту.
Какая там может быть нетривиальная архитектура? Рекурсивный спуск для парсинга, потом куча проверок и преобразований AST, пока не удастся упростить его до LLVM IR.

> то же самое с синтаксисом


Т.е. все эти Idris'ы это тупо сахарок, Ч,Т,Д.
901039901052901595
#135 #901039
>>901037
Зато эксперта по лабаязык1 видно прямо по посту. Загугли как нибудь на досуге как компилятор хаскеля работает, или хотя бы почему кресты так медленно компилятся при такой низкоуровенности синтаксиса спойлер: их код не нужно гонять через десяток промежуточных представлений, много нового узнаешь.
901040
#136 #901040
>>901039

> Загугли как нибудь на досуге как компилятор хаскеля работает


Какой именно?
Ты мне хочешь рассказать, что для GHC Haskell это сахарок над Core language? Спасибо, без сопливых знаю.
901042
#137 #901042
>>901040
Оно по комментариям видно. Пока эксперт по парсингу яп у которого типы глобально выводятся и чекаются сами при парсинге а ещё компилятор изи программируется на минет с утра спрошу — почему же высший разум пишет не на машинных кодах, если это всё это просто сахарок? Почему рассказывает про тормоза в хаскеле, когда у него в языке каждый хедер при компиляции парсится по 30 раз и до сих пор не могут сделать нормальную инкрементальную компиляцию?
901047
#138 #901047
>>901042

> эксперт по парсингу яп у которого типы глобально выводятся и чекаются сами при парсинге


Я такой хуйни не писал, у тебя бред.

> почему же высший разум пишет не на машинных кодах, если это всё это просто сахарок


Дебилушко, сахарок он синтаксический. А между машкодами и зависимыми типами разница в семантике.
Но дебилушко не отличает синтаксис от семантики поэтому он приплёл сюда херню про "почему в машкодах не пишешь!11".

> Почему рассказывает про тормоза в хаскеле


Потому что могу. Потому что сравнивал производительность на достаточно нетривиальном коде, не на факториалах от фибоначчи.

> каждый хедер при компиляции парсится по 30 раз


Что-то хаскелю это не сильно помогает. 30 раз парсились хедеры или 50 — а код на Haskell всё так же работаеь медленнее минимум на порядок.

Короче, у тебя есть что возразить на то, что в C++ можно вводить типы, зависящие от значений? Или превращать значения в типы?
901049901051
#139 #901049
>>901047

>Что-то хаскелю это не сильно помогает. 30 раз парсились хедеры или 50 — а код на Haskell всё так же работаеь медленнее минимум на порядок.


Быстро сманяврировал. Мне похуй как быстротработает хаскель — он для развлечения мозга, а не ирл задач (тем более связанных с перформансом), и мы обсуждали перформанс компилятора. При одинаковой абстракции в коде (например твои высеры выше вс аналоги) будут собираться быстрее, хоть обосрись со своим отставанием в перформансе языка.

Но пидорасы вроде тебя лепящие на плюсах подобную дичь как выше — это хуже червей пидоров.
901054
#140 #901051
>>901047

>Я такой хуйни не писал, у тебя бред.


У тебя компиляция заканчивается на рекурсивном спуске (и аналогов ему для тебя видимо не существует), сам же писал.
901052
#141 #901052
>>901051

>У тебя компиляция заканчивается на рекурсивном спуске, ... сам же писал.


Надо же, так нагло пиздеть, когда можно отмотать полдюжины сообщений и увидеть что это не так.
>>901037

> Рекурсивный спуск для парсинга, потом куча проверок и преобразований AST, пока не удастся упростить его до LLVM IR.



> и аналогов ему для тебя видимо не существует


Для быстрого парсинга говносинтаксиса плюсов у вручную написанного рекурсивного парсера конкурентов нет. (не знаю, что ты там понимаешь под "аналогами")
901057
#142 #901054
>>901049

>Но пидорасы вроде тебя лепящие на плюсах подобную дичь как выше — это хуже червей пидоров.


Пубертатный вьюноша-максималист выучил мемы. Он теперь не батхёрт и может дуть щёки в интернетах.

Кроме "подобной дичи" я ещё препроцессорные макросы люблю поэксплуатировать. Как тебе такое?
901057
#143 #901057
>>901052

>пиздеть


>привёл свою доскональную цитату, которая была процитирована


/0
>>901054
Ну ирл я бы с тобой за руку здороваться не стал рисковать — заразно.
#144 #901595
>>901037
У меня есть упоротый друг, который любые абстракции называет синтаксическим сахаром. Где-то прочитал про тюринг-полноту наверное, интеллектуально покалечился.
901597901650
#145 #901597
>>901595
Скоро начитается умных книжек и перейдет на гибридный термин — все языки станут СЕМАНТИЧЕСКИМ САХАРОМ.

ваганыч.жпг
#146 #901650
>>901595
Всё правильно говорит, всё есть текст.
#147 #906326
Кто знает, в хаскеле есть какие-нибудь библиотеки для ввода с графического планшета?
909386
#148 #908649
>>894904 (OP)
Есть кейс: приложение состоит из двух модулей
1) core - функции для работы с доменной логикой и весь общий код
2) platform - платформозависимые функции, которые нельзя реализовать в core
при это модуль platform зависит от core

Как из core дергать платформозависимые функции?
В ООП я бы заюзал интерфейсы + DependecyInejcion, а как это сделать c функциональном стиле?

Интересует теория, без привязки к конкретному языку.
908672908678
#149 #908667
Когда я джавист и пытаюсь в изучение емакса, лиспа и ФП
https://youtu.be/zmX7K8noikE
#150 #908672
>>908649
Что такое "доменная логика"?

мимо-логик
908676
#151 #908676
>>908672

>мимо-логик


Не доебывайся к словам, лучше помоги если такой умный.

Просто функции без прямых зависимостей на платформо-специфичные апи.
Там же хранятся IO функции, которые дергают кросплатформенное IO (JVM, но это не суть).
#152 #908678
>>908649
А просто вызвать нужную функцию ООП-головнго-мозга мешает?
908683
#153 #908683
>>908678

>А просто вызвать нужную функцию


Так нельзя же, core модуль не знает про platform.

Я писал зависимость при сборке platfrom -> core, те platfrom видит public функции core.
В platfrom так же находится точка входа в программу.

Да и вообще там может быть куча platform-linux, platform-win, platform-android и тд
908689
#154 #908689
>>908683
Ну если DI и интерфейсы нельзя, то тайпклассы
908706
#155 #908706
>>908689

> Ну если DI и интерфейсы нельзя


Не то что бы нельзя, просто интересно как такие вещи решаются на одних функциях

> тайпклассы


OK идею я примерно уловил но к сожалению в моем языке нет тайп классов
908813
#156 #908813
>>908706

>в моем языке нет тайп классов


Сымитируй
908820
#157 #908820
>>908813

>Сымитируй



> В объектно-ориентированном программировании проблемы такого рода решаются посредством динамической диспетчеризации



Да уже. Сделал интерфейс и передаю его в параметре.
В модуле platfrom инстанцирую конкретную реализацию интерфейса.

Не очень функционально, но пока сойдет.
#158 #908821
>>897523
пиздуй читать что такое AST, а потом подумай как представить аст в виде списков
Торчибальд Хмурый #159 #909088
Haskell vs Node.js:
https://gist.github.com/aemxdp/9ad751b9620d66a040df7bbe25b54187

Сегодня запустив хаскельный экзешник программа посыпалась потому что кое-где не было try-catch. Пофиксив быстренько в коде нужное место выяснилось, что хаскелиты опять пустили всё по пизде и network не компилируется на шинде даже через stack. Вместо того чтобы опять заниматься сисадминством я решил просто переписать на жс чтоб в дальшейшем такой хуйни не было. Код не совсем эквивалентный: в жсном варианте больше обработки ошибок, и он немного абстрактней, тк контекст апишных функций выражен классом для удобства. В хаскельном варианте, когда я его писал несколько месяцев назад, аналогичную стейт или ридер монадку хуярить было лень.. и так мозги поплавило, хотелось поскорей дописать.
909093909301
#160 #909093
>>909088
Лично я сам больше всего проигрываю от этого:

> (r ^? responseBody . key "collection" . nth 0 . key "track" . key "id" . _Integer) <|> (r ^? responseBody . key "collection" . nth 0 . key "playlist" . key "id" . _Integer)


> (res.collection[0].track || res.collection[0].playlist).id

#161 #909239
Посоветовали перекатиться к вам, в хаскель. Но я о нем почти ничего не слышал, как и ФП в принципе. Есть задача, выучить ЯП и к началу лета сделать первый проект, электронный журнал. Есть ли средства сделать это на хаскеле? Если ответ да, то анон, будь добр, дай список литературы и в какой порядке читать дабы осилить такую задачу. С меня тонны нефти, коль поможешь.
909240909244909396
#162 #909240
>>909239
Если тебе в /pr посоветовали, то забей, это тролли. Если тебе посоветовало руководство на работе/университете в шапке есть книги.

Почему тролли? Хаск. имеет репутацию сложного ЯП. из-за того, что он не похож на мейнстрим ЯП и в нём очень много абстрактных концепций. Более того, твои старания не будут вознаграждены, т.к. на нём нет работы
909243909396
#163 #909243
>>909240
Спасибо анон, я почему-то и думал что это Семёновы проделки. Добра тебе.
#164 #909244
>>909239

>дай список литературы и в какой порядке читать дабы осилить такую задачу


Ну если ты совсем зеленый, то вот тебе базовые вещи
- https://wiki.haskell.org/Category_theory
- https://wiki.haskell.org/Recursive_function_theory
- https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/

После того, как осилишь это - можешь переходить созданию своего журнала
#165 #909298
>>894904 (OP)
HALF LIFE 3 CONFIRMED!!!!
909300
#166 #909300
>>909298
Ее прост на хачкиле пишут вот и так долга
16 Кб, 552x414
#167 #909301
>>909088

>не компилируется на шинде


>хаскель

909505
#168 #909386
>>906326
Бамп вопросу
909389
#169 #909389
>>909386
ты расчитываешь на то, что тут в этом треде появится кто-то кто программировал что-то под планшет на хаскеле? Если гугл не знает то никто не знает.
#170 #909396
>>909240
Много абстрактных концепций? В языке программирования?! Да неужели, вот это новость! Ьебе сколько лет-то?

>>909239
Электронный журнал в смысле блог? В чтмл ты уже можешь или только начинаешь вообще? Попробуй почитать "изучаем хаскель во имя добра". В английский можешь? До лета времени, конечно, дохера, но учти, что тебе нужно довольно много понять: помимо собственно книжки по яп, надо еще знать, как работает интернет\сеть (хттп), браузер (чтмл\цсс), тестирование, ну и просто хорошо понимать, что именно тебе нужно сделать.
909419909472
#171 #909419
>>909396
электронный журнал всмысле БД с выводом в браузер, чтобы показывать родителям оценки их личинок. В английский могу, но не настолько хорошо, чтобы читать текст обваленный терминами. Хтмл и цсс могу.
909457
#172 #909457
>>909419
С терминами же, кстати, наоборот проще читать. Ну и раз можешь, то да, полгода хватит за глаза.
#173 #909472
>>909396
ты сам то дочитал хаскел во имя добра?
Про абстрактные концепции, я подозреваю, имелись в виду всякие ебланские аппликативные функторы, монойды в категории пердункторов и прочий пиздец, о котором лучше не слышать
909509909510
#174 #909505
>>909301
Ты наверно не вкурсе но хачкиляторы в последние пару лет выкатили stack который позиционируется "меньше либ чем на хакидже но зато всё просто работает".
И ещё пару месяцев назад всё то же самое без проблем собиралось на такой же венде. А вот сейчас вдруг выяснилось, что всё, stack проёбан.
#175 #909509
>>909472

> лучше не слышать


Боишься узнать лишнего? Ну боись дальше, пхпидораха. Нормальным людям двигаться вперкд только не мешай.
909598
#176 #909510
>>909472

> монойды в категории пердункторов и прочий пиздец, о котором лучше не слышать


Что такое монада и почему это моноид в категории эндофункторов можно девятикласснику за неделю рассказать, начав с нуля, с определения категории.
Если для тебя это "пиздец", то тебе стоит записаться на эвтаназию.
#177 #909521
Seeking Core Contributors (ClojureScript + React Native)
https://jobs.braveclojure.com/jobs/17592186046185/seeking-core-contributors-clojurescript-react-native-status-holdings-pte-ltd

Веб ТРИ ноль, пиртупир, блокчейн... Выглядит вкусно.
#178 #909534
#179 #909594
На связь выходит js-дебил. Понравилась функциональщина, хоть в жс она, мягко говоря, топорная, да и чисто функционального кода никогда не получится, даже под лсд. В общем, решил на досуге вникать в, что называется серьезные языки.
Мне всегда импонировали лиспы, я даже знакомство с программированием начинал с сикпа. Поэтому решил обмазаться кложурой, это вроде как самый живой диалект сейчас, какие подводные камни? Мне для хобби, если что, но приемлемое юзабилити будет весьма кстати.
909612909631
#180 #909598
>>909509
да нет, хлопчик, я ващета разрабатываю системы в функциональной парадигме, акторную модель юзаем, имьютабилити и чистые функции от грязных отделяем и как-то вот без монад обходимся :) И с штангой присесть у меня получилось, я знаю что значит монойд в категории эндофункторов, только вот нахуя? Сумеешь объяснить? Или так просто повыебываться пришел, хаскелист мамин
909633
#181 #909602
Ну да, ну да, просто иди нахуй, для тебя есть тред с теорией категорий где-то на дне зекача, там и дрочи свою залупу
909633
#182 #909612
>>909594

>даже под лсд


Для таких целей есть пролог.

>какие подводные камни?


Общелисперы вроде как не любят ее хз за что, а так — она мягко говоря не вписывается в современное понятие фп.
909631909731
#183 #909631
>>909594
Подводные камни - тулинг на жвм, не самые лучшие сообщения об ошибках, ну и воркфлоу непривычный поначалу будет. Да, и лучше начать с обычной кложури, а потом уже в кложурскрипт перекатиться. Вроде для старта с клжс книжки тоже есть, но программинг кложур 2нд едисьон как-то надежнее. Алсо, имей в виду, что тебе надо будет знать наизусть все функции в стандартной библиотеке в коре неймспейсе (штук сто, не больше). Да, и бери сразу альфу 1.9 версии, там кложурь.спек есть из коробки.

>>909612
Фп != типы, заебали уже, ну епт.
909647909731910993
#184 #909633
>>909602
Так это итт тред и есть, лол.

>>909598
Ечли лично тебе это негде применять, и ты чувствуешь, что зря потратил свое время, то это твои личные проблемы, согласись. Говорить "об этом лучше вообще не слышать" в отношении устоявшейся области знаний (тем более в контексте советов школьнику) - это какой-то извращенный фанатизм. Наука и математика - хорошо, фанатизм - плохо.
909759
#185 #909647
>>909631

>Фп != типы


То есть
909654
#186 #909654
>>909647
Вот так.
909670
#187 #909670
>>909654
В смысле
#188 #909690
Вместо тысячи монад
https://facebook.github.io/immutable-js/docs/#/List
#189 #909731
>>909612
>>909631
Понятно, спасибо. Думаю, что если и сосну, то не сильно. "Современные понятия" и прочее меня не особо беспокоят, я с детства хотел (+ скобочки (+ скобочки скобочки))
#190 #909759
>>909633

>устоявшейся области знаний


>фанатизм - плохо


а разве это не фанатизм, пропихивать чужеродную абстракцию которая была придумана для решения совсем других проблем и другой области знаний в язык программирования ОБЩЕГО НАЗНАЧЕНИЯ лол, только потому-что он фанатично чистый и ввод и вывод ты сделать по другому тупо не сумеешь? То есть ты реально считаешь, что это ок? Этот язык не пригоден для разработки систем, Школьник разве спросил, я бля хочу быть математиком, дизайнить языки и все такое. Для него есть огромное количество литературы и даже в этом случае хаскел ему не потребуется скорее всего :)
909838910382
#191 #909838
>>909759

>Этот язык не пригоден для разработки систем


Ты сейчас про какой?
#192 #909886
Помогите мне сконпелировать на винде пример из tsdl - окамловского биндинга для sdl2. Суть в том, что линкер удаляет упоминания о sdl2.dll из экзешника, потому что окамловский ctypes не имеет команды для указания, из какой библиотеки ты грузишь функции (просто охуительно сделали). Я докопался уже до вот такой вот штуковины:
ocamlbuild %NAME%.native -pkgs ctypes,ctypes.foreign %NAME%.ml -lflags -cclib,-lsdl2,-cclib,-chain,-cclib,ld,-cclib,-link,-cclib,--no-as-needed -r
но она не работает. По идее, -cclib должен передать следующую команду в линкер (flexlink), -link указывает флекслинку передать следущую команду настоящему линкеру (ld), а --no-as-needed должен сказать ld, чтобы он не выбрасывал неиспользуемые библиотеки, но этого почему-то не происходит.
909916
#193 #909916
>>909886
Хотя, нет, я немного напутал. Это заклинание для билдинга моего кода, который не использует tsdl, а сам импортирует функции через ctypes. Вот этот код не компилируется, с ошибкой libffi not found (хотя она установлена). А tsdl билдится такой же командой, только -pkgs Tsdl,Result, но теперь он перестал видеть libsdl2. Хотя cygwin говорит, что она установлена (и она лежит в /usr/lib/libSDL2.dll.a).
Сборка и установка ibffi проблему не решила. Sdl же вообще не собирается с охуительной ошибкой "путь/без/пробелов/SDL.c нат фаунд", хотя он именно там и лежит.
910474
436 Кб, 887x691
#194 #909981
Поясните за эту вашу лямбду - зачем оно вообще? Полно же других вариантов представления вычислимой функции, та же машина Тьюринга. Чем удобнее пикрелейтед?
910013
#195 #910013
>>909981
Напиши пикрелейт на машине тьюринга и сразу станет всё понятно.
#196 #910382
>>909759
Расскажите ему про абстракции и о том, как работает наука и инженерия, кто-нибудь.
910417
#197 #910417
>>910382
А сам чего не расскажешь?
911024
33 Кб, 720x942
28 Кб, 720x965
#198 #910427
А есть какая-нибудь инфографика по лямбда-исчислению, чтобы все в одной картинке?
#199 #910470
>>895671
Haskell это единственный вменяемый, с эко-системой какой-никакой, либами, нормальными доками функциональный язык программирования.
Всё остальное либо мультипарадигма, либо полуфункциональщина типа эрланга.
910471
#200 #910471
>>910470

> полуфункциональщина


*Недофункциональщина
#201 #910474
>>909916
Судя по всему, проблема в том, что flexlink не передаёт параметры в ld, а тот в свою очередь не ищет либы в /usr/lib и /usr/local/lib (первая - где libsdl2, вторая - libffi, и ни одну не видит).
#202 #910656
Пацаны, какой положняк по Elm и PureScript?
910673
#203 #910673
>>910656

>Elm


Монадок нету - значит нинужно.
910674
#204 #910674
>>910673
Точнее, так никаких классов типов нету, так что просто нахуй-нахуй. Хотя Elm architecture норм в простых случаях.
#205 #910740
Как наследовать классы типов в хаскеле?
Что бы запись data Foo deriving (Bar) подразумевала что Foo так же реализует методы для Ord и Eq
910965
#206 #910965
>>910740
Если ты имеешь в виду GeneralizedNewtypeDeriving, то да.
#207 #910990
#208 #910993
>>909631
Единственное преимущество ФП в возможности создания адекватной системы типов. Ты бы еще предложил ФП без ссылочной прозрачности.
910994
#209 #910994
>>910993
Толсто.
912074
#210 #911024
>>910417
Не Сизиф.
911043
#211 #911043
>>911024
ловко
#212 #912074
>>910994
Глупо.
72 Кб, 1422x761
#213 #912185
А вот что скажете за такой индусский хачкиль? http://eta-lang.org/ http://eta-lang.org/playground.html Максимка грит, молодцы, заебись сделоли.
912438912583
#214 #912435
Я вижу тут присутствует определенное количество адептов динамической и статической типизации в функциональных языках.
На стороне статических пацанов присутствует хаскел и окамл, на стороне динамических лисп и э. Давайте же попробуем не обсирать друг друга, а реально продвинуть свое болото, чем помогают типы и чем помогает их отсутсвие?
912438912473912558
#215 #912438
>>912185
У него то гошечка божественная, то говна кусок для гидроцефалов с лоботомией. То хачкелем и окаммлом гордится не стоит (как будто эрланг вообще зык при такой логике), то заебись всё. То раст инжинерная параша, то лучший яп. Нувыпонели.
>>912435
Помогает тем, что хорошая система типов вкупе с фишками вроде ссылочной прозрачности идущих с ней за ручку ловит дохуя всего в компайлтайме, и на этом можно закончить. Компилируется — будет работать, если нет обосрамса в логике.

Динамическая помогает тем, что ты можешь наслаждаться тормозами, падениями в рантайме и бесконечными юнит-тестами. Ещё без документации понять что есть что сложнее чем прочитать древнее говно на перде.
#216 #912473
>>912435
Анончик выше - что-то вроде школоатеиста, который думает, что спорит с верунами, но при этом сам не понимает современную эволюционную теорию и только дискредетирует точку зрения, на стороне которой выступает.

Типы важны прежде всего концептуально. Они дают прочный математический фундамент и позволяют переиспользовать результаты из других областей в инженерной практике. Они определяют, как ты дизайнишь архитектуру своего кода и какую картину кода ты строишь у себя в голове. Короче - типы определяют мышление. Это главное. Кроме того, информация о типах позволяет компилятору проводить разнообразные преобразования кода, которые без нее были бы невозможны. Это второе. То, что это все вместе позволяет ловить опечатки в компайл-тайме вместо тестинг-тайма - не более, чем приятный бонус минимальной практической полезности. Как бокал шампанского в подарок к Мерседесу эс-класса. Ну, приятненько, да.

Языки с динамической типизацией более практичны. Традиционно они представляют собой продукт более инженерной (нежели плтшной) тусовки. (Хотя начиналось все, конечно, с лиспа, фл и апл.) Они дают больше гибкости и больше возможностей - но и ответственности на авторе кода больше. Можно писать код, пользуясь методологией "хуяк-хуяк и в продакшен", а не бороться с компилятором. Можно иметь нормальные макросы, эвал, нетривиальный полиморфизм, можно стрелять себе в ногу, можно прикрутить статическую проверку типов - ю нейм ит. А еще код на них обычно получается короче. инб4: если не считать тестов, азазазаинб4: как будто при статической типизации тесты не надо писать

Короче, типы - это замечательно и вей ту гоу, но не следует, что на сегодняшний день типы - это такой же хайп и маркетинг буллшит, каким была в свое время джава, например. А потому есди видишь фанбоя навроде анона выше - смело пропиши ему в пятак и отправь учить уроки\делать лабу.

Наконец, замечу, что будущее, судя по всему, за гибридным подходом с плаггабл системами типов. Одна из главных проблем текущей модели (условно назовем ее хаскельной) - отсутствие типов за пределами программы. Как только ты выкатываешь публичное апи, все твои типы сразу пропадают. А ведь, строго говоря, всем похуй, что там у тебя внутри твоего модуля, хоть на асме его пиши; все важные абстракции живут на границах модулей\сервисов. Короче, нужна информация о типах в рантайме, статически чекабельные языки для описания апи и разная степень гранулярности тайпчекинга для разных модулей внутри одного языка. Поговорим снова через 10 лет.

Хотя какие 10 лет, у нас вон даже пи-исчисление с линейными типами до сих пор непонятная для большинства хуйня, а не стандарт индустрии, лол
#216 #912473
>>912435
Анончик выше - что-то вроде школоатеиста, который думает, что спорит с верунами, но при этом сам не понимает современную эволюционную теорию и только дискредетирует точку зрения, на стороне которой выступает.

Типы важны прежде всего концептуально. Они дают прочный математический фундамент и позволяют переиспользовать результаты из других областей в инженерной практике. Они определяют, как ты дизайнишь архитектуру своего кода и какую картину кода ты строишь у себя в голове. Короче - типы определяют мышление. Это главное. Кроме того, информация о типах позволяет компилятору проводить разнообразные преобразования кода, которые без нее были бы невозможны. Это второе. То, что это все вместе позволяет ловить опечатки в компайл-тайме вместо тестинг-тайма - не более, чем приятный бонус минимальной практической полезности. Как бокал шампанского в подарок к Мерседесу эс-класса. Ну, приятненько, да.

Языки с динамической типизацией более практичны. Традиционно они представляют собой продукт более инженерной (нежели плтшной) тусовки. (Хотя начиналось все, конечно, с лиспа, фл и апл.) Они дают больше гибкости и больше возможностей - но и ответственности на авторе кода больше. Можно писать код, пользуясь методологией "хуяк-хуяк и в продакшен", а не бороться с компилятором. Можно иметь нормальные макросы, эвал, нетривиальный полиморфизм, можно стрелять себе в ногу, можно прикрутить статическую проверку типов - ю нейм ит. А еще код на них обычно получается короче. инб4: если не считать тестов, азазазаинб4: как будто при статической типизации тесты не надо писать

Короче, типы - это замечательно и вей ту гоу, но не следует, что на сегодняшний день типы - это такой же хайп и маркетинг буллшит, каким была в свое время джава, например. А потому есди видишь фанбоя навроде анона выше - смело пропиши ему в пятак и отправь учить уроки\делать лабу.

Наконец, замечу, что будущее, судя по всему, за гибридным подходом с плаггабл системами типов. Одна из главных проблем текущей модели (условно назовем ее хаскельной) - отсутствие типов за пределами программы. Как только ты выкатываешь публичное апи, все твои типы сразу пропадают. А ведь, строго говоря, всем похуй, что там у тебя внутри твоего модуля, хоть на асме его пиши; все важные абстракции живут на границах модулей\сервисов. Короче, нужна информация о типах в рантайме, статически чекабельные языки для описания апи и разная степень гранулярности тайпчекинга для разных модулей внутри одного языка. Поговорим снова через 10 лет.

Хотя какие 10 лет, у нас вон даже пи-исчисление с линейными типами до сих пор непонятная для большинства хуйня, а не стандарт индустрии, лол
#217 #912558
>>912435
Да просто типы вообще строго ортогональны парадигме. Хуйнул типы в ФП - получил хаскель, хуйнул в ООП - получил скалу, в логическое программирование - получил меркари. Если в ФП допустим вместо типов добавить систему макросов - получится схемка, если к этому ещё прикрутить жабий рантайм - будет кложа, а если эрланговский рантайм - LFE, а если ещё рубишного синтаксиса и сахара - то эликсир. Так что каждый миксует что ему удобно использовать, это вообще индивидуально как мне кажется. Я, например, не очень то люблю типодрочерство, так как оно мешает мне быстро разрабатывать down-to-top и так же быстро патчить, поэтому я обхожу стороной всякие скалы. С другой мне нравится ФП, но так же и принцип Open System, поэтому я юзаю кложу и эликсир. Так же это зависит от проекта, т.е. в каком нибудь веб стартапе больше ценится хакабельность, открытые данные, которые легко распечатать, пропатчить, сгенерировать в нужном виде, когда библиотеки тебе ничего не диктуют, когда можно легко прикинуться протоколом, когда неймспесы открыты и тестировать можно даже то, что для тестирования не предназначалось. Наверное, на жестких проектах, типа научных или военных, с исчерпывающей докой на тысячи страниц, где можно заниматься медленным вдумчивым проектированием, типы полезны и нужны, но я в первом мирке, а не во втором.
#218 #912583
>>912185
Скала взлетела потому, что на ней можно писать как на жабке, только с нескучным синтаксисом. А хаскиль он ленивый, и мандадки с функтерами. Так что для жвм подошло бы что-то вроде окамля. f# для дудки взлетел же, и по той же самой причине.
100 Кб, 1440x430
DI в Haskell через type class #219 #912632
Дисклеймер: в хаскеле 2 неделю, пример сделан специально для вопроса

Источники информации, которые использовал:
- https://ru.wikipedia.org/wiki/Внедрение_зависимости для не знающих что это
- https://habrahabr.ru/post/166353/

Код главного Main.hs и "библиотеки" Lib.hs
http://pastebin.com/r3cqHtbE
http://pastebin.com/jGBAPsgA

Пытаюсь вынести зависимости на конкретные-"плаформоспецифичные" функции посредство тайп-классов.
Вроде бы и получилось, но чувствую что можно как-то проще.

Смущает что:
- завожу пустой ProductionEnvronment
- в ProductionEnvronment я не использую передаваемый параметр

Можно это как-то упростить или может есть др подходы?
sage #220 #912647
>>912632
Используй AbstractProxySingletonFactoryBean, очевидно же.

проиграл с быдла, которое вместо того чтоб зайти через дверь, выпиливает рядом форточку в стене, чтоб было как в любимой джявке
912659
sage #221 #912659
>>912647

> пук

sage #222 #912672
>>912632
Ты куда полез, жавапидарас?! А ну иди нахуй обратно!
912679
#223 #912679
>>912672
Семен, иди уже нахуй. Ты только дискредитируешь адекватных функциональных программистов.

>>912632
Не тонем
912891
#224 #912682
>>912632

> getUserName


Ужасно. Не понимаешь, где поведение, а где данные. Плохо. Прочитай какую-нибудь книжку по хаскелю, пожалуйста. Алсо, не юзайте пастебин.ком, он хцевый и с рекламой.
912894
91 Кб, 1138x559
#225 #912706
>>912632
Пикрил еще проще.
Не благодари.
912896
#226 #912891
>>912679

>постит махровое джявоговнарство, бессмысленное в хаскеле


>адекватных функциональных программистов


Я ж говорю ты дебс. Следующим шагом будет реализация паттерна абстрактная фабрика в небось?
912899
#227 #912894
>>912682

> Я не понял сути вопроса, но докопаюсь до названия функции ВЫДУМАННОГО ПРИМЕРА



Здесь правда тусуют одни жирдяи, не могущие помочь и объяснить как делать правильно/идиоматично?
912896912972
#228 #912896
>>912894
Я ж показал наглядно >>912706, что не так-то?
912902
#229 #912899
>>912891
В стандартном хаскель-проекте тоже есть тесты и там тоже надо разделять тестовое окружение и рабочие.

Да хочется все делать на чистых функциях и гонять тупо данные, но В РЕАЛЬНЫХ ПРОЕКТАХ не всегда все так просто.
Конечно может быть местные обитатели - это ЧСВшная школота, осилившая одну книгу по хаскелю,
но при этом не имеющая представления о реальной жизни.


То что я написал выполняет эту функцию, но я сам вижу что оно не идеально.
Я прошу рассказать "как делать правильно" - в ответ одни бессодержательные кукареки.
912974
#230 #912902
>>912896

> даун притащил картиночку из java-треда


Ну ни траль пожалуйста. Я уже понял от куда ты вылез и уровень твоих знаний haskell
#231 #912912
Напишите уже этому дебсу AbstractSingletonProxyFactoryBean на хаскеле кто нибудь плез
912914
sage #232 #912914
>>912912
Так говоришь как будто тут кто-то на самом деле хаскель знает ;)
912917
#233 #912917
>>912914
Его на самом деле знают столько же процентов хачкелистов, сколько процентов джавистов действительно понимают как работает их код. Дальше сам можешь додумывать.
#234 #912972
>>912894
Я тебе объяснил, что ты не понимаешь: где данные, а где поведение. И сказал, что тебе нужно делать (прочитать книжку про хаскель, риал ворлд х-ль например). Что тебе еще неясно? Ты сюда троллить пришел, или что?
sage #235 #912974
>>912899
Ты собрался ди на грязных функцией с ансейфперформио делать, или что? Несешь какую-то хуйню. В х-ле все* функции чистые, внезапно. И если тебе надо параметризовать код по окружению, то ты, ВНЕЗАПНО, передаешь окружение параметром в функцию. Иди рвх читай.
912991
#236 #912991
>>912974

>передаешь окружение параметром в функцию


Ты что мой код вообще не читал?

Я и передаю окружение Environment в функцию первым параметром.
makeGreeting env
913075
#237 #913011
>>912632

>Можно это как-то упростить или может есть др подходы?


Если хочешь мокать эффекты, то читни например вот это http://www.parsonsmatt.org/2016/07/14/rank_n_classy_limited_effects.html
Сразу скажу, я тут не спец, просто поискал за тебя и тебе самому надо погуглить про ограниченные эффекты в х-ле.
Или используй для окружения что-то вроде Reader/ReaderT/сделай свое окружение инстансом MonadReader, если тебе нужно только читать из окружения, или State, или вообще RWS если тебе нужно читать, писать и изменять разные вещи.
913016913020
91 Кб, 1440x421
#238 #913015
>>912632
Вот, мамкины-хаскалисты, зацените - версия 2.0

Спасибо google и ресурсам:
- http://mikehadlow.blogspot.ru/2011/05/dependency-injection-haskell-style.html
- http://stackoverflow.com/questions/14327327/dependency-injection-in-haskell-solving-the-task-idiomatically

Вам НЕ спасибо, ибо вы нихера не помогли.
913023
#239 #913016
>>913011

>Reader


В этом случае конфиг станет просто значением, а работающие с ним функции станут менее полиморфными.
#240 #913020
>>913011
Спасибо, прочту обязательно
#241 #913023
>>913015
Поздравляю, ты практически изобрел Reader. Это нормально, не парься. Если нужна помощь, лучше сразу пиши куда-нибудь в IRC, типа haskell-beginners
913024
#242 #913024
>>913023

>пиши куда-нибудь в IRC, типа haskell-beginners


fix: тут практически никогда не помогают.
913031
#243 #913031
>>913024
А должны? Каждый раз прибегает тупой нюфаг с дегенератскими вопросами в тред, где обсуждают кластеры метапарадигм и срет сука. Пиздуй в пхп тред за помощью, мудила, а илита тут сама разберется.
913033
#244 #913033
>>913031
>>913031

>обсуждают кластеры метапарадигм


Полистай тред, нихуя тут не обсуждают кластеры метапарадигм. И не обсуждают, тут одни выебщики и ньюфаги.

>илита тут сама разберется


Илита про блядский ридер точно знает, даже я знаю епта.

Вот еще насчет того, что DI в х-ле таки можно делать через Reader:
http://stackoverflow.com/a/14179721
#245 #913075
>>912991
Так я тебе и говорю, что это все, что тебе надо сделать; весь остальной код, который ты написал - вреден. Читай рвх.
#246 #913076
Всем привет. Скажите, какую литературу нужно прочитать перед изучением Haskell, если вкатился с нуля?
913111913449913941
#248 #913449
>>913076
Прямо с изучайхаскелвоимядобра и начинай.
#250 #913941
>>913076
Учебник на викибус и тайпклассопедию. Если школьник - изучайхаскелвоимядобра. Главное русских авторов не читай, там одно джявабыдло пишет для другого джявабыдла, и это почему-то всё на хаскеле.
914061914066
660 Кб, Webm
#251 #914061
>>913941

>джявабыдло пишет для другого джявабыдла


Ужастно что на здесь процветает такое пренебрежительное отношение к другим программистам.

Вот кстати в "разборе полетов" упоминали что комьюнити функ. разработки - поголовно состоит из ЧСВных-#####.
Но я все таки верю что это касается только сосача.
#252 #914066
>>913941
Сам ты джавабядло. Я вообще-то доцент, а ты - хуй.

мимодушкин
sage #253 #914067
>>914061

> Ужастно



Убей себя немедленно. И иди домашку по физике делай, нечего тебе на двощах еще сидеть.
914070914101
sage #254 #914070
>>914067
Мне картошку и среднюю колу
914080
#255 #914080
>>914070
Галлюцинируешь, малыш?
#256 #914100
>>914061
На сосач, быдло!
#257 #914101
>>914061

>Ужастно что на здесь процветает такое пренебрежительное отношение к другим программистам


>комьюнити функ. разработки - поголовно состоит из ЧСВных-#####.


Забавно.
>>914067
Проверочное слово - "ужастик".
914107
#258 #914107
>>914101
Тогда было бы... Ужастично!
#259 #914127
>>914061

>фуу петухи сидят илитарии, мы тут норм парни на scala с простыми яваиндусами и не паримся еее



yasna
#260 #914152
>>914061

>к другим программистам


К программистам нормальное отношение, к писателям абстрактных фабрик бинов хуево относятся даже сами писатели абстрактных фабрик бинов. Эти где-то рядом с шебмастерами-пыхерами. Хотя я не говорю за всех, на этом говне умудряются существовать нормальные команды, но с большего комьюнити состоят из заробитчан которым все похуй лишь бы зряплату заплатили. За что им респектовать?
#262 #919043
Full stack Clojure(script) Engineer at Workframe (Full-time) https://functionaljobs.com/jobs/8990-full-stack-clojurescript-engineer-at-workframe
920025920047
#263 #920025
>>919043
Говностартапчик на которые тебя выебут в каждый нейрон. Ты, дЭбил, жизни не видел, задрот комнатый, хех.
920058
#264 #920047
>>919043
Хуй-стояк мартышка wanted. Стукнул те хуем полбу, хех.
920058
#265 #920058
>>920025
>>920047
Понятно.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 февраля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски