М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 7 октября 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

43 Кб, 1200x847
Хаскель Тред - ньюфаг едишн /haskell/ Банан 7 фев, 00:29 1343135 В конец треда | Веб

Что читать? Я ебу, сам через жопу читаю вот это:
http://learnyouahaskell.com/chapters
Походу, я единственный и не очень умный вкатывальщик в этот странный язык.

Ответы343214344026344844344869344950346609347734352963364382365817368378368494375559378175440887440889

Банан 2 7 фев, 00:30 2 1343136

ну и первый вопрос - этот костыль можно делать или есть более элегантное решение?

9 Кб, 449x73
Банан 3 7 фев, 00:31 3 1343137

пикча отклеилась

Ответы343183343184343409344955

4 7 фев, 00:35 4 1343138

Для души Haskell School of Expression
Для дела Real World Haskell

Ответы343143346072

Банан 5 7 фев, 00:57 5 1343143

94 Кб, 940x102650 Кб, 940x508

Вопрос по созданию простейшей хуйни на функиональщине. Вот я захотел сделать телеграм бота, но так как в ФП я вообще не шарю, решил сначала продумать базовую архитектуру: в боте есть список аккаунтов, инфа в которых постоянно меняется. На императивном языке я бы просто поменял пару параметров, но тут пришлось использовать "костыль" в виде рекурсии и пересоздания списка. на пике 2 неработающая, но читабельная версия. Разве это не громоздко? Мне кажется, я делаю хуйню.
>>1343138
или мне лучше вместо таких тупых вопросов почитать книжки, где обьясняется, как мыслить функционально?

Ответы343144343220344959

6 7 фев, 01:03 6 1343144

>>1343143
Эти почитай, будет проще

7 7 фев, 01:48 7 1343153

О! Только хотел пойти в общий тред, а тут тред запилили!
Ещё один вкатывающийся заворачиватель Hello World во все монады по очереди.

Видел мануал, где начинают не с описания няшных типов и классов, а с хардкорного main = do <in out operations> хоть как-то похожего на реальные задачи. Не могу вспомнить название, может анон доставит?

8 7 фев, 07:52 8 1343183

>>1343137
Есть расширение GHC `DuplicateRecordFields`, ещё есть линзы и `mkFields`

Ответы344957

9 7 фев, 07:55 9 1343184

>>1343137

10 7 фев, 10:22 10 1343214

>>1343135 (OP)
Если совсем нубас, то пройди курс на степике от Дениса Москвина, он сейчас, вроде-бы, в свободном доступе.

11 7 фев, 10:41 11 1343220

>>1343143
Костыль-то зачем сделол? Рекорды можно юзать так же как и нерекорды: data A a = A {x::a, y::a}; A {x = 1, y = 2} === A 1 2. Иль ты решил сокрыть стандартный конструктор и в будущем сделоть умный конструктор?

Во-первых parse у тебя неправильно называется, это splitWithSpace, во-вторых перемудрил, в-третьих есть стандартные функции для разделения строки.

В onMessage у тебя бизнес-логика, лень разбираться.

12 7 фев, 15:15 12 1343409

>>1343137
>klass
>fName
Просто убей себя.

Ответы343659

13 7 фев, 22:18 13 1343659

>>1343409
ебать ты токсичный. Лучше бы показал как надо

52 Кб, 740x740
14 8 фев, 09:58 14 1343803

В хачкиле самое сложное это его установка, блядь. Установить чтото по мануалам просто нереально. Cabal mamuebal install zaloopa-1.0.3 @ error блабла. Вроде разобрался со стеком и использованием lts, слава яйцам, вне стека хачкель неработоспособная параша.

Ответы346087

15 8 фев, 16:02 15 1344026

>>1343135 (OP)
ПАЦАНЫ, Я СЕГОДНЯ ШЁЛ КОРОЧЕ ПО ГОРОДУ И УВИДЕЛ ЧЕЛА В МАЙКЕ ">>=", НУ Я ПОДСКОЧИЛ И РЕЗКО ПЕРЕЕБАЛ ЕМУ В ЩЩИ С ВЕРТУШКИ И ПОЯСНИЛ ЕГО КРИКОМ "НЕ ЛЮБЛЮ МОНАДЫ", ПОТОМУ ЧТО Я УГОРЕЛ ПО ЛИСПУ, ПАЦАНЫ ДУХ СТАРОЙ ШКОЛЫ ЖИВЁТ ТОЛЬКО В НАСТОЯЩЕЙ ФУНКЦИОНАЛЬЩИНЕ, ГДЕ ЕБАШАТСЯ ПО ХАРДКОРУ, ГДЕ ПАЦАНЫ ЖИВУТ МЕТАПРОГРАММИРОВАНИЕМ, ИНТЕРАКТИВНОЙ РАЗРАБОТКОЙ И ЕБУТ СИСТЕМУ В РОТ! ТОЛЬКО ЛИСП ТОЛЬКО ГОМОИКОННОСТЬ, ТОЛЬКО СКОБКИ!!! ЮНИТИ УЛЬТРАХАРДКОР ЛИСП!!! пацаны ебашьте скалоблядей, эфшарперов, крестовиков, формошлепов, академиков, угарайте по метарекурсии любите Лисп, репл и Скобки! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! ЛИСП!

Ответы351045385301409649

16 9 фев, 22:53 16 1344844

>>1343135 (OP)
>Что читать?

Антон Холомьёв "Учебник по Haskell ". Мне понравилась эта книжка.

http://anton-k.github.io/ru-haskell-book/book/home.html

Ответы357783

17 9 фев, 23:39 17 1344869

>>1343135 (OP)
На сайте хаскеля есть список книг, курсов и всего такого

https://www.haskell.org/documentation

У них вообще хороший сайт. https://www.haskell.org

Там еще есть вики

https://wiki.haskell.org/Haskell

А еще есть hoogle, замечательная штука, там можно икать документацию для модулей и функций, причем не только по имени, но и только по типам, очень удобно

https://www.haskell.org/hoogle/

18 9 фев, 23:42 18 1344871

Как на этом языке написать что-то юзабельное?

Ответы344964345450

19 10 фев, 09:23 19 1344950

>>1343135 (OP)
Курс на степике.

20 10 фев, 09:31 20 1344955

>>1343137
Зачем тебе еще один конструктор? У тебя уже есть
Account :: [Char] -> Int -> Account
можешь прям так и писать:
let
vasya = Account "xXxNagibat0RxXx" 7
petya = Account "~~n00pPWNR666~~" 6
in ktoChyuMamkyEbal vasya petya

21 10 фев, 09:37 21 1344957

>>1343183
Это же нуботред, пусть хоть до функторов и монад дойдет сначала.

22 10 фев, 09:48 22 1344959

>>1343143
> "костыль" в виде рекурсии и пересоздания списка
Если я тебя правильно понял, то это не костыль, а идиоматичный подход с использованием иммутабельных структур данных (например, https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf - "Purely Functional Data Structures" Chris Okasaki).

Используй https://www.haskell.org/hoogle/ для поиска функций по типам, большая часть того что ты написал уже реализована и оптимизирована.

Для простейшего парсинга лучше использовать Data.Text, там можно и делить строки по символам и выдавать подстроку и все остальное.

Ответы346072

23 10 фев, 10:14 23 1344964

>>1344871
Берешь и пишешь
https://github.com/search?o=desc&q=language:haskell&s=stars&type=Repositories

Ответы344995

24 10 фев, 12:30 24 1344995

>>1344964
Я сказал юзабельное, а не очередной туториал, библиотеку для хаскелла, учебное задание по туториалу, байндинг.
Т.е. чтобы конечный пользователь, нихера не знающий про хаскелл запустил программу для своих нужд, а она на хаскелле написана?
Что вообще на нём кошерно писать?

Ответы345001345229345231347665

25 10 фев, 12:42 25 1345001

>>1344995
https://habr.com/ru/post/438970/

26 10 фев, 18:27 26 1345229

>>1344995
Pandoc есть, например; эта контора https://www.tweag.io/ делает продукты на Х. А так в телеге спроси в @haskellru, там пояснят, скорее всего.

27 10 фев, 18:29 27 1345231

>>1344995
>Что вообще на нём кошерно писать?
Блокчейны было модно на хаскелле писать

28 11 фев, 06:01 28 1345450

>>1344871
shadowsocks клиет\сервер. Можно начать с socks5 прокси, потом разбить на клент сервер.

29 11 фев, 23:19 29 1346072

>>1343138
За риал ворлд хаскель спасибо. Меня уже тоншить начало от learn your haskell, потому что задач никаких не было, а с фантазией у меня хуево.
хотя я все равно нихуя, кроме трех задачек, не сделал
>>1344959
хуевый подход - у меня та же императивщина, только все состояния я передаю через рекурсию. Да и одна главная, огромная функция такая себе хуйня. Наверное, лучше разделить все на кучу независимых функций и пихать их в IO.
Мб выучу монады и буду пытаться заебашить все методом проб и ошибок. или ебанусь и пойду читать сикп

Ответы346096

23 Кб, 671x191
Банан 30 11 фев, 23:33 30 1346087

>>1343803
Зачем стэк, если есть никсос?

Ответы346106

31 11 фев, 23:47 31 1346096

>>1346072
>За риал ворлд хаскель спасибо
Будь осторожен, он вроде пиздецки старый и об этом надо помнить постоянно. Но глава про парсинг здорово помогла мне с пониманием монад в своё время.

мимокрокодил

32 12 фев, 00:11 32 1346106

>>1346087
Зачем никсос, если есть guix?

Ответы346108347661

Банан 33 12 фев, 00:17 33 1346108

>>1346106
скобачки не люблю

3 Кб, 249x28
Банан 34 12 фев, 22:11 34 1346528

Сука какой же я даун. Два дня ебался со сканировкой грэхэма и только сегодня заметил опечатку, из-за которой все летело к хуям.
Алсо, вот так можно делать?

Ответы346568

35 13 фев, 00:02 35 1346568

>>1346528
type Point =
∀ a. Floating a => (a, a)

p ∷ Point
p = (1.3, 5)

Ответы346572346814

16 Кб, 555x140
Банан 36 13 фев, 00:11 36 1346572

>>1346568
что за перевернутая А? щя выебнусь, вроде в матеше она значит "для любого a."

Ответы346576378165

37 13 фев, 00:17 37 1346576

>>1346572
forall
https://en.wikibooks.org/wiki/Haskell/Existentially_quantified_types#The_forall_keyword

Ответы346799

38 13 фев, 02:07 38 1346609

>>1343135 (OP)
Я думаю, что у языка большой порог вхождения. Знать надо дохуя: лямбда-счисление, теория категорий и т.д.

Ответы346612347075347668

39 13 фев, 02:20 39 1346612

>>1346609
Не надо этого знать.

40 13 фев, 05:27 40 1346631

Нихуя не понял зачем для IO отдельный синтаксис? Какие профиты перед обычным getLine :: () -> String как в окамле?

Ответы346829347078347669

441 Кб, 1080x1920
Банан 41 13 фев, 13:33 41 1346799

>>1346576
Как много хуйни я еще не знаю...

Ответы347224

Банан 42 13 фев, 13:51 42 1346814

Нахуя нужны partial functions? Что это вообще за костыль, почему бы просто не задавать каждой функции при ее определени область определения? Примерно в таком виде, как тут:
>>1346568
Тогда бы, например, у diva была бы область
forall a. Integral a, forall b. Integral b /= 0 -> a -> b -> a и тогда бы эти ошибки исправлялись на этапе компиляции.

Почему великие гении-создатели хацкеля не сделали так?

Ответы346851347217

43 13 фев, 14:15 43 1346829

>>1346631
Do-нотация - это синтаксический сахарок над bind для всех манаток.

44 13 фев, 14:45 44 1346851

>>1346814
Потому что для этого нужны зависимые типы, а их ещё не завезли в хаскель в полном объёме. Кочай Idris, определяй область определения. Ну или пошерсти расширения хаскеля на предмет этого конкретно.
https://gist.github.com/edwinb/0047a2aff46a0f49c881

Ответы346965

19 Кб, 748x142
Банан 45 13 фев, 17:56 45 1346965

>>1346851
прочитал про зависимые типы. Это что-то типа геттеров/сеттеров из ооп? А при чем тут область значений/определений?
> Кочай Idris, определяй область определения.
Мне бы для начала хацкель на уровне хеллоуворлдщика изучить

Ответы346977346985346997347398

46 13 фев, 18:11 46 1346977

>>1346965
>прочитал про зависимые типы. Это что-то типа геттеров/сеттеров из ооп?
В фонд золотых цитат /pr.

47 13 фев, 18:23 47 1346985

>>1346965
>прочитал про зависимые типы. Это что-то типа геттеров/сеттеров из ооп?
Нет, это типа темплейтных классов/дженериков.

Ответы347011347398

48 13 фев, 18:30 48 1346997

>>1346965
Зависимые типы позволяют типам зависеть от значений или на соотношениях между значениями.
Например, выдержка с википедии:
In computer science and logic, a dependent type is a type whose definition depends on a value. A "pair of integers" is a type. A "pair of integers where the second is greater than the first" is a dependent type because of the dependence on the value.

Ну раз ты новичёк, забей пока, осваивай базовый хаскель и просто знай что такое есть.

Ответы347011

Банан 49 13 фев, 19:00 49 1347011

>>1346985
Дженерики это обычные forall, а эти зависимые типы их не очень напоминают.
>>1346997
> In computer science and logic, a dependent type is a type whose definition depends on a value. A "pair of integers" is a type. A "pair of integers where the second is greater than the first" is a dependent type because of the dependence on the value.
Так более понятно. Этот пример более показательный, чем с вектором. все таки иногда надо открывать англ вики, она может быть более понятной, чем русская

> Потому что для этого нужны зависимые типы, а их ещё не завезли в хаскель в полном объёме.
>еще
А в хаскель их планируют добавлять?
Ну а вообще, я не понимаю в чем смысл этих maybe, монад я их еще не учил, если что, если даже у функции head есть ексепшны? Хотелось бы полностью ексепшн-лесс язык.

Ответы347024347678351049

119 Кб, 960x680
50 13 фев, 19:00 50 1347012

Пиздец во что скатилась эта параша. Года 3 назад были треды по зависимым типам, с серьёзным обсуждением не только всех этих идрисов итд, но и теории типов. А сейчас что? Полтора школопитека, один из которых спрашивает "что за буква А перевёрнутая?", другой про зависимые типы такую хуету понес, что даже цитировать стыдно.

Ответы347020347036347218347530348080378156

Банан 51 13 фев, 19:08 51 1347020

>>1347012
> Года 3 назад
А недели две назад хаскель треда даже не существовало.
>Полтора школопитека, один из которых спрашивает "что за буква А перевёрнутая?", другой про зависимые типы такую хуету понес, что даже цитировать стыдно.
Вообще-то я один школопитек.

52 13 фев, 19:10 52 1347024

>>1347011
>А в хаскель их планируют добавлять?
Ну движуха куда-то в ту сторону есть, но конкретных планов нет.

53 13 фев, 19:18 53 1347036

>>1347012
Двачую. В 2013 хачкелем тролили в каждом треде.

второй школопитек 31-лвл

54 13 фев, 20:15 54 1347075

>>1346609
Ерунда. Это дело привычки. За обычным императивным программированием тоже стоит своя теоретическая база и куча страшных слов

55 13 фев, 20:19 55 1347078

>>1346631
У американцев есть поговорка: "Все что было в Вегасе, остается в Вегасе", так вот с монадой IO точно такая же история. Операции ввода-вывода это операции с побочными эффектами, и когда мы их заворачиваем в IO, мы изолируем эти операции от чистых функций.

56 13 фев, 22:46 56 1347158

Сап двач! В чем лучше писать на сабже? Думак про емакс и вим, но для вима хаскель режим сдох, а из емакса хер сделаешь конфетку (свечку не держал, пруфов не будет).

Ответы347159347175347179347681351050

Банан 57 13 фев, 22:48 57 1347159

>>1347158
>но для вима хаскель режим сдох
Нет:
https://github.com/haskell/haskell-ide-engine
Но мне пока-что и ghci хватает.

58 13 фев, 23:26 58 1347175

>>1347158
Есть leksah
http://www.leksah.org/
https://github.com/leksah/leksah

Ответы347209

59 13 фев, 23:29 59 1347179

>>1347158
Глянь, что покажу
https://wiki.haskell.org/IDEs

А вообще, думаю любой редактор с подсветкой синтаксиса подойдет, особенно для начинающих, хоть notepad++, хоть gedit

Ответы347180

60 13 фев, 23:32 60 1347180

>>1347179
подсветка тоже не очень то и нужна

Ответы347185

61 13 фев, 23:41 61 1347185

>>1347180
Мне с ней удобней, у людей есть цветное зрение, почему бы не использовать такую замечательную способность

62 14 фев, 00:45 62 1347209

>>1347175
Умерло

63 14 фев, 00:57 63 1347213

...

64 14 фев, 01:12 64 1347217

>>1346814
Liquid Haskell тебе нужен

65 14 фев, 01:17 65 1347218

>>1347012
Харкачую, пока "что за А перевёрнутая" - на пыхе бабло рубят, я хуй без соли доедаю, видно такова уж судьба. Так что, дропайте FP, найдите себе тянку, форд фокус в кредит, дачку. А FP для ебанутых, не ломайте себе жизнь.

66 14 фев, 01:59 66 1347224

>>1346799
Вот тебе:
https://ghc.haskell.org/trac/ghc/wiki/ImpredicativePolymorphism#Constraintsalsotriggerimpredicativepolymorhism

67 14 фев, 11:46 67 1347398

>>1346985
>темплейтных классов/дженериков
Это параметрически полиморфные типы.

>>1346965
Зависимые типы это что-то типа
toNatural :: (Num a, a >= 0) => b -> a
или
(/) :: (a ~ b, Num a, Num b, b /= 0) => a -> b -> a

68 14 фев, 16:25 68 1347530

>>1347012
Все время кажется, что дальше падать уже некуда, и все равно со временем средний технический уровень постеров падает. Вот такой вот парадокс.

69 14 фев, 21:01 69 1347661

>>1346106
Как там сделать build environment, чтобы был ghc с пакетами и можно было кабалом собирать? В гугле ничего толком не нашёл, в мануале тоже. Ну или, если guix можно юзать как билд-систему, какая там поддержка ghc?

Ответы347706

70 14 фев, 21:05 70 1347665

>>1344995
Вебчик, например. Yesod, Servant, Hakyll. Можно даже фронт через Reflex, но это очень на любителя.

http://www.haskellforall.com/2019/02/haskell-command-line-utility-using-ghc.html
Вот ещё например прикольный шоу-кейс, пишешь типы - компилятор генерирует тебе код. Генерация кода в хаскелле в последнее время мега-популярна ваще.

71 14 фев, 21:09 71 1347668

>>1346609
>у языка большой порог вхождения
Да, это так.
>Знать надо дохуя: лямбда-счисление, теория категорий
Нет, вообще нет, откуда вы это берёте блиа!

72 14 фев, 21:12 72 1347669

>>1346631
Если видишь сигнатуру () -> String в хаскелле, можно смело предполагать, что она ничего не делает. Не запускает ядерные ракеты, не пересобирает ядро, не шлёт запросы в базу данных, и т. п. Язык позволяет явно выделить "грязный" код с вводом-выводом и другими эффектами. Вся бизнес-логика должна оставаться в чистой части, вообще без эффектов. Тогда её легко тестировать и трудно сломать.

Ответы347845

73 14 фев, 21:17 73 1347678

>>1347011
>в чем смысл этих maybe ..., если даже у функции head есть ексепшны?
Это недостаток, исторически сохранившийся в части стандартной библиотеки. Можно взять другую, где такого нет, и жить спокойно.
>Хотелось бы полностью ексепшн-лесс язык
Увы, не получится. Совсем никак. В чистом коде ещё можно, но как только начинается ввод-вывод - эксепшены на эксепшенах. Причём в хаскелле они могут реально стать проблемой.

https://www.fpcomplete.com/blog/2016/11/exceptions-best-practices-haskell

Ответы347925347926349316

74 14 фев, 21:20 74 1347681

>>1347158
Емакс однозначно. haskell-mode + company-ghci
Можешь также попробовать ghcid плагин к vscode.
Всё остальное даже не пытайся, это просто унылый анальный дрочь, зря потратишь время и выбросишь в мусорку что получилось.

22 Кб, 752x180
Банан 75 14 фев, 21:50 75 1347706

>>1347661
Хуй его знает, я стэком еще не пользовался, ставил либу только так:

Ответы347738

76 14 фев, 22:27 76 1347734

>>1343135 (OP)
Могу порекомендовать блог
https://www.parsonsmatt.org/
Сразу ничего не поймёшь, конечно, но будет ориентир, к чему стремиться и как делать. Я начинал с learnyouahaskell, после прочтения долго не мог выйти на следующий уровень, чтение блогов и реддита очень сильно помогло.

77 14 фев, 22:33 77 1347738

>>1347706
Это nix, им я и так пользуюсь. Мне про guix интересно.

78 14 фев, 22:43 78 1347746

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

79 15 фев, 05:31 79 1347845

>>1347669
Да, на словах звучит красиво и понятно, но я не вижу как это лучше на практике. Можешь привести пример? Я просто читаю learnyouhaskell и там работа с IO начинается еще до всех этих монад (что как я понял просто тайп-класс).

Ответы347903

80 15 фев, 09:15 80 1347903

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

Монады - это просто удобный синтаксис для вычислений с эффектами. do-нотация - это просто засахаренная версия того же синтаксиса.

А вообще, вот есть полезный хинт для понимания того, как в хаскеле работают с эффектами: на самом деле, "IO a" - это такой материализованный "список дел", который можно передавать в функции и возвращать. Конечный результат этих манипуляций заключается в составлении одного большого "списка дел", который называется main. Он передаётся в рантайм и там исполняется. С такой точки зрения, вообще все функции в хаскелле чистые.

Ответы347962

Банан 81 15 фев, 10:20 81 1347925

91 Кб, 1080x530172 Кб, 1080x806

>>1347678
Или я не понял, что такое синонимы типов, или в этих ваших хаскелях какие-то костыли неработающие. неужели ghc так сложно преобразовать Point в Floating a => (a,a)?

Ответы347927

Банан 82 15 фев, 10:20 82 1347926

>>1347678
Это не был ответ тебе, опечатался.

83 15 фев, 10:31 83 1347927

>>1347925
Ты пытаешься взять конкатенацию списка и его головы. Естественно, оно не будет чекаться, вне зависимости извращений, которые ты пытаешься наворотить.

Ответы347939

Банан 84 15 фев, 10:55 84 1347939

44 Кб, 1080x356178 Кб, 1080x783

>>1347927
Бля, опечатка.

Ответы347960347985

85 15 фев, 11:13 85 1347960

>>1347939
https://ideone.com/FEbhV5

Все работает жи.

Ответы347985

86 15 фев, 11:13 86 1347962

>>1347903
>Монады - это просто удобный синтаксис для вычислений с эффектами
Какие у Maybe эффекты?

Ответы347971347977

87 15 фев, 11:20 87 1347971

>>1347962
После первого Nothing вычисления прекращаются.

88 15 фев, 11:26 88 1347977

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

89 15 фев, 11:52 89 1347985

>>1347939
>>1347960
А, не увидел, что у тебя там RankNTypes

GHC не поддерживает такое:
https://ghc.haskell.org/trac/ghc/wiki/ImpredicativePolymorphism

Ответы347991

Банан 90 15 фев, 12:02 90 1347991

>>1347985
Поэтому я вставил ImpredicativeTypes

Ответы347998

91 15 фев, 12:07 91 1347998

>>1347991
Там же написано, что оно doesn't work.

Ответы348003

238 Кб, 1080x1056
Банан 92 15 фев, 12:23 92 1348003

>>1347998
Только я не понял, почему
Point a = (a,a) предиктативный, а
Point a = Floating a => (a,a) - нет? Ведь и там и там в определении есть a.

Ответы348068

93 15 фев, 13:49 93 1348068

>>1348003
Они оба импредикативные, ибо SystemF, только первый Rank 1, второй Rank 2.
https://wiki.haskell.org/Rank-N_types

94 15 фев, 14:01 94 1348080

>>1347012
> Года 3 назад были треды по зависимым типам, с серьёзным обсуждением не только всех этих идрисов итд, но и теории типов
Ну не пизди. Какое может быть ОБСУЖДЕНИЕ подобной хуйни? ФП - это как наркотик, ты начинаешь с лиспа, думая о том, как это поможет стать крутым программистом, а заканчиваешь пруверами и требуешь еще. Аутисты тех лет повырастали (см. судьбу Никиты Садкова, например). Новым аутистам эта тема уже не так интересна, потому что хайп ФП прошел.
Лямбды в C# - 2007, лямбды в С++ - 2011, лямбды в java - 2014 и так далее. Если ты был школьником в 2010, вокруг было - ФП, ФП, ФП. Кто-то из этих школьников в 2013 сторчался до идрисов и агд. А потом - все, хайп ФП прошел.

Ответы348097348305348336348437

95 15 фев, 14:17 95 1348097

>>1348080
А что сейчас хайпово?

Ответы348124348126

96 15 фев, 14:46 96 1348124

>>1348097
> А что сейчас хайпово?
ReasonML. Вааще не ФП. /s

97 15 фев, 14:46 97 1348126

>>1348097
Работа на западного боярина. Все треды об этом.

sage 98 15 фев, 17:49 98 1348305

>>1348080
>Никита Садков
>фп

99 15 фев, 18:42 99 1348336

>>1348080
>Лямбды в C# - 2007, лямбды в С++ - 2011, лямбды в java - 2014
>ФП
/0

100 15 фев, 21:11 100 1348437

>>1348080
>Лямбды в C# - 2007, лямбды в С++ - 2011, лямбды в java - 2014
>ФП, ФП, ФП
Вот. Ты ещё один дебил.

101 15 фев, 22:14 101 1348495

Расскажите нубу, как в общих чертах выглядит условный web-api.
Задача: к нам приходит GET /hello/{user_id}
мы должны сходить с условную БД за именем пользователя по его ID, прочитать условную локализацию приветствия из конфига и провернув это через бизнес-логику, в нашем случае вставление имени пользователя в шаблон, вернуть пользователю.

Как выглядит такая архитектура в хаскелле?
У нас получается чистая функция в бизнес логике, но и входы и выходы у неё IO, правильно?
Как решается вопрос многопоточности?

Взываю к боярам за наставлениями мудрыми.

Ответы348589

102 16 фев, 04:49 102 1348589

>>1348495
Технические вопросы типа многопоточности решаются библиотеками.

>У нас получается чистая функция в бизнес логике, но и входы и выходы у неё IO, правильно?
Да, типа того.

>Как выглядит такая архитектура в хаскелле?
Вариантов много, есть разные идиомы. Советую почитать блоги parsonsmatt.org и fpcomplete.com

103 17 фев, 11:31 103 1349316

>>1347678
>Увы, не получится. Совсем никак. В чистом коде ещё можно, но как только начинается ввод-вывод - эксепшены на эксепшенах. Причём в хаскелле они могут реально стать проблемой.
Но можно кидать везде maybe или что-то типа data a = Just a | exception1 | exception2 ...
Тогда в рантайме ексепшнов не будет.

Ответы349502

104 17 фев, 13:52 104 1349502

>>1349316
В чистом коде - да. А в IO? Что делать, когда нет доступа к файловой системе или закончилась память?

105 19 фев, 21:25 105 1351045

>>1344026
Так и не вдуплил как прогонять список через рекурсию, есть задача
>Вернуть первый элемент списка натуральных чисел, кратный 5. При отсутствии такого элемента вернуть 0;
Я делаю так
check [] = [] -- выставил базу
check [x:xs] | (mod x 5)==0 = check xs
| otherwise = 0
Читал уже про определение функций, рекусрусий, смарел примеры, пробовал определять типы для функции в repl, они там не пашут даж, брал с примеров.
Вот я mod x 5 чекаю на кратность дальше в теле функции мне следовательно выводить его надо, дайте подсказку

Ответы351052351108351139351551

106 19 фев, 21:31 106 1351049

>>1347011
>в чем смысл этих maybe, монад я их еще не учил, если что, если даже у функции head есть ексепшны?
Неправильная постановка вопроса, правильно: в чем смысл этих head, если есть монады? И ответ: никакого смысла, просто так исторически сложилось (стандартная библиотека - говно)

107 19 фев, 21:31 107 1351050

>>1347158
>из емакса хер сделаешь конфетку
http://spacemacs.org

Ответы351073

108 19 фев, 21:36 108 1351052

>>1351045
>Вернуть первый элемент списка
>check [] = []
>элемент списка
>[]
/0

Ответы351059

109 19 фев, 21:57 109 1351059

>>1351052
у меня каша в голове, хуль какую еще базу задавать, 0 штоле?

Ответы351108

110 19 фев, 22:42 110 1351073

>>1351050
с этим только говно можно сделать

Ответы351129

111 19 фев, 23:43 111 1351108

>>1351045
if res == [] then 0 else head res
where res = take 1 $ filter (\x -> mod x 5 == 0) array
>>1351059
а, я понял, это толстота

Ответы351127351501

112 20 фев, 00:17 112 1351127

>>1351108
>а, я понял, это толстота
...

113 20 фев, 00:17 113 1351129

>>1351073
У тебя каша в голове.

114 20 фев, 00:33 114 1351139

>>1351045
https://ideone.com/8M1D9g

Ответы351501

3 Кб, 612x88
115 20 фев, 19:43 115 1351501

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

Ответы351502351511351529351534351551351600

116 20 фев, 19:45 116 1351502

>>1351501
Понимаю что задачки пиздец простые, видимо я чет упустил при поверхностном изучении хускеля

Ответы351532351551

117 20 фев, 19:56 117 1351511

>>1351501
Ты определяешь функцию go два раза. Пиши в одной строке через точку с запятой, или в файле как нормальные люди.

Ответы351529

9 Кб, 308x110
118 20 фев, 20:24 118 1351529

>>1351501
> допустим каждый элемент умножить на джва.
Тогда тебе надо x на два умножать, а не xs, x это первый элемент списка, а xs хвост списка, то есть тоже список, нельзя сложить элемент и список, вместо плюса тебе надо использовать оператор присоединения к списку - двоеточие.
К тому же, в данном случае интерпретатор решает, что ты переопределил функцию go, так что надо либо как здесь советуют поступить
>>1351511
>Пиши в одной строке через точку с запятой, или в файле как нормальные люди.
либо использовать в интерпретаторе такую конструкцию для многострочного ввода :{\n<строчки кода>\n:}

Да и назвать надо стараться функции осмысленно.

Ответы351659

119 20 фев, 20:26 119 1351532

>>1351502
Читай хтдп.

120 20 фев, 20:32 120 1351534

>>1351501
>допустим каждый элемент умножить на джва.
Такое надо делать так:

doubleItems = map (*2)

>Я хочу на чистой рекурсии, чтобы понять рекурсию. С функциями высших порядков каждый сможет.
Так начни с того, что реализуй основные такие функции, всяческие map, foldl, filter, и прочие. Отличное упражнение, как раз на рекурсию, они же через нее реализуются.

39 Кб, 1080x353
Банан 121 20 фев, 20:52 121 1351551

>>1351502
Ты упустил определение фунукции. Каждая функция что-то принимает т что-то возвращает. Напртмер, (+) принимает все, что есть членом класса Num, а (++) примает два массива и выдает новый. Ты не можешь применить ++ к немассиву, а (+) к тому, что не есть членом Num. как ты это делал тут
>>1351501
и тут
>>1351045

Мне кажется, ты вообще нихуя не читал - прочитай хотя бы learnyourhaskell до модулей включительно.

>>1351501
fold это та же рекурсия (x:xs), прочитай в том же learnyourhaskell, как она работает.

Банан 122 20 фев, 20:55 122 1351552

Так как в хацкеле перейти к энному элемента списка можно только за линейное время, то foldl работает медленнее?

Ответы351553351558352692

123 20 фев, 20:57 123 1351553

>>1351552
Медленнее чем что?

124 20 фев, 21:10 124 1351558

>>1351552
Перейти к энному элементу списка не в хаскеле, а вообще везде просто по определению списка можно только за энное время.

125 20 фев, 22:24 125 1351600

>>1351501
Чтобы понять рекурсию надо понять рекурсию.
На чистой рекурсии достаточно сделать только foldr, всё остальное можно выразить через него.

foldr _ b [] = b
foldr f b (x:xs)= f x (foldr f b xs)

map f = foldr ((:) . f) []

Ответы351711

126 20 фев, 23:57 126 1351659

>>1351529
По подсказкам хаскеля збазиба
> Да и назвать надо стараться функции осмысленно.
А вот это обидно было

Фп в универе задали, а хаскель и пролог меня не интересуют, тем более в рашке, хотя языки интересные

Ответы351712

127 21 фев, 01:21 127 1351711

>>1351600
>всё остальное можно выразить через него
Сильное утверждение. Проверять мы его, конечно, не будем.

Ответы351792351917

128 21 фев, 01:21 128 1351712

>>1351659
То есть ты хочешь сказать, что учишься на программиста?

129 21 фев, 10:31 129 1351792

>>1351711
Достаточно немного почитать. Слова для гугления: initial algebra semantics

130 21 фев, 14:36 130 1351917

>>1351711
y f = foldr (\_ p -> f p) undefined $ repeat undefined

5 Кб, 388x189
131 21 фев, 21:35 131 1352207

Проверьте на быдло код, вроде разобралс, осталос выспаться
> Вернуть первый элемент списка натуральных чисел, кратный 5. При отсутствии такого элемента вернуть 0
Результ: 5
И если пилить эту же задачу с if then else то различие ток в сахаре?

Ответы352225352245352294

14 Кб, 399x119
132 21 фев, 21:52 132 1352225

>>1352207
Я бы так сделал. В условии сказано, что список натуральных чисел, так что проверка на "больше нуля" избыточна.
>И если пилить эту же задачу с if then else то различие ток в сахаре?
Естественно, а какое тут может быть различие?

Ответы352230352330

133 21 фев, 22:01 133 1352230

>>1352225
до сворачивания списков и монад я ищо не дошёл

Ответы352231

134 21 фев, 22:02 134 1352231

>>1352230
Ну так делов-то. Возьми да напиши их сам. Или код подсмотри.

Ответы352234

135 21 фев, 22:06 135 1352234

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

136 21 фев, 22:15 136 1352245

>>1352207
>Вернуть первый элемент списка
> -> [Int]

Ответы352250

137 21 фев, 22:17 137 1352250

>>1352245
> take 1

Ответы352260

237 Кб, 478x201
138 21 фев, 22:30 138 1352260

>>1352250

Ответы352271

139 21 фев, 22:45 139 1352271

>>1352260
head

Ответы352285

204 Кб, 505x431
140 21 фев, 23:09 140 1352285

>>1352271

141 21 фев, 23:22 141 1352294

>>1352207
Тебя элемент просят вернуть, а не список. [Int]->Int, лучше даже Integral a => [a] -> a. Если хочешь первый элемент, то вместо take 1 можно взять функцию head, она возвращает первый элемент списка, его "голову"

Ответы352617

31 Кб, 481x245
142 22 фев, 00:26 142 1352330

>>1352225
Тут можно еще find использовать из Data.List

143 22 фев, 16:52 143 1352617

>>1352294
О, збазиба за замечание, исправлю

144 22 фев, 16:57 144 1352619

ну и зачем это все?

Ответы352621

145 22 фев, 16:58 145 1352621

>>1352619
ты втираешь какую-то тленность земного бытия

146 22 фев, 18:34 146 1352692

>>1351552
В Хаскеле есть эффективные массивы.

http://hackage.haskell.org/package/vector

http://hackage.haskell.org/package/array-0.5.3.0/docs/Data-Array.html

147 23 фев, 11:58 147 1352963

>>1343135 (OP)
Советую всем вкатывальщикам в функциональное программирование вот эти две книги:
https://github.com/hmemcpy/milewski-ctfp-pdf
https://www.goodreads.com/book/show/25587599-haskell-programming-from-first-principles
https://www.reddit.com/r/haskell/comments/5glaon/why_doesnt_haskell_programming_from_first/

Рекомендую сначала прочитать книгу по теории категорий и уже потом браться за haskell

Ответы353331

148 23 фев, 17:52 148 1353331

>>1352963
Это дело хорошее, но я добавлю, что можно ещё сразу просто взять и начать писать. Ну, чтобы ни у кого не возникало иллюзий о недоступности языка для простых смертных.

А ещё есть http://okmij.org/ftp/

149 24 фев, 13:51 149 1353869

мейби запилим шапку как минимум из этого ? https://2ch.hk/pr/res/1343135.html#1352963 (М)
https://2ch.hk/pr/res/1343135.html#1353331 (М)

Ответы353917

150 24 фев, 14:24 150 1353917

>>1353869
напомни как бамплимит будет
через год примерно

151 25 фев, 23:07 151 1355231

> удалить из списка элементы, индексы которых кратны 3
Пытаюсь запилить, опять намудил с типами компилятор Арёт уже что я мудило
Ошибки в 4 и 9 строках, прошу подсказку

module Main where

main :: IO ()
main = print $ check [1..10] 0

check :: [a] -> (a -> Int) -> [a]
check [] _ = []
check (x:xs) i
| (mod i 3) > 0 = x
| otherwise = check xs (i+1)

Ответы355255

Банан 152 25 фев, 23:25 152 1355255

>>1355231
Функция должна возвращать массив, а в 9й строчке она у тебя возвращает a, а не [a].
Алсо, на этой же строчке ты пытаешься получить остаток от деления функции на тройку - ты ебобо?

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

Ответы355351355404

153 26 фев, 00:52 153 1355351

>>1355255
даже если мне добавить x: xs, это не исправит, я ваще запутолс, какую главу мне перечитывать? Скок примеров всяких рекурсий и сурсы функций стандартной либы смотрел, я не вижу этот простой паттерн, управлять счетчиком. Рекурсию вроде понял вот я и делаю в guard выражении остаток больше нуля и сопостовляю в образец нового списка.

Ответы355419

154 26 фев, 05:22 154 1355404

>>1355255
>Учись читать маты компилятора, а не задавать вопросы в тред
Более уебищный высер чем у GHC только у плюсов когда ошибка в шаблонах. Это реально нечитаемая хуета.

Ответы355422355427

155 26 фев, 07:16 155 1355419

>>1355351
Похоже, что ты вообще программировать недавно начал. Тут никакая глава не поможет.
>этот простой паттерн, управлять счетчиком
Обычно такое можно обнаружить в текстах про хвостовую рекурсию, где берётся какая-нибудь нехвостовая функция и переделывается в хвостовую путём прицепления аккумуляторного аргумента. Получается вещь, очень похожая на for-цикл. Но вообще, конечно, явную рекурсию писать не надо, по возможности.

Твой пример решается так:
check :: [Int] -> Int -> [Int]
check [] _ = []
check (x:xs) i
| i `mod` 3 == 0 = x : (check xs $ i + 1)
| otherwise = check xs $ i + 1

Ответы355425355897355956

156 26 фев, 07:21 156 1355422

>>1355404
Я могу понять, если у тебя сплошной темплейт хаскелль и десяток расширений на файл. Но если ты не можешь прочитать элементарную херню вроде той, которая выдаётся в примере с делящимися индексами, то проблемы на твоей стороне.

157 26 фев, 07:32 157 1355425

>>1355419
Сразу ещё напишу более лучший вариант без явной рекурсии:
check' :: Integral a => [a] -> [a]
check' xs = map snd filtered
__where
____filtered = filter ((== 0) . (`mod` 3) . fst) indexed
____indexed = zip indices xs
____indices = [0 .. length xs - 1]

Ответы355430

158 26 фев, 07:50 158 1355427

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

Ответы355443

159 26 фев, 07:54 159 1355430

>>1355425
Длину, кстати, указывать не надо. Длина списка после zip равна длине наименьшего.

160 26 фев, 08:41 160 1355443

>>1355427
This.

161 26 фев, 20:40 161 1355897

>>1355419
Да да, можешь не выебываться шо ты можешь мне пояснить за никому не нужные аппликативные функторы и монады, ведь у тебя здесь смысловая ошибка, хА!
> | i `mod` 3 == 0 = x : (check xs $ i + 1)

Ответы355901355924356363

162 26 фев, 20:45 162 1355901

>>1355897
Представься, мразь.

Ответы356006

77 Кб, 510x653
163 26 фев, 21:28 163 1355924

>>1355897

164 26 фев, 22:23 164 1355956

>>1355419
check :: [t] -> [t]
check a = case a of [] -> []
[_] -> []
[_, x] -> [x]
(_ : (x1 : (x2 : xs))) -> x1 : x2 : check xs

Ответы355958

165 26 фев, 22:25 165 1355958

>>1355956
check :: [a] -> [a]
check a = case a of [] -> []
[_] -> []
[_, x] -> [x]
(_ : (x1 : (x2 : xs))) -> x1 : x2 : check xs

Ответы355959

166 26 фев, 22:28 166 1355959

>>1355958
Ты конченый. Не пиши сюда больше.

Ответы355982

167 26 фев, 23:00 167 1355982

>>1355959
Удаляем каждый третий элемент, нумерация начинается с нуля. Декларативный подход при реализации. Что не так-то?

Ответы355990

168 26 фев, 23:09 168 1355990

>>1355982
import Data.List.Split
check = concat . map init . chunksOf 3

Ответы356004

169 26 фев, 23:34 169 1356004

>>1355990
Хотя, лучше так:
check i | i < 2 = error "Ohuel chtole suka?"
check i = concatMap (take $ i - 1) . chunksOf i

170 26 фев, 23:37 170 1356006

>>1355901
Затраллен, иди исправляй свою ошибку, (mod i 3) > 0
А так спасибо, пониал паттерн, запилил себе поиск по списку строк, ща пролог буду доделывать, там еще угарнее

sage 171 27 фев, 19:40 171 1356363

>>1355897
Чет ты какой-то не очень умный.

мимо

38 Кб, 640x480
172 1 мар, 22:00 172 1357430

Сап. Читаю книжку из шапки, но не хватает практики. Где можно найти задачки для лучшего запоминания?

Ответы357783

173 2 мар, 16:54 173 1357783

>>1357430
Вот в этой >>1344844 книжке в конце каждой главы есть упражнения.

Еще вот такие штуки есть:

https://exercism.io/tracks/haskell/exercises

https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems

https://github.com/opqdonut/haskell-exercises

https://wiki.haskell.org/Tutorials#Practical_Haskell

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

Ответы357790358037

174 2 мар, 17:01 174 1357790

>>1357783
экзерцизм не советую, унылая неудобная хуйня
мимо

Ответы357803

175 2 мар, 17:20 175 1357803

>>1357790
Только для хускела или вообще? Что в этом сайте тебя бесит больше всего?

Ответы358000

176 2 мар, 17:29 176 1357810

вы пизду-то нюхали хоть раз

Ответы357812

177 2 мар, 17:30 177 1357812

>>1357810
>пизду-то нюхали
Вообще-то пизду надо ебать а не нюхать, девственник.

178 2 мар, 23:09 178 1358000

>>1357803
Вообще. cli тул неудобный, фидбэк зачастую дают индусы-долбоебы.

42 Кб, 637x349
179 3 мар, 00:41 179 1358037

>>1357783
Спасибо

180 6 мар, 17:22 180 1360205

Читаю книгу со слоником на обложке. Но люто печет с того что не работают некоторые примеры, например на странице 48 есть такой код https://pastebin.com/iFmkLgim, но я получаю тонну ошибок. И это не единичный случай, щито делать?

Ответы360318

181 6 мар, 20:08 181 1360318

>>1360205
Там надо в стрелке, в списочном выражении, минус поставить, а то там другой знак, похоже, тире.
>removeNonUppercase st = [ c | c <– st, c `elem` ['A'..'Z']]
Надо не так <–, а вот так <-
removeNonUppercase st = [ c | c <- st, c `elem` ['A'..'Z']]
Я с таким сталкивался, в примерах в книжках, для красоты видимо, не все символы точно такие, какие ожидает ghc, а просто похожие на вид, так что, когда копируешь примеры можешь столкнуться с такими вот ошибками, это часто касалось апострофов, тире и кавычек.

182 11 мар, 20:56 182 1362604

32 Кб, 492x43524 Кб, 1022x18845 Кб, 979x31758 Кб, 940x477

За хуйня? Как фиксить?
Запускаю
cabal configure --enable-tests && cabal build && cabal test

Ответы363142

183 12 мар, 20:42 183 1363142

>>1362604
Импорть Main из теста

184 14 мар, 20:52 184 1364382

>>1343135 (OP)
А есть ли в функциональном программировании свои паттерены, есть ли работы вроде книги Банды Четырех про паттерены ООП?

Ответы364427364437364444364913

185 14 мар, 21:31 185 1364427

>>1364382
Да. Да.

186 14 мар, 21:43 186 1364437

>>1364382
> А есть ли в функциональном программировании свои паттерены
Да
>есть ли работы вроде книги Банды Четырех про паттерены ООП?
https://github.com/hmemcpy/milewski-ctfp-pdf

Ответы364500

187 14 мар, 21:56 187 1364444

>>1364382
Паттерны нужны, чтобы долбоёбы могли писать хороший код. Среди функциональщиков долбоёбов нет. Ответ очевиден.

Ответы364468

188 14 мар, 22:21 188 1364468

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

Ответы364600365255

189 14 мар, 23:12 189 1364500

>>1364437
А про архитектуру крупных приложений в функциональном стиле там есть? Или, когда планируют архитектуру в принципе не важно на каком языке и в какой парадигме собираются писать?

Ответы364514

190 14 мар, 23:41 190 1364514

>>1364500
Ну есть ещё голубая книжка, только там Scala.

Ответы364905

191 15 мар, 09:01 191 1364600

>>1364468
Только паттерны тут не при чем.

Ответы364900

192 15 мар, 19:54 192 1364900

>>1364600
Паттерены тут при всем, потому что само слово паттерен означает образец. Так-то в хаскеле все эти монады и функторы являются паттеренами, это же обычные классы типов, просто в джаве абстрактные фабрики фасадов синглтонов, а в хаскеле монады, комонады, функторы, аппликативные функторы, мноиды и прочие

Ответы366767

193 15 мар, 20:02 193 1364905

>>1364514
>голубая книжка, только там Scala.
Я знаю про smalltalk есть голубая книжка, а еще у Михаила Зощенко есть "Голубая книга", сборник сатирических новелл, в общем, если поискать, много есть всяких голубых книжек, а какую ты имеешь в виду? Беглый гуглеж ничего не дал.

Ответы364908

194 15 мар, 20:03 194 1364908

>>1364905
Я про https://leanpub.com/fpmortals

195 15 мар, 20:13 195 1364913

>>1364382
зашел недавно в тред, увидел твой вопрос и гугел тут же кинул в предложку это: https://www.youtube.com/watch?v=E8I19uA-wGY

196 16 мар, 10:55 196 1365255

>>1364468
https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html
Например

197 17 мар, 02:34 197 1365817

>>1343135 (OP)
Угадай фильм по коду:
‍♂️.‍♀️.‍♂️

Ответы365829366011

198 17 мар, 03:14 198 1365829

>>1365817
Операция Ы и другие приключения Шурика

Ответы365999

199 17 мар, 13:36 199 1365999

>>1365829
не правильно.
ответ: Человеческая многоножка

22 Кб, 266x375
200 17 мар, 14:04 200 1366011

>>1365817

201 18 мар, 22:16 201 1366767

>>1364900
>Монады и функторы являются паттеренами, это же обычные классы типов
Ой вэй. Тайпклассы - это просто немного более, чем интерфейсы.

Ответы366799367102367188

202 18 мар, 23:12 202 1366799

>>1366767
Ну да, а алгебраические типы - это немного более, чем рекорды с енумами. И вообще, этот ваш хаскель - всего лишь немного более, чем джаваскрипт какой-нибудь.

Ответы366921

203 19 мар, 08:24 203 1366921

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

Ответы367117367120

204 19 мар, 17:09 204 1367102

>>1366767
>Монады и функторы являются паттеренами,
>Тайпклассы - это просто немного более, чем интерфейсы

Анон, ты правда такой тупой или просто невыспавшийся тогда был?

Ответы367112367896

205 19 мар, 17:25 205 1367112

>>1367102
А че не так? Монада - это не тайпкласс уже?

Ответы367118367234

206 19 мар, 17:37 206 1367117

>>1366921
>это сорт оф рокет сайенс
Да нет, ты что. Так, хуйня подзаборная. Лежит гниёт себе вместе с остальными, даже пнуть противно.

207 19 мар, 17:37 207 1367118

>>1367112
Монада - это моноид в моноидальной категории эндофункторов.

Ответы367126367128

208 19 мар, 17:39 208 1367120

>>1366921
В общем-то, и весь хаскель "всего-лишь" нужен для исполнения машинных кодов на процессоре. Ничего необычного.

Ответы367126

209 19 мар, 17:54 209 1367126

>>1367118
Это все и без тебя знают. Но в хаскеле это интерфейс, помогающий абстрагировать вычисления с побочными эффектами.

>>1367120
Ну да, довольно мощный высокоуровневый ЯП. Только некоторые школьники думают, что на нём академики пишут.

Ответы367127367235

210 19 мар, 17:57 210 1367127

>>1367126
>Это все и без тебя знают
То есть, тебе можно пороть всякую бессодержательную херню, а мне нет? Нет, ты заткнись.

Ответы367164

211 19 мар, 17:58 211 1367128

>>1367118
Монада это мосив, а это
>моноид в моноидальной категории эндофункторов
всего лишь базовые понятия из алгебры без особенной глубины, которыми ты можешь вечатлить только даунов из /pr.

Ответы367129367209

212 19 мар, 17:59 212 1367129

>>1367128
>мосив
Я конечно не даун из /pr, но я впечатлён.

213 19 мар, 19:11 213 1367164

>>1367127
Нахуй иди

214 19 мар, 19:56 214 1367188

>>1366767
Смотри, например, в джаве паттерен наблюдатель реализуется с помощью классов, это особым образом организованные классы, паттерен наблюдатель это не какая-то встроенная в джаву вещь, это прием программирования.

Монады и функторы организуются в хаскеле с помощью классов типов, это просто специальные классы типов, это не какая-то встроенная в язык вещь, это просто прием программирования, поэтому, можно сказать, что это паттерены. Вот что имел в виду.

Ответы367342

215 19 мар, 20:39 215 1367209

>>1367128
>Монада это мосив,
Все массивы это монады, но не все монады это массивы.

216 19 мар, 21:46 216 1367234

>>1367112
>Монада - это не тайпкласс уже?
Нет.

217 19 мар, 21:47 217 1367235

>>1367126
>Только некоторые школьники думают, что на нём академики пишут.
А некоторые школьники не следят за публикациями по CS за последние, гхм, 25 лет.

218 20 мар, 01:37 218 1367342

>>1367188
У классов ООП и тайпклассов хаскеля из общего только 5 букв: к, л, а, с, с.

Различия между паттернами в ООП и манатками следующее.

Паттерны в ООП - это часть задуманной архитектуры (шаблоны проектирвоания). ООПист сидит и думает: агааа, тут нужно заебенить изменяемое поведение, значит тут визитор, тут нужна композиция объектов, хуяк, DI навставляю итд.

Функциональщик измышляет композицией функций. Именно композицию и можно назвать шаблоном проектирования в ФП. Но, нахуя, если композиция - суть программирования в любом подходе. Он, не думает "тут у нас побочные эффекты, заебеню-ка я манаду, или аппликативный функтор", тем более, что написать код для монадки еще пол дела: попробуй докажи, что не верблюд, и твоя реализация удовлетворяет всем законам, иначе соснешь в продакшене. Функциональщик собирает композицию функций, при этом у него иногда получаются до боли знакомые комбинаторы (байнд, например) и он с удовольствием этим пользуется, получая нахаляву еще пару-тройку комбинаторов.

Ответы367358

219 20 мар, 06:11 219 1367358

>>1367342
Ну на деле современный функциональщик (хаскеллист) берёт либу типа mtl или capabilities (если он совсем продвинутый), ебенит монадный стек через трансформеры и дерайвит всевозможные инстансы, чтобы бесплатно получить комбинаторы и их писать. Я вообще не помню, когда бы мне приходилось писать прямо свой оригинальный инстанс монад или аппликативов.

Ответы368557

220 20 мар, 07:02 220 1367367

>>1367364
Да ты охуел рекламировать свой местячковый веборасточят в моём хаскелл-треде?

221 20 мар, 07:13 221 1367369

>>1367364
конфопидоры - не люди

87 Кб, 900x600
222 21 мар, 01:25 222 1367888

Хуясе тут ньюфагов развелось. Да еще со всякими страданиями. Ладно, как дедушка хаскельдрочерства, поделюсь советами дедушки как не страдать.

1. Не пытайтесь устанавливать ghc или платформу вручную. Я не могу придумать ни одной причины, по которой ньюфагу потребовалось бы качать дистрибутив ghc. Используйте Stack https://haskellstack.org Про cabal-install вообще забудьте пока не узнаете про сэндбоксы, иначе рано или поздно разнесёте систему и вам придётся всё переинсталлировать. Впрочем знать что-то про сэндбоксы вам нахрен не нужно, просто используйте Stack там всё есть и он просто работает, там уже всё придумали за вас.

2. Не создавайте проекты вручную и не редактируйте вручную cabal-файлы. Есть команда stack new и файл package.yaml, из которого hpack сгенерирует всё необходимое, причем в случае stack-а, вам не нужно знать, что такое hpack. Нет, если вам хочется вручную указывать всё модули своего проекта и потом каждый раз править .cabal, когда вы что-то рефакторите, то пожалуйста, но такой хуйнёй даже джависты не занимаются, они давно придумали IDE для этих целей.

3. Кстати, используйте IDE. И нет, блядь, не Leksah. Скачайте что-нибудь современное и адекватное, например Visual Studio Code, скомпилируйте https://github.com/haskell/haskell-ide-engine (stack-ом, естественно, как написано в их документации, а не ручками) установите плагин Haskell Language Server и будет вам шастье. Еще есть очень полезная команда "stack ghci", которую следует запускать в окне терминала этого самого Visual Studio Code, чтобы можно было быстро тестировать ваши программы и команда :r внутри ghci, чтобы перезагружать отредактированные исходники. И если вы под виндой, используйте stack ./install.hs hie-8.6.4, чтобы использовать GHC 8.6.4, потому что в GHC 8.6.3 серьёзно накосячили и он под виндой подвисает.

4. Не используйте стандартную прелюдию. Особенно, если вы не знаете, чем String в Хаскелле отличается от String в Джаве. Вообще, поставьте NoImplicitPrelude в своём шаблоне для новых проектов и используйте вместо неё rio https://github.com/commercialhaskell/rio В прелюдии нет ничего плохого и я сам её никогда не отключаю, но я - дедушка, мне можно, а вот вам она нахрен не нужна, будете только слёзы и сопли по клавиатуре размазывать от того, что ваш говнокод на Хаскелле внезапно окажется в 10 раз медленне аналогичного говнокода на Питоне.

5. Вообще, прочитайте всё, что написано в rio https://github.com/commercialhaskell/rio и сделайте именно так. Пока вы ньюфаги и только изучаете Хачкель, у вас нет никаких причин делать что-то иначе.

6. Пишите на идиоматичном Хаскелле. Пытаться эмулировать на Хаскелле императивные алгоритмы используюя IORef - плохая идея, особенно если вы не знаете, что IORef боксит значения, а если вы не знаете, что modifyIORef - ленивая, то вообще пиздец. Да, на Хаскелле можно заниматься императивным программированием и низкоуровневыми оптимизациями, но пока вы не умеете читать Core Language, вам лучше вообще туда не лезть, в 99% случаев компилятор сделает это лучше, чем вы.

7. Освойте такие инструменты как criterion и weigh. Да, Хаскель сука быстрый, как С++. Но это декларативный язык и он использует очень много черной магии, чтобы превратить ваши декларативные описания в последовательность процессорных команд. И если ты ньюфаг и не можешь знать как твоя писанина транслируется в ассемблер и почему какая-то хуйня может быть оптимизирована, а какая-то - нет, просто используй criterion и weigh для отслеживания производительности.

87 Кб, 900x600
222 21 мар, 01:25 222 1367888

Хуясе тут ньюфагов развелось. Да еще со всякими страданиями. Ладно, как дедушка хаскельдрочерства, поделюсь советами дедушки как не страдать.

1. Не пытайтесь устанавливать ghc или платформу вручную. Я не могу придумать ни одной причины, по которой ньюфагу потребовалось бы качать дистрибутив ghc. Используйте Stack https://haskellstack.org Про cabal-install вообще забудьте пока не узнаете про сэндбоксы, иначе рано или поздно разнесёте систему и вам придётся всё переинсталлировать. Впрочем знать что-то про сэндбоксы вам нахрен не нужно, просто используйте Stack там всё есть и он просто работает, там уже всё придумали за вас.

2. Не создавайте проекты вручную и не редактируйте вручную cabal-файлы. Есть команда stack new и файл package.yaml, из которого hpack сгенерирует всё необходимое, причем в случае stack-а, вам не нужно знать, что такое hpack. Нет, если вам хочется вручную указывать всё модули своего проекта и потом каждый раз править .cabal, когда вы что-то рефакторите, то пожалуйста, но такой хуйнёй даже джависты не занимаются, они давно придумали IDE для этих целей.

3. Кстати, используйте IDE. И нет, блядь, не Leksah. Скачайте что-нибудь современное и адекватное, например Visual Studio Code, скомпилируйте https://github.com/haskell/haskell-ide-engine (stack-ом, естественно, как написано в их документации, а не ручками) установите плагин Haskell Language Server и будет вам шастье. Еще есть очень полезная команда "stack ghci", которую следует запускать в окне терминала этого самого Visual Studio Code, чтобы можно было быстро тестировать ваши программы и команда :r внутри ghci, чтобы перезагружать отредактированные исходники. И если вы под виндой, используйте stack ./install.hs hie-8.6.4, чтобы использовать GHC 8.6.4, потому что в GHC 8.6.3 серьёзно накосячили и он под виндой подвисает.

4. Не используйте стандартную прелюдию. Особенно, если вы не знаете, чем String в Хаскелле отличается от String в Джаве. Вообще, поставьте NoImplicitPrelude в своём шаблоне для новых проектов и используйте вместо неё rio https://github.com/commercialhaskell/rio В прелюдии нет ничего плохого и я сам её никогда не отключаю, но я - дедушка, мне можно, а вот вам она нахрен не нужна, будете только слёзы и сопли по клавиатуре размазывать от того, что ваш говнокод на Хаскелле внезапно окажется в 10 раз медленне аналогичного говнокода на Питоне.

5. Вообще, прочитайте всё, что написано в rio https://github.com/commercialhaskell/rio и сделайте именно так. Пока вы ньюфаги и только изучаете Хачкель, у вас нет никаких причин делать что-то иначе.

6. Пишите на идиоматичном Хаскелле. Пытаться эмулировать на Хаскелле императивные алгоритмы используюя IORef - плохая идея, особенно если вы не знаете, что IORef боксит значения, а если вы не знаете, что modifyIORef - ленивая, то вообще пиздец. Да, на Хаскелле можно заниматься императивным программированием и низкоуровневыми оптимизациями, но пока вы не умеете читать Core Language, вам лучше вообще туда не лезть, в 99% случаев компилятор сделает это лучше, чем вы.

7. Освойте такие инструменты как criterion и weigh. Да, Хаскель сука быстрый, как С++. Но это декларативный язык и он использует очень много черной магии, чтобы превратить ваши декларативные описания в последовательность процессорных команд. И если ты ньюфаг и не можешь знать как твоя писанина транслируется в ассемблер и почему какая-то хуйня может быть оптимизирована, а какая-то - нет, просто используй criterion и weigh для отслеживания производительности.

Показать весь текст
Ответы368095368559368567368796369386370175

223 21 мар, 02:37 223 1367896

>>1367102
Он абсолютно прав. Моняды и функторы являются паттеренами на которых построены практически все интерфейсы хачкельбиблиотек. Вопрос лишь в том, являются ли эти паттерны первоклассными, т.е. выражаются ли они средствами языка. В случае ООП - нет. Т.е. какой-нибудь ОО-синглетон - это просто какой-нибудь AbstractSingletonProxyFactoryBean, его семантика описана в документации, она, так сказать, воображаемая. А в случае Хачкеля большинство паттернов описываются и чекаются самим языком. Именно поэтому Хачкель так хорош. Когда я вижу монаду или функтор, мне не надо лезть в документацию, я знаю, каким правилам подчиняется данная конструкция, они формализированы на уровне языка. Когда я вижу AbstractSingletonProxyFactoryBean, мне надо разбираться, что имел ввиду автор, потому что язык мне не скажет ничего, мне надо понимать кучу скрытых правил, как их правильно использовать.

Ответы368096

224 21 мар, 18:44 224 1368095

>>1367888
>4. Не используйте стандартную прелюдию.
Вот именно поэтому и следует использовать скалу\кложу\эликсир, а сабж оставить академикам.

Ответы368151370097

225 21 мар, 18:48 225 1368096

>>1367896
Блядь, а ты еще тупее него.

Во-первых, я тем постом как бы намекал, что монада - это паттерн программирования вообще, необязательно программирования, а уж какими средствами он выражается в конкретном языке - это дело десятое. Переводя на язык ООП, это как в ответ на "билдер - это паттерн" писать "нет, билдер это же просто класс))".

Во-вторых,
>Когда я вижу монаду или функтор, мне не надо лезть в документацию, я знаю, каким правилам подчиняется данная конструкция, они формализированы на уровне языка
- тупорылая манька, иди хаскельвики читай, monad laws у него реализованы на уровне языка, угу. Обоссал тебя.

Ответы368159

226 21 мар, 21:34 226 1368151

>>1368095
>кложу\эликсир
Динамикодрисня не нужна.

Ответы368477

227 21 мар, 21:53 227 1368159

>>1368096
> паттерн программирования
Сам термин придумал, сам

>"билдер - это паттерн" писать "нет, билдер это же просто класс))"
Ебать логика у тебя.

Билдер - это шаблон проектирования. ПирожокБилдер - это конкретный класс, созданный по шаблону Билдери то не факт.

Функтор - это тайпкласс, в простонародии интерфейс. Functor [] - реализация этого интерфейса для списка. Где тут, блять, ты узрел шаблон проектирования?

Ответы368469

228 22 мар, 11:57 228 1368378

>>1343135 (OP)
Я не могу въехать где в физической реализации функционального программирование имеется тот самый стейтлесс о котором все так радостно воркуют.

Какая принципиальная разница между тем что у нас есть условные контейнеры в памяти, к которым обращаются функции, и когда у нас есть общая среда где контейнеров нет но всё равно есть постоянно модифицируемые сущности?

У меня после курса архитектуры компьютера такое чувство что меня подъебать пытаются.

Ответы368405368437368477

18 Кб, 340x255
229 22 мар, 13:23 229 1368405

>>1368378
>У меня после курса архитектуры компьютера такое чувство что меня подъебать пытаются
Так и есть. Не ведись на хайп гуманитариев-функциональщиков. В жопу трахаться не так стыдно, как быть функцинальщиков.

Ответы368408

230 22 мар, 13:31 230 1368408

>>1368405
Ну как сказать, мне наоборот в целом их подход нравится.
Однако этот момент со стейтами прям коробит. Я ещё могу понять маняпуляции вокруг того что I/O - вынужденное "зло" относительно чистых функций. Но когда мне пишут про отсутствие состояний при этом имея сущности в локальной среде, целые хранилища с правилами и даже прямые модификациями как ОЗУ так и файловой системы - уж извините, но тут что-то не вяжется.

Ответы368446368477368836

231 22 мар, 14:07 231 1368437

>>1368378
Как ФП может сущевствовать без стейтлесса? На этом же он и основан: функция должна переделывать одни данные в другие, а не изменять состояния и создавать побочные эффекты. В этом же и есть суть - между функциями и данными нет никаких границ, это одно и тоже.

232 22 мар, 14:25 232 1368446

>>1368408
Реальный мир не так идеален, как фантазии функциональщиков.

sage 233 22 мар, 15:33 233 1368469

>>1368159
https://en.wikipedia.org/wiki/Functor

234 22 мар, 15:42 234 1368477

>>1368151
В реальном мире (к счастью или к сожалению) нужна.

>>1368378
10 студентов-байтоебов из 10, лол. А если спуститься еще ниже, то окажется, что как раз никакого стейта нет, одни гейты да датафлоу. У тебя нет такого чувства, что тебя подъебать пытаются? ;)
Погугли, что такое "абстракция".

>>1368408
Ты можешь смоделировать твои побочные эффекты так, что при формальном описании языка они будут выглядеть (и вести себя, и описываться) как чистые функции. Тогда ты можешь доказывать о них разные утверждения как о чистых функциях, и ничего не сломается.

Ответы368506368508368509

235 22 мар, 16:52 235 1368494

>>1343135 (OP)
Хаскель внезапно годнота.
Хочу сделать какой нибудь проект но хз что делать.

236 22 мар, 17:15 236 1368506

>>1368477
>А если спуститься еще ниже, то окажется, что как раз никакого стейта нет, одни гейты да датафлоу
Как раз там вполне себе конкретные состояния же, на физическом уровне прям.

Ответы368576368585

237 22 мар, 17:16 237 1368508

>>1368477
>смоделировать твои побочные эффекты так, что при формальном описании языка они будут выглядеть (и вести себя, и описываться) как чистые функции
Вот так норм, странно что об этом в обучательных книгах не пишут. Даже в тех, что парадигмы программирования рассматривают не наблюдал такой оговорки.

Ответы368576

238 22 мар, 17:18 238 1368509

>>1368477
> Ты можешь смоделировать твои побочные эффекты так, что при формальном описании языка они будут выглядеть (и вести себя, и описываться) как чистые функции.
Как это делать? Я пиздос тупой и не понимаю как.

Ответы368558

239 22 мар, 17:18 239 1368510

Хаскель - это конечно интересно, но фронтенд компилятора (и тулинг в целом) - говно полное. Как и производительность.

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

Ответы368559370097

240 22 мар, 19:28 240 1368557

>>1367358
>Ну на деле современный функциональщик (хаскеллист) берёт либу типа mtl или capabilities (если он совсем продвинутый), ебенит монадный стек через трансформеры и дерайвит всевозможные инстансы, чтобы бесплатно получить комбинаторы и их писать. Я вообще не помню, когда бы мне приходилось писать прямо свой оригинальный инстанс монад или аппликативов.

В джаве тоже можно использовать библиотеки и фрэймворки, и особо над собственной реализацией паттеренов особо не заморачиваться

Ответы368835

241 22 мар, 19:30 241 1368558

>>1368509
М О Н А Д Ы
О
Н
А
Д
Ы

242 22 мар, 19:32 242 1368559

>>1368510
>>1367888

243 22 мар, 19:55 243 1368567

>>1367888

Напиши хоть один серьезный пример, где у хачкеля производительность на уровне плюсов

Ответы370097

244 22 мар, 20:09 244 1368576

>>1368506
Ну, я не специалист во всех этих сыркуитах, но нет, ты же там коннектишь входы@выходы, нанды в ксоры пихаешь, ну и так далее. На физическом уровне у тебя напряжение, чтобы из него мутабл целл сделать, это надо уже явно ее построить: https://en.wikipedia.org/wiki/Flip-flop_(electronics)

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

30 Кб, 1022x465
245 22 мар, 20:23 245 1368585

>>1368506
У меня от тебя rising edge of signal и clocks domain crossing

22 Кб, 400x400
246 23 мар, 10:51 246 1368796

>>1367888
Так нахуя же везде пишут "скачайте платформу, затем cabal install mamuebal zaloopa-14.88", даже без сандбоксов, если это 100% нерабочий вариант? Это юмор какойто или что? Я реально думал, что эти ваши хачкели просто не работоспособны, пока не попробовал stack.

Ответы368846370097

247 23 мар, 13:15 247 1368835

>>1368557
Звучит сомнительно, но я не джавист, так что не знаю.

248 23 мар, 13:17 248 1368836

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

249 23 мар, 14:18 249 1368846

>>1368796
>cabal install mamuebal
Проиграл.

Просто книжки же давно вышли.

Ответы369186

250 24 мар, 07:46 250 1369186

>>1368846
> Просто книжки же давно вышли.
Так я не про книжки. Вот, примеры новейшей документации: https://my-agda.readthedocs.io/en/latest/getting-started/installation.html
> cabal update
> cabal install Agda
https://github.com/idris-lang/Idris-dev/wiki/Installation-Instructions
> cabal update
> cabal install idris
И так далее...

Ответы369216369279370097

251 24 мар, 10:04 251 1369216

>>1369186
Если строго нужна установка пакета кабал в глобальный неймспейс, типо того же идрис, то просмотри в сторону nix. Он позволяет это сделать без геморроя и засорения глобального неймспейса чем-то кроме самого нужного пакета.

Ответы369299369316

252 24 мар, 13:24 252 1369279

>>1369186
Ну так это ж вообще агда, они ж там все ебанутые.

253 24 мар, 14:12 253 1369299

>>1369216
Плюсадин. Не знаю, зачем товарищи "академики" везде суют кабал, но Nix - это жизнь. Лучше потратить лишние пару суток на то, чтобы разобраться, но не гадить в систему и не испытывать проблем с зависимостями. Тут, правда, есть подвох, который заключается в отжирании никсом места в долговременной памяти, но если научиться чистить мусор, то и с этим можно жить.

Ответы369316

254 24 мар, 14:56 254 1369316

>>1369299
>>1369216
Двачую, сижу на никсосе и пишу хэлловорлды на хацкеле.
Правда я хз как запустить hie с вскодом из-под никс-шелла, чтобы он видел сторонние либы.

Ответы369326

255 24 мар, 15:11 255 1369326

>>1369316
Попробуй ghcWithPackages

Ответы369430

256 24 мар, 16:51 256 1369386

>>1367888
> скомпилируйте https://github.com/haskell/haskell-ide-engine (stack-ом,
Хоспаде, какой ебаный ад этот ваш HIE. Уже с час конпеляется, два разных GHC поставил, причем второй походу из исходников собирает. А не, вроде что-то высрал
Copied executables to /home/canterel/.local/bin:
- hie
- hie-wrapper
# stack (for hie-8.4.4)
# stack (for hie-8.4.4)
Build completed in 35m29s
И это еще не все, судя по гайду. Индусам, которые это вымутили, надо настучать хуем по лбу и отправить улицы подметать. Несколько гигов хуеты ради IDE-плагина, ебаный рот этого казино...

Ответы369387369392370097

257 24 мар, 16:52 257 1369387

>>1369386
Да уж, вот бы можно было просто скачать емакс с автокомплитом, форматтером и подсказками для типов.

Ответы370097

258 24 мар, 17:09 258 1369392

>>1369386
https://hie-nix.cachix.org/
вот бинарники же

Ответы369395

259 24 мар, 17:19 259 1369395

>>1369392
Пздц, буду знать, спс...

260 24 мар, 18:17 260 1369430

>>1369326
он у меня с ним и стоит. Компилировать и запускать свои хелловорлды с либами я могу, а хие кидает ошибку. Мне кажется, у меня в шелле один ghc, а хие использует другой.

Ответы369431370097

261 24 мар, 18:19 261 1369431

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

Ответы369442

262 24 мар, 18:34 262 1369442

>>1369431
а как это исправить?

Ответы369451

263 24 мар, 18:47 263 1369451

>>1369442
Не использовать HIE. Он всё равно тормозной и ломается

Ответы369460369461

264 24 мар, 18:54 264 1369460

>>1369451
> Не использовать HIE. Он всё равно тормозной и ломается
А что тогда использовать? Для хачкиля есть вообще нормальные иде?

265 24 мар, 18:55 265 1369461

>>1369451
ну а что тогда использовать?

Ответы369462369599

266 24 мар, 18:57 266 1369462

>>1369461
Emacs + haskell-mode + company-ghci

Ответы369466369853370600

267 24 мар, 19:07 267 1369466

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

Ответы369467

268 24 мар, 19:10 268 1369467

>>1369466
Нет

269 24 мар, 22:31 269 1369599

>>1369461
ghcid https://github.com/ndmitchell/ghcid

Ответы369853370600

270 25 мар, 16:41 270 1369853

>>1369462
>>1369599
На шиндовсе это работает?

Ответы369876369921369935

271 25 мар, 17:36 271 1369876

>>1369853
Ты ещё спроси, работает ли это на PS4

272 25 мар, 19:00 272 1369921

>>1369853
Ну, емакс точно работает и в винде

273 25 мар, 19:42 273 1369935

>>1369853
Да

Ответы370097

763 Кб, 722x947
274 25 мар, 23:44 274 1370097

>>1368095
Перлюдии больше лет, чем тебе, хуле ты хотел? И я уже писал, что в самой Прелюдии нет ничего криминального, просто есть некоторые грабли, на которые ньюфаги могут наступить, вроде ленивого foldl, ленивого IO, те же String, из названия которых ньюфаг может подумать, что это такой же String, что и в Джаве/Питоне, а потом очень неприятно удивиться производительности своей программы для обработки текста. Причем про всё это написано в документации, но как показывает практика вопросов на Stackoverflow, документацию никто не читает.

Что касается Скалы, то в ней настолько охуенная "стандартная прелюдия", например, библиотека коллекций, что только замена её на более вменяемую дала буст в 25% (https://www.scala-lang.org/blog/2017/02/28/collections-rework.html), причем авторы еще не пользовались специализацией. И при этом она существенно сложнее, со всеми своими CanBuildFrom и <хуйпизда>Like. Для ньюфагов самое оно, да.

>>1368510
>На скале и расте с этим все сильно лучше
Вот про тулинг в Скале ты мне не пизди, я с этим языком не первый год работаю. С фронэндом там тоже настолько всё лучше, что в Idea до сих пор не могут запилить провеку синтаксиса, которая не подчёркивала бы красным вполне валидные и компилируемые Скала-выражения. И что-то мне подсказывает, что в поддержку Scala в Idea было ввалено побольше ресурсов, чем в тот же HIE.

>>1368567
https://www.fpcomplete.com/blog/2017/07/iterators-streams-rust-haskell c_cheating там, конечно, победила, но только из-за векторизации, которую в Хаскель не завезли (в Rust, судя по результатам бенчей, тоже). Забавно, что автор неверно предположил, что это из-за конвертации в цикла downward-counting loop. Нет, конвертация downward-counting loop сама по себе такого выигрыша не даст, а вот векторизация примерно так себя и ведёт (учите ассемблер и читайте дампы). Вообще, если ты знаешь, как работает оптимизатор Хаскеля, не так сложно заставить его генерировать что тебе надо. Если ты не знаешь, как работает оптимизатор плюсов, то и на плюсах ты быструю программу хуй напишешь. По сложности они примерно одинаковы.

>>1368796
Так было до появления Стека.
>если это 100% нерабочий вариант?
Он не на 100% нерабочий. Если ты скачаешь ghc, установишь cabal-install, alex и happy (не знаю, входят ли они в поставку, несколько лет без Стека ничего не собирал), и просто сделаешь cabal install mamuebal zaloopa-14.88, то всё сработает. Проблемы начнутся позже. Дело в том, что не сэндбокснутый cabal генерирует план исходя из того, что у тебя уже установлено в гобоальной базе, обращаясь при этом к нелегальным интернет-казино для генерации случайных чисел. В итоге ты можешь закончить с таким набором пакетов, для которого невозможно удовлетворить констрейнты очередного инсталлируемого пакета. И тебе никто не сможет помочь, потому что у тебя будет свой уникальный набор версий пакетов, зависящий от того, в каком порядке ты их устанавливал. Чтобы таких ситуаций не возникало, придумали Stack - там фиксированный глобальный план, построенный для всех пакетов, включенных в Stackage.

>>1369186
В Агда-курятнике своя атмосфера. Там сидят 3.5 академика, видимо им похуй на проблемы ньюфагов.

>>1369386
Добро пожаловать в мир компилируемых языков. Если бы ты попробовал собрать llvm, или какой-нибудь еще плюсатый-полосатый, получил бы то же самое.
>два разных GHC поставил
По ходу ты ебанул stack ./install.hs cabal-build-all. Нет, не надо так делать, он тебе установит все версии GHC, придуманные с рождения Саймона Пейтон-Джонса. Запускай только "stack ./install.hs hie-8.4.4". И не надо делать "stack ./install.hs build-doc-8.4.4", документация есть в интернетах, не надо её локально билдить.

>>1369430
>Мне кажется, у меня в шелле один ghc, а хие использует другой.
Не ставь ghc отдельно! Только через stack. Запускать через stack ghci, он запустит тот, который у тебя указан в резолвере твоего проекта.

>>1369387
Можно. Если человек в состоянии собрать и настроить хаскельмод для емакса, то это уже не ньюфаг и мои советы ему нахуй не нужны.

>>1369935
Да, но после перехода на Linux у меня лично жопаболи стало меньше. Как я уже писал, GHC 8.6.3 выпустили с поломанный линкером под винду: https://gitlab.haskell.org/ghc/ghc/issues/16057 (правда уже починили, но осадочек остался). Просто вдумайся в это, продукт идёт в релиз с багом на платформе, заявленной как Tier 1 (бла-бла Tier 1 platforms are our top priority. We only release GHC when they all work). Я вообще охуел, для меня это сигнал о наличии какой-то серьёзной методологической проблемы. Остаётся надеяться, что это временная хуйня, связанная с недавним переходом к сокращённым релизным циклам и больше повторений подобных косяков не будет.

763 Кб, 722x947
274 25 мар, 23:44 274 1370097

>>1368095
Перлюдии больше лет, чем тебе, хуле ты хотел? И я уже писал, что в самой Прелюдии нет ничего криминального, просто есть некоторые грабли, на которые ньюфаги могут наступить, вроде ленивого foldl, ленивого IO, те же String, из названия которых ньюфаг может подумать, что это такой же String, что и в Джаве/Питоне, а потом очень неприятно удивиться производительности своей программы для обработки текста. Причем про всё это написано в документации, но как показывает практика вопросов на Stackoverflow, документацию никто не читает.

Что касается Скалы, то в ней настолько охуенная "стандартная прелюдия", например, библиотека коллекций, что только замена её на более вменяемую дала буст в 25% (https://www.scala-lang.org/blog/2017/02/28/collections-rework.html), причем авторы еще не пользовались специализацией. И при этом она существенно сложнее, со всеми своими CanBuildFrom и <хуйпизда>Like. Для ньюфагов самое оно, да.

>>1368510
>На скале и расте с этим все сильно лучше
Вот про тулинг в Скале ты мне не пизди, я с этим языком не первый год работаю. С фронэндом там тоже настолько всё лучше, что в Idea до сих пор не могут запилить провеку синтаксиса, которая не подчёркивала бы красным вполне валидные и компилируемые Скала-выражения. И что-то мне подсказывает, что в поддержку Scala в Idea было ввалено побольше ресурсов, чем в тот же HIE.

>>1368567
https://www.fpcomplete.com/blog/2017/07/iterators-streams-rust-haskell c_cheating там, конечно, победила, но только из-за векторизации, которую в Хаскель не завезли (в Rust, судя по результатам бенчей, тоже). Забавно, что автор неверно предположил, что это из-за конвертации в цикла downward-counting loop. Нет, конвертация downward-counting loop сама по себе такого выигрыша не даст, а вот векторизация примерно так себя и ведёт (учите ассемблер и читайте дампы). Вообще, если ты знаешь, как работает оптимизатор Хаскеля, не так сложно заставить его генерировать что тебе надо. Если ты не знаешь, как работает оптимизатор плюсов, то и на плюсах ты быструю программу хуй напишешь. По сложности они примерно одинаковы.

>>1368796
Так было до появления Стека.
>если это 100% нерабочий вариант?
Он не на 100% нерабочий. Если ты скачаешь ghc, установишь cabal-install, alex и happy (не знаю, входят ли они в поставку, несколько лет без Стека ничего не собирал), и просто сделаешь cabal install mamuebal zaloopa-14.88, то всё сработает. Проблемы начнутся позже. Дело в том, что не сэндбокснутый cabal генерирует план исходя из того, что у тебя уже установлено в гобоальной базе, обращаясь при этом к нелегальным интернет-казино для генерации случайных чисел. В итоге ты можешь закончить с таким набором пакетов, для которого невозможно удовлетворить констрейнты очередного инсталлируемого пакета. И тебе никто не сможет помочь, потому что у тебя будет свой уникальный набор версий пакетов, зависящий от того, в каком порядке ты их устанавливал. Чтобы таких ситуаций не возникало, придумали Stack - там фиксированный глобальный план, построенный для всех пакетов, включенных в Stackage.

>>1369186
В Агда-курятнике своя атмосфера. Там сидят 3.5 академика, видимо им похуй на проблемы ньюфагов.

>>1369386
Добро пожаловать в мир компилируемых языков. Если бы ты попробовал собрать llvm, или какой-нибудь еще плюсатый-полосатый, получил бы то же самое.
>два разных GHC поставил
По ходу ты ебанул stack ./install.hs cabal-build-all. Нет, не надо так делать, он тебе установит все версии GHC, придуманные с рождения Саймона Пейтон-Джонса. Запускай только "stack ./install.hs hie-8.4.4". И не надо делать "stack ./install.hs build-doc-8.4.4", документация есть в интернетах, не надо её локально билдить.

>>1369430
>Мне кажется, у меня в шелле один ghc, а хие использует другой.
Не ставь ghc отдельно! Только через stack. Запускать через stack ghci, он запустит тот, который у тебя указан в резолвере твоего проекта.

>>1369387
Можно. Если человек в состоянии собрать и настроить хаскельмод для емакса, то это уже не ньюфаг и мои советы ему нахуй не нужны.

>>1369935
Да, но после перехода на Linux у меня лично жопаболи стало меньше. Как я уже писал, GHC 8.6.3 выпустили с поломанный линкером под винду: https://gitlab.haskell.org/ghc/ghc/issues/16057 (правда уже починили, но осадочек остался). Просто вдумайся в это, продукт идёт в релиз с багом на платформе, заявленной как Tier 1 (бла-бла Tier 1 platforms are our top priority. We only release GHC when they all work). Я вообще охуел, для меня это сигнал о наличии какой-то серьёзной методологической проблемы. Остаётся надеяться, что это временная хуйня, связанная с недавним переходом к сокращённым релизным циклам и больше повторений подобных косяков не будет.

Показать весь текст
Ответы370134370156370175370443

275 26 мар, 01:40 275 1370134

>>1370097
>Не ставь ghc отдельно! Только через stack. Запускать через stack ghci, он запустит тот, который у тебя указан в резолвере твоего проекта.
Что-то стэк кидается ошибками на моем никсосе, ну нахуй его, буду сидеть с вима через nix-shell. Мб когда-нибудь послушаюсь твоего совета и попробую стэк, но пока мне и nixa хватает.

Ответы370154

276 26 мар, 02:13 276 1370141

Почему все функции в хацкеле считаются чистыми? Почему, если функцию обернуть в монаду, то она станет чистой? К примеру, вызовем readFile с одинаковым инпутом, но потом удалим файл. Ведь хоть снаружи результаты этих функций выглядят одинаково Maybe a, внутри они разные Just a | Nothing, значит функция дала разные результаты под одинаковый инпут.

Как я понял, монада это тайпклас, да? А IO и Maybe его реализуют.

Ответы370155

277 26 мар, 05:29 277 1370154

>>1370134
Ясен пень, если использовать nix + cabal, никакие стэки не нужны вообще.

278 26 мар, 05:31 278 1370155

>>1370141
>Как я понял, монада это тайпклас, да? А IO и Maybe его реализуют.
Да.
>Почему, если функцию обернуть в монаду, то она станет чистой?
Потому что монадические вычисления следует считать обыкновенными структурами данных. Значение типа IO a - это как бы "список дел", который ты можешь куда-то передать или откуда-то получить. С этой точки зрения, ты просто вычисляешь конечный список дел main чистыми функциями, а потом передаёшь его на исполнение в рантайм.

279 26 мар, 05:33 279 1370156

>>1370097
>Если человек в состоянии собрать и настроить хаскельмод для емакса, то это уже не ньюфаг
Если ньюфаг не может прочитать инструкцию и сделать по инструкции, то мне страшно представить, что такое "ньюфаг". Это тот, для кого надо туториалы начинать со слов "включите компьютер"?

280 26 мар, 08:00 280 1370175

>>1370097
>>1367888

Пиздец. Просто пиздец. У меня нет слов.

https://www.youtube.com/watch?v=ZlCed-6GkAM

281 26 мар, 16:10 281 1370430

А есть чо по ATOM'у? У меня на нем и Идрис и агда работают, а для хаскелля нагуглил какую-то ебань, оно мне весь атом перепердолило и вроде так нормально и не заработало.

Ответы370437

282 26 мар, 16:28 282 1370437

>>1370430
Даже у идриса тулинг лучше, чем у хацкеля

Ответы370600

283 26 мар, 16:47 283 1370443

>>1370097
>Перлюдии больше лет, чем тебе, хуле ты хотел?
Да дело даже не в этом, как мне кажется, а в том, что она изначально для другого делалась.

>замена её на более вменяемую дала буст в 25%
Ну давайте еще байтики и миллисекунды считать, ага.

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

Ответы396151

284 26 мар, 22:42 284 1370600

>>1369599
> ghcid https://github.com/ndmitchell/ghcid
Шляпа.
>>1369462
> Emacs + haskell-mode
А вот это годно. Работает на винде, проверил.
>>1370437
> Даже у идриса тулинг лучше, чем у хацкеля
Для Идриса в атоме вообще охуеннейшая интеграция + все ставится в несколько кликов мышкой без малейшего пердолинга, при том, что Идрис интересен 3.5 аутистам. А для хачкеля под атом вообще ничего хорошего, при том что на нем полно народу пишет. Парадокс.

285 27 мар, 17:48 285 1370895

Здраститя. Такой вопрос - как одной коммандой загрузить все модули либы или как это правильно назвать? Пример - http://hackage.haskell.org/package/llvm-hs-pure там куча модулей:
Modules
LLVM
LLVM.AST
LLVM.AST.AddrSpace
LLVM.AST.Attribute
LLVM.AST.COMDAT
LLVM.AST.CallingConvention
бла бла... Вот как их одной коммандой в IDE загрузить? Я к примеру делаю :m LLVM.AST, но функции из других модулей не доступны, пока их так же явно через :m не загрузишь.

Ответы370900

286 27 мар, 17:55 286 1370900

>>1370895
А нахуя? У тебя LLVM.AST предоставляет апишечку к этим конструкторам.

Ответы370905

287 27 мар, 18:00 287 1370905

>>1370900
> У тебя LLVM.AST предоставляет апишечку к этим конструкторам.
Так функции не видны, пока явно не загрузишь модуль, где они прописаны. Я так и подумал, что если LLVM.AST загрузить, типизация всех его подмодулей так же будет доступна. Проверил - хуй там плавал.

288 27 мар, 19:10 288 1370946

Haskell-mode на убунте не работает. Пишет, нет такой программы ghc. И на самом деле, хачкель, поставленный через стек, запускается только через stack ghci. И как быть? Прописывание полного пути до ghc не помогает. На винде все просто работает, а с бубунтой чет борода...

Ответы370971375280

289 27 мар, 19:48 289 1370971

>>1370946
(setq haskell-process-type 'stack)
Кэп

Ответы370987370989

290 27 мар, 20:24 290 1370987

>>1370971
И куда конкретно в .emacs это вставлять? Пробовал по-разному, ошибку пишет

291 27 мар, 20:30 291 1370989

>>1370971
Нашел, на самом деле нужно писать (setq haskell-process-type 'stack-ghci)

292 5 апр, 08:03 292 1375280

>>1370946
На что тебе haskell-mode? Есть же intero

293 5 апр, 18:32 293 1375559

>>1343135 (OP)
Как в хаскеле сделать переадресацию с одного адреса на другой? В пхп всё просто
header('Location: http://google.com');exit;
А тут как?

Ответы375593375648375708

294 5 апр, 19:45 294 1375593

>>1375559
Какие библиотеки/фреймворки ты используешь?

295 5 апр, 21:50 295 1375648

>>1375559
return $ Headers [Location "http://google.com"]

296 5 апр, 22:59 296 1375708

>>1375559
Используй монады.

297 6 апр, 09:01 297 1375826

Есть у меня один старый проект на хачкиле, в котором код полное говно. Хочется его зарефакторить красиво. Что можно почитать на тему проектирования и архитектуры?

Ответы375828375830

298 6 апр, 09:02 298 1375828

>>1375826
parsonsmatt.org

Ответы375833

299 6 апр, 09:04 299 1375830

>>1375826
https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html
Конкретно это, например.
https://www.tweag.io/posts/2018-10-04-capability.html
Новая хорошая библиотека вместо mtl.

Ответы375833

300 6 апр, 09:08 300 1375833

>>1375830
>>1375828
Спасибо, братюни.

301 7 апр, 14:19 301 1376687

Скажите, у функционалки есть будущее или императивка все еще рулит?

Ответы376691

302 7 апр, 14:25 302 1376691

>>1376687
>Скажите, у функционалки есть будущее или императивка все еще рулит?
Функц. Программирование началось еще с 58 года, 4 года после выхода Фортрана. Как видишь, живет, но хуево живет.
Будущее есть, но всегда второй эшелон

303 10 апр, 07:52 303 1378156

>>1347012
> спрашивает "что за буква А перевёрнутая?"

Сука, как же я проорал...

Ответы378165

304 10 апр, 08:25 304 1378165

>>1378156
Это я спрашивал, кстати.
>>1346572

305 10 апр, 08:55 305 1378175

>>1343135 (OP)
Правда ли, что все хачкелисты - пидоры, а ровные пацаны используют эрланг?

Ответы378176378180

306 10 апр, 09:03 306 1378176

>>1378175
Сохацкий, це ті?

Ответы378177

sage 307 10 апр, 09:08 307 1378177

>>1378176
Нет, я Платов

308 10 апр, 09:27 308 1378180

>>1378175
На эроанге пишут только опердени. Это не хорошо и не плохо, просто так сложилось.

Ответы378181

309 10 апр, 09:30 309 1378181

>>1378180
Хм, так это значит, что всегда есть работа.

310 13 апр, 13:16 310 1380248

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

Ответы380506380882382154387292

311 13 апр, 22:09 311 1380506

>>1380248
Ты прав, молодец, возьми с полки пирожок.
/дискас

312 14 апр, 17:37 312 1380882

>>1380248
t. Иван, отчислен после первого семестра мехмата хуй-пиздюйского государственного университета

112 Кб, 706x471
313 16 апр, 09:54 313 1382154

>>1380248
> Теория типов говно, парадокс Рассела выдуман, а пропозициональной логики достаточно чтобы описать любую формальную символьную систему. Дискасс.

314 21 апр, 12:34 314 1385299

Чем парсить HTML и потом кверить его, чтобы было быстро?

315 21 апр, 12:39 315 1385301

>>1344026
Будущее за гибридами.
https://github.com/carp-lang/carp

Ответы385852387291

316 21 апр, 15:37 316 1385852

>>1385301
Тащем-то карп - это кложа с линейными типами и компиляцией в нативный код, какие ж тут манатки?

317 23 апр, 14:20 317 1387291

>>1385301
Невозможно создать гибрид самолёта и дилдака. Гибридный ЯП - это как летающий хуй, выглядит смешно, но ни по одному назначений его не применить.

Ответы395633

318 23 апр, 14:23 318 1387292

>>1380248
Любую программу можно представить в виде достаточно большой хеш-таблицы из аргументов в результаты, дискасс.

Ответы387334387357

319 23 апр, 15:59 319 1387334

>>1387292
Ты не в том направлении думаешь... В словосочетании "язык программирования" надо деконструировать "программирование", а не "язык". Уася, языковые игры, врубайся.

Ответы387336

320 23 апр, 16:04 320 1387336

>>1387334
язык в попу тык

321 23 апр, 16:49 321 1387357

>>1387292
Ты только что проблему остановки

322 2 мая, 21:17 322 1393163

Анон, посоветуй какие-то книги по функциональщине в целом без привязки к синтаксису

Ответы393279

323 3 мая, 08:02 323 1393279

>>1393163
HtDP, если совсем начинающий, SICP, если продолжающий. Там используется язык Scheme, но в нём почти нет синтаксиса.

19,9 Мб, mp4,
1280x720, 3:59
sage 324 6 мая, 18:09 324 1394833

Было уже?

36 Кб, 351x403
325 7 мая, 02:39 325 1394987

Пытаюсь реализовать линкед лист, но у меня возникло пара вопросов:
1) Что с производительностью? Хацкиль точно оптимизирует пикрл? код не проверял, но вроде все знают зипперы.
2) Какой есть аналог указателям? Например, я хочу удалить все от элемента А до элемента Б. Пока что приходит в голову только костыль в виде того, что каждый элемент должен быть в паре со своим рандомно сгенереным числом, но разве нет варианта по-проще? бля, какие нахуй указатели в сикуенс, который на бинарных деревьях основан. Хотя, у него сложность "следущего элемента" О(1). Ну а с обычными листами хоть что?

3,9 Мб, 460x258
326 8 мая, 13:15 326 1395633

>>1387291
>>самолёта и дилдака

Щенок что ты вообще знаешь о жизни?

327 8 мая, 20:56 327 1395872

Почему Хаскел, а не Standard ML? Я посмотрел на ML, и мне он показался круче хаскеля. Более простой, более предсказуемый, более чистый язык без лишнего.

Ответы396164396222

328 9 мая, 02:12 328 1396151

>>1370443
>Да дело даже не в этом, как мне кажется, а в том, что она изначально для другого делалась.

Почему для другого? Как раз для того, чтобы предоставить некий дефолтный набор функций. Просто в 95-м Хаскель был PoC, а потом, когда на нём стали писать коммерческие приложения, требования слегка изменились. Так появился RIO.

>Ну давайте еще байтики и миллисекунды считать, ага.
Давайте. У меня кластер на 200 машин. Если вывод в прод какой-нибудь хуйни требует докупки ещё 200 машин, байтики и миллисекунды начинают значить.

329 9 мая, 02:25 329 1396164

>>1395872
Потому что ML сдох. Современный Хаскель - это GHC, инраструктура, куча либ, мощнейший академический бэкграунд. Что мы имеем в SML? Да нихуя.

Ответы396206

330 9 мая, 03:18 330 1396206

>>1396164
>Что мы имеем в SML?
Производительный компилятор MLton, простой и мощный язык без лишнего, либ может по меньше, но они тоже есть.

>>1396164
>мощнейший академический бэкграунд
Что это значит? Вообще то ML предок Хаскеля. Он старше, его исследованиям занималось больше ученых. Можно поспорить где академический бекграунд мощнее. Хотя мне непонятно что ты имел ввиду. Хаскель создавали все же не такие авторитетные личности как в случае с ML.

Ответы397331

331 9 мая, 05:08 331 1396222

>>1395872
>более чистый язык
Чистый язык - это термин с конкретным значением (язык с чистыми функциями), и в том-то и прикол, что Haskell чистый язык, а SML нет.
То есть твой вопрос сводится к "нахуя нужны чистые языки". Ответ на него - нахуй не нужны, но ты ошибся тредом, потому что здесь маньки, которым они зачем-то нужны.

Ответы396235396236

332 9 мая, 08:03 332 1396235

>>1396222
>Чистый язык
Я не писал про чистые функции. Контекст смотри. Ты вырвал 2 слова из предложения. Чистый язык без лишнего, то есть не перегруженный фичами как C++. Хаскель как ML, только сверху еще наворочено всякого. Только нужно ли оно. Выглядит как C++ по сравнению с Си.

Мне кажется ты слишком агрессивно все воспринимаешь. Мне нравится минимализм. SML выглядит намного более минималистичным. Вот я спросил, почему Хаскель. Есть конечно такие кому нравится джава и C++, мне это сложно понять

Ответы396240397331

333 9 мая, 08:06 333 1396236

>>1396222
Если кратко, нужна ли вся та лишняя сложность, что есть в Хаскеле, но нет в SML? Вот есть Лиспы, они имеют очень мало фич, но очень гибкие и мощные. Зачем усложнять, теряется же гибкость, появляется ненужная сложность?

334 9 мая, 08:42 334 1396240

>>1396235
>Вот я спросил, почему Хаскель.
А я тебе ответил. Функциональщики носятся с чистотой как с отче наш.
Если ты захочешь сделать из ML чистый язык, получишь язык чуть лучше хаскеля (потому что хаскель как с++ развивался эволюционно и постепенно копит в себе кучу легаси-говна типа поломанной прелюдии), но между выбором перепиливать тонну легаси с нуля или потерпеть недостатки люди всегда выбирают легаси, вот хаскель и превращается потихоньку в такой легаси-язык. А SML не превращается, потому что на нем никто не пишет. Ведь если тебе достаточно энергичного императивного языка, у тебя появляются другие критерии помимо хорошей системы типов или как ты говоришь минималистичности.

Ответы396243396502397331

335 9 мая, 08:56 335 1396243

>>1396240
>А SML не превращается, потому что на нем никто не пишет.
Не поэтому. А потому что он не развивается так как Хаскель. Последний стандарт 97 года. Хаскель вообще то экспериментальный язык. Он как полигон для испытаний, на нем испытывают новые фичи. Удачные потом Microsoft Research перетаскивает себе. Это на мой взгляд плохо.

На мой взгляд современные тенденции идут не туда куда следует. В языки тащат всякий хлам, но они не становятся мощнее от этого.

Ответы399611

336 9 мая, 14:29 336 1396368

Алё, борщехлёбы, а вы квиксорт на хаскеле написать сумеете?

10 Кб, 1084x157
337 9 мая, 18:24 337 1396502

>>1396240
Зацени как выгдядит пузырьковая сортировка на SML. Это самый короткий и красивый код пузырька который я видел.

Ответы396720396734

338 10 мая, 10:06 338 1396720

>>1396502
И? На хаскеле он будет выглядеть так же.

Ответы396753

339 10 мая, 10:32 339 1396734

>>1396502
Наебка с "красивыми сортировками на функциональных языках" давно уже переварена и высрана.

Ответы396754

340 10 мая, 11:09 340 1396753

>>1396720
Напиши посмотрим. Код будет страшнее выглядеть.

Ответы396905

341 10 мая, 11:10 341 1396754

>>1396734
В смысле?

342 10 мая, 14:34 342 1396905

>>1396753
Не будет вот этой линейки вертикальной просто. Столько же скобок, всё идентично.

Ответы396909

20 Кб, 1203x187
343 10 мая, 14:35 343 1396909

>>1396905
Вот так.

Ответы398823

344 11 мая, 01:34 344 1397331

>>1396206
>Производительный компилятор MLton
Он быстрее GHC? Что-то сомневаюсь, предлагай тесты, сравним.
>Вообще то ML предок Хаскеля.
Ну да. В Хаскеле учли опыт ML, это просто более современный язык, вобравший в себя лучшие практики функциональщины.

>>1396235
>Хаскель как ML, только сверху еще наворочено всякого. Только нужно ли оно. Выглядит как C++ по сравнению с Си.
Ты, похоже, плохо знаешь Хаскель. В том-то и дело, что "сверху еще наворочено всякого" довольно грамотно, так, что добавляемая фича не ломает язык, не конфликтует с другими фичами, зачастую вообще ортогональна другим фичам, а если в чём-то их дублирует, то всегда есть кейсы, когда использование именно этой фичи удобнее аналога.

Да, есть спорные решения. Например, наличие асинхронных исключений и совмещение wait логики c resource acquisition. В итоге мы имеем mask и uninterruptibleMask, это пиздец как сложно, но, в итоге, осилили же, теперь есть https://www.stackage.org/package/unliftio и можно просто писать код, который будет работать. Стоило ли оно того - х.з. Но мне, как программисту, весьма удобно, что в языке есть рабочий механизм асинхронных исключений и либа, позволяющая корректно совмещать асинхронные исключения и управление ресурсами. Да, они изрядно поебались чтобы сделать это правильно, зато я теперь не ебусь.

Другой пример - это выбор MVar в качестве примитива синхронизации. На мой взгляд, можно было бы взять IVAr и AtomicRef в качестве примитивов, и уже через них выразить MVar, как это делают некоторые любители Cats на Скале (тем более, MVar в 90% случаев не нужен и опасен). Ну когда в data-ivar операции над IVar (более простой структурой) выражают через MVar (более сложную), это, как минимум, странно выглядит. С другой стороны, я не системный программист и не могу сказать, какой оверхед по производительности будет в случае конструирования мьютекса из IVAr-а и AtomicRef-а (как это делают кошкоёбы, которым, по сути, похуй на производительность, кошки изначально сливают Хаскелю на порядки). Возможно, он будет существенным и запил MVar-ов был оправданным.

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

>>1396240
>Функциональщики носятся с чистотой как с отче наш.
Не зря носятся. Есть два столпа функционального программирования. Это ссылочная прозрачность и наличие оптимизации хвостовых вызовов. Если этого нет, ты просто не построишь нормальный функциональный язык, позволяющий полноценно применять функциональные паттерны и получать на выходе производительный код. Всякие мультипарадигмы и попытки эмулировать функциональщину в языках без ссылочной прозрачности и на платформах, не поддерживающих TCO, потому и сосут, что там нет этой основы.

Вот возьми ту же Скалу, что с ней не так? Система типов хуёвая? Да нет, многое, что есть в Хаскеле, в Скале прекрасно эмулируется, на тот же Cats и ZIO посмотри. Но всё это, сука, неюзабельно, неудобно, тормозит, требует кучу костылей для применения на практике и все эти костыли полностью нивелируют преимущества функционального подхода. Программируя на Скале в функциональном стиле ты, буквально, воюешь с собственным инструментом, а не используешь его преимущества.

В итоге мы получаем: "If scala was the only language I had to think in, I'd think functional programming was a bad idea that didn't scale, too." А разгадка проста: отсутствие TCO и ссылочной прозрачности просто не позволяют создать язык, допускающий использование функциональных паттернов без костылей и ебли.

344 11 мая, 01:34 344 1397331

>>1396206
>Производительный компилятор MLton
Он быстрее GHC? Что-то сомневаюсь, предлагай тесты, сравним.
>Вообще то ML предок Хаскеля.
Ну да. В Хаскеле учли опыт ML, это просто более современный язык, вобравший в себя лучшие практики функциональщины.

>>1396235
>Хаскель как ML, только сверху еще наворочено всякого. Только нужно ли оно. Выглядит как C++ по сравнению с Си.
Ты, похоже, плохо знаешь Хаскель. В том-то и дело, что "сверху еще наворочено всякого" довольно грамотно, так, что добавляемая фича не ломает язык, не конфликтует с другими фичами, зачастую вообще ортогональна другим фичам, а если в чём-то их дублирует, то всегда есть кейсы, когда использование именно этой фичи удобнее аналога.

Да, есть спорные решения. Например, наличие асинхронных исключений и совмещение wait логики c resource acquisition. В итоге мы имеем mask и uninterruptibleMask, это пиздец как сложно, но, в итоге, осилили же, теперь есть https://www.stackage.org/package/unliftio и можно просто писать код, который будет работать. Стоило ли оно того - х.з. Но мне, как программисту, весьма удобно, что в языке есть рабочий механизм асинхронных исключений и либа, позволяющая корректно совмещать асинхронные исключения и управление ресурсами. Да, они изрядно поебались чтобы сделать это правильно, зато я теперь не ебусь.

Другой пример - это выбор MVar в качестве примитива синхронизации. На мой взгляд, можно было бы взять IVAr и AtomicRef в качестве примитивов, и уже через них выразить MVar, как это делают некоторые любители Cats на Скале (тем более, MVar в 90% случаев не нужен и опасен). Ну когда в data-ivar операции над IVar (более простой структурой) выражают через MVar (более сложную), это, как минимум, странно выглядит. С другой стороны, я не системный программист и не могу сказать, какой оверхед по производительности будет в случае конструирования мьютекса из IVAr-а и AtomicRef-а (как это делают кошкоёбы, которым, по сути, похуй на производительность, кошки изначально сливают Хаскелю на порядки). Возможно, он будет существенным и запил MVar-ов был оправданным.

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

>>1396240
>Функциональщики носятся с чистотой как с отче наш.
Не зря носятся. Есть два столпа функционального программирования. Это ссылочная прозрачность и наличие оптимизации хвостовых вызовов. Если этого нет, ты просто не построишь нормальный функциональный язык, позволяющий полноценно применять функциональные паттерны и получать на выходе производительный код. Всякие мультипарадигмы и попытки эмулировать функциональщину в языках без ссылочной прозрачности и на платформах, не поддерживающих TCO, потому и сосут, что там нет этой основы.

Вот возьми ту же Скалу, что с ней не так? Система типов хуёвая? Да нет, многое, что есть в Хаскеле, в Скале прекрасно эмулируется, на тот же Cats и ZIO посмотри. Но всё это, сука, неюзабельно, неудобно, тормозит, требует кучу костылей для применения на практике и все эти костыли полностью нивелируют преимущества функционального подхода. Программируя на Скале в функциональном стиле ты, буквально, воюешь с собственным инструментом, а не используешь его преимущества.

В итоге мы получаем: "If scala was the only language I had to think in, I'd think functional programming was a bad idea that didn't scale, too." А разгадка проста: отсутствие TCO и ссылочной прозрачности просто не позволяют создать язык, допускающий использование функциональных паттернов без костылей и ебли.

Показать весь текст
Ответы397390398258

345 11 мая, 09:56 345 1397390

>>1397331
>Он быстрее GHC?
Думаю да.

>>1397331
>это просто более современный язык, вобравший в себя лучшие практики функциональщины
100500 ненужной шелухи

>>1397331
>оптимизации хвостовых вызовов.
Это можно запилить с помощью трамплинов и другими способами.

>>1397331
>Всякие мультипарадигмы и попытки эмулировать функциональщину в языках без ссылочной прозрачности и на платформах, не поддерживающих TCO, потому и сосут, что там нет этой основы.
Ой, да неужели. А F# и не знал.

>>1397331
>ссылочная прозрачность
В любом языке это есть, даже в нефункциональных. Везде можно писать чистые функции.

Ответы398324

346 12 мая, 12:58 346 1398258

>>1397331
>добавляемая фича не ломает язык, не конфликтует с другими фичами
Кек, у меня от тебя {-# LANGUAGE ExistentialManyaMiroque #-}

Ответы398329

347 12 мая, 14:51 347 1398324

>>1397390
>Думаю да.
А я думаю, нет. Поэтому и говорю, предлагай бенч, в которомы ты думаешь OCaml будет быстрее и мы проверим.
>100500 ненужной шелухи
Думаю тебе не составит труда привести пару примеров.
>Это можно запилить с помощью трамплинов
Ну в Скале так и делают. В итоге в "If scala was the only language I had to think in, I'd think functional programming was a bad idea that didn't scale, too."
>А F# и не знал.
А F# сосёт, там даже еще печальнее, чем в Скале дела обстоят.
> Везде можно писать чистые функции.
Ссылочная прозрачность - это не "можно писать чистые функции".

Вообще, сдаётся мне, что у тебя просто нет опыта работы с ФЯ, просто какие-то отрывочные знания и большо желание поспорить.

Ответы398518398523

348 12 мая, 14:54 348 1398329

>>1398258
Манямирок тут только у школоты, которая нихуя ни знает ни Хаскеля, ни Скалы, ни F#, не использовала эти языки в продакшене, не писала на них сколь угодно производительного кода, не разбирается в том, как устроены ФЯ, но зато очень хочет поспорить.

Ответы398950

400 Кб, 720x672
349 12 мая, 14:54 349 1398330

Поясните за этот ваш stackage. Вот в конце апреля вышла новая агда. Когда её добавят в новый lts? Как это вообще делается?

Ответы398688398693

350 12 мая, 19:34 350 1398518

>>1398324
>предлагай бенч, в которомы ты думаешь OCaml будет быстрее
Не OCaml, MLton. Это реализация SML.

>>1398324
>Думаю тебе не составит труда привести пару примеров.
Особо Хаскель не знаю, да и давно его видел. Он же отличается от SML? Вот чем отличается то я и имею ввиду. Мне это кажется лишним. Нравятся минималистичные языки.

>>1398324
>F# сосёт
По каким это параметрам? Экосистема у него круче намного. Его можно юзать на Net core + отдельно. У него 2 реализации. Есть крутейший веб-фреймворк на нем написанный https://try.websharper.com/ реактивный, изоморфный, очень быстрый. Пару примеров https://try.websharper.com/example/pool-game https://websharper-samples.github.io/2048/

>>1398324
>Ссылочная прозрачность - это не "можно писать чистые функции".
Что это тогда? Это же свойство чистых функций.

>>1398324
>Вообще, сдаётся мне, что у тебя просто нет опыта работы с ФЯ, просто какие-то отрывочные знания и большо желание поспорить.
Если по твоему я спорю, то и ты тоже. Ты спросил я ответил. Может ты и писал больше меня, хотя этого я точно не знаю, но это не означает что все твои слова правильные. Типа ты безошибочный и все знаешь?

Ответы398527398759

351 12 мая, 19:41 351 1398523

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

Ответы398528398759

352 12 мая, 19:44 352 1398527

>>1398518
А нахуй f# нужен? Чистоты как в хацкеле нет, тайпклассов нет, а лямбды с кортежами и в шарпе есть.
мимо

Ответы398604398759

353 12 мая, 19:45 353 1398528

>>1398523
Попробуй nix

Ответы398578

354 12 мая, 20:18 354 1398578

>>1398528
Что это? Из статических компилируемых языков мой фаворит SML.

Ответы398709

355 12 мая, 20:43 355 1398604

>>1398527
Сравнивать F# язык из ML семейства с C#? Сишарпу не тягаться с ним. Если даже не сранивать сам язык, даже экосистема у F# богаче.

356 12 мая, 22:51 356 1398688

>>1398330
>Когда её добавят в новый lts?
Никогда. Агдаёбам похуй.

>Как это вообще делается?
Берёшь и добавляешь Агду в https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml указав себя в качестве мейнтейнера. Но после этого, если Агда вдруг не собирается в текущем плане, тебе будут сыпать емайлы с просьбой поправить зависимости. А так как ты сам её не мейнтейнишь, тебе придётся делать форк, править зависимости, делать пул-реквест и писать: "дорогие мои агдаёбы, пожалуйста примите мой пул-реквест и залейте новую версию на хакадж!"

Вообще, чужие пакеты мейнтейнить - дело неблагодарное. Если самим агдоёбам похуй - пусть идут лесом. Но если ты вдруг внезапно угорел по Агде, готов её как-то там развивать и тратить на неё время, советую снача стать официальным мейнтейнером самой Агды, с правом хуярить в их master и выкатывать релизы. После этого ты можешь добавить её в stackage, и если там вдруг что-то не будет собираться, ты сможешь сам поправить зависимости и сам выкатить новую версию.

Ответы398836

357 12 мая, 22:55 357 1398693

>>1398330
>Вот в конце апреля вышла новая агда.
Что на ней пишут?

Ответы398708398711

358 12 мая, 23:11 358 1398708

>>1398693
А что на хаскеле пишут?

359 12 мая, 23:28 359 1398709

>>1398578
>Что это?
Пакетный менеджер.

360 12 мая, 23:29 360 1398711

>>1398693
Автоматические доказательства математических теорем

Ответы398793

361 12 мая, 23:56 361 1398759

>>1398518
>Не OCaml, MLton. Это реализация SML.
Ну т.е. ты предполагаешь, что SML может обскакать GHC, но на каких примерах ты не знаешь. Что ж, смелая гипотеза, учитывая, сколько человеколет въебашили в GHC. Мне самому было бы интересно на это посмотреть, поэтому и спросил за бенч. Но раз нет, так нет.

>Особо Хаскель не знаю
Но в нём 100500 лишней шелухи. Охуеть. Я сейчас напишу, что в SML много лишней шелухи по сравнению с Хаскелем. Я ведь на SML ни строчки не написал, но SML отличается от Хаскеля, значит там 100500 лишней шелухи. Ты ебанутый?

>По каким это параметрам?
По возможности реализации функциоанльных паттернов программирования. Если Scala позволяет их хотя-бы как-то эмулировать (хотя это не очень полезно на практике, ведь мало запилить какую-нибудь монаду, надо еще чтобы она работала не сильно медленнее аналогичного кода в императивном стиле, иначе она нахуй не нужна в продакшене), то F# тупо не позволяет всё это делать. Там тупо нет higher-rank polymorphism. Т.е. если в Скале можно делать какое-то подобие абстракции контекста исполнения (скалаёбы называют это tagless final), то в F# гвоздями прибитые к .net дженерики и очень частная попытка в computation expressions. Авторы F# так и заявили "мы не будем это делать, потому что платформа .net это не поддерживать а ручками мы это делать не хотим" лень гуглить, но если ты мне не веришь, могу постараться

>Экосистема у него круче намного.
Ой да в пизду, какая там экосистема?

>Что это тогда?
Это возможность заменять выражение его значением и наоборот без изменения семантики программы. Это важно для оптимизации функционального кода. Потому что в функциоальной программе объявляется много промежуточных структур данных используются всякие паттен-матчинги, и если нет ссылочной прозрачности, то всё это говно надо реально реифицировать. А если ссылочная прозрачность есть, это открывает множество возможностей дефорестации, stream fusion и т.п. Хаскель это активно эксплуатирует, причем на уровне компилятора, поэтому на нём можно просто писать в функциональном стиле. В Scala/F# любой биндинг в монадке - это создание замыкания, реального объекта в run-time + indirect call. Соответсвенно, у функцильональщиков, которые пишут на Scala/F#, возникает резонный вопрос: а нахуй вообще нужно функциональное программирование, если в реальном коде нужно забыть про все эти плюшки и писать как на старой доброй джаве/сишке? Ну да, на Скале можно побаловаться cats/scalaz, но именно что побаловаться, потому что такой подход будет заведомо проигрывать по производительности императивному коду на том же языке, следовательно не позволит использовать преимущества ФП.

>>1398523
>Stack в Хаскеле не понравился. Мощный конечно, но переусложненный
Заведи козу Maven-а покушай, или sbt. Как накушаешься, возвращайся к stack.

>>1398527
>А нахуй f# нужен?
Испытательный полигон для C#. Сначала фишки проверяют на более динамичном F#, который не в мейнстриме, где не надо флюродросить энтерпрайзу обратной совместимостью и где более квалифицированные программисты если что будут более аргументированно закидывать говном. Потом, если проканало, вводят фишки в C#. Больше он нахуй ни для чего не нужен.

361 12 мая, 23:56 361 1398759

>>1398518
>Не OCaml, MLton. Это реализация SML.
Ну т.е. ты предполагаешь, что SML может обскакать GHC, но на каких примерах ты не знаешь. Что ж, смелая гипотеза, учитывая, сколько человеколет въебашили в GHC. Мне самому было бы интересно на это посмотреть, поэтому и спросил за бенч. Но раз нет, так нет.

>Особо Хаскель не знаю
Но в нём 100500 лишней шелухи. Охуеть. Я сейчас напишу, что в SML много лишней шелухи по сравнению с Хаскелем. Я ведь на SML ни строчки не написал, но SML отличается от Хаскеля, значит там 100500 лишней шелухи. Ты ебанутый?

>По каким это параметрам?
По возможности реализации функциоанльных паттернов программирования. Если Scala позволяет их хотя-бы как-то эмулировать (хотя это не очень полезно на практике, ведь мало запилить какую-нибудь монаду, надо еще чтобы она работала не сильно медленнее аналогичного кода в императивном стиле, иначе она нахуй не нужна в продакшене), то F# тупо не позволяет всё это делать. Там тупо нет higher-rank polymorphism. Т.е. если в Скале можно делать какое-то подобие абстракции контекста исполнения (скалаёбы называют это tagless final), то в F# гвоздями прибитые к .net дженерики и очень частная попытка в computation expressions. Авторы F# так и заявили "мы не будем это делать, потому что платформа .net это не поддерживать а ручками мы это делать не хотим" лень гуглить, но если ты мне не веришь, могу постараться

>Экосистема у него круче намного.
Ой да в пизду, какая там экосистема?

>Что это тогда?
Это возможность заменять выражение его значением и наоборот без изменения семантики программы. Это важно для оптимизации функционального кода. Потому что в функциоальной программе объявляется много промежуточных структур данных используются всякие паттен-матчинги, и если нет ссылочной прозрачности, то всё это говно надо реально реифицировать. А если ссылочная прозрачность есть, это открывает множество возможностей дефорестации, stream fusion и т.п. Хаскель это активно эксплуатирует, причем на уровне компилятора, поэтому на нём можно просто писать в функциональном стиле. В Scala/F# любой биндинг в монадке - это создание замыкания, реального объекта в run-time + indirect call. Соответсвенно, у функцильональщиков, которые пишут на Scala/F#, возникает резонный вопрос: а нахуй вообще нужно функциональное программирование, если в реальном коде нужно забыть про все эти плюшки и писать как на старой доброй джаве/сишке? Ну да, на Скале можно побаловаться cats/scalaz, но именно что побаловаться, потому что такой подход будет заведомо проигрывать по производительности императивному коду на том же языке, следовательно не позволит использовать преимущества ФП.

>>1398523
>Stack в Хаскеле не понравился. Мощный конечно, но переусложненный
Заведи козу Maven-а покушай, или sbt. Как накушаешься, возвращайся к stack.

>>1398527
>А нахуй f# нужен?
Испытательный полигон для C#. Сначала фишки проверяют на более динамичном F#, который не в мейнстриме, где не надо флюродросить энтерпрайзу обратной совместимостью и где более квалифицированные программисты если что будут более аргументированно закидывать говном. Потом, если проканало, вводят фишки в C#. Больше он нахуй ни для чего не нужен.

Показать весь текст
Ответы398833

362 13 мая, 00:42 362 1398793

>>1398711
Ты ебанулся, какие нахуй "автоматические", если в Агде ты доказываешь всё конструктивно, буквально расписав каждую теорему на шаги как складывать натуральные числа. Агда нихуя не доказывает автоматически, она лишь проверяет, что предложенная тобой схема доказательства в её системе типов тайпчекается за конечное кол-во шагов.

Ответы399212399957

363 13 мая, 06:34 363 1398823

>>1396909
>x: xs
>не x:xs
>не x : xs
Пиздец ты. Объяснись.

Ответы398948

364 13 мая, 08:32 364 1398833

>>1398759
>ты предполагаешь, что SML может обскакать GHC
Да. Не думаю скорость визитная карточка Хаскеля.

>>1398759
>было бы интересно на это посмотреть, поэтому и спросил за бенч
Попугли ёпт, раз интересно.

>>1398759
>SML отличается от Хаскеля
Большей минималистичностью

>>1398759
>По возможности реализации функциоанльных паттернов программирования.
А ты на нем писал чтобы такое утверждать?

>>1398759
>Ой да в пизду, какая там экосистема?
Намного круче Хаскелевой. Новая платформа NET Core от MS. Быстрый рантайм, обходит по производительности джаву. В некоторых бенчах приближается к Си. Куча библиотек, модульный веб-фреймворк который быстрее Netty, возможность компиляции в нативный код.

Кроме того для NET Core есть крутые фреймворки и либы не от MS. Websharper о котором я уже писал, и еще куча всего.

Можно юзать F# без дотнета. Есть отдельная реализация, и для нее тоже есть полная экосистема, несколько веб-фреймворков и куча либ с инструментами.

>>1398759
>Это возможность заменять выражение его значением и наоборот без изменения семантики программы.
Кек, так это же и есть чистая функция, которая зависит только от аргументов и не модифицирует нигде состояние. По моему ты морочишь мне голову.

>>1398759
>у функцильональщиков, которые пишут на Scala/F#, возникает резонный вопрос: а нахуй вообще нужно функциональное программирование, если в реальном коде нужно забыть про все эти плюшки и писать как на старой доброй джаве/сишке?
Шта? На F# невозможно писать как на джаве/сишарп, это ML ёпты.

Не знаю насколько эти тесты адекватные, но Хаскель в них проигрывает F# https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/ghc-fsharpcore.html

>>1398759
>cats/scalaz
Что это такое?

>>1398759
>Ну да, на Скале можно побаловаться cats/scalaz, но именно что побаловаться, потому что такой подход будет заведомо проигрывать по производительности императивному коду на том же языке, следовательно не позволит использовать преимущества ФП.
Естественно ты не измерял. Тогда и пиши что это только твое мнение, как и я написал. Кстати я думаю Скала на JVM обойдет Хаскель во многих тестах.

И вообще, что за мантра "не позволяет использовать фишки ФП"? Что не позволяет? Какие фишки не позволяет? Почему не позволяет?

>>1398759
>Заведи козу Maven-а покушай, или sbt. Как накушаешься, возвращайся к stack.
Я вообще на Скале не писал никогда, да и JVM не использую. Для F# есть dotnet CLI, простая и мощная тулза.

>>1398759
>Испытательный полигон для C#.
Ну не правда же. Испытательный полигон для C# - Хаскель. Вся верхушка команды разрабатывающей Хаскель работает в Майкрософт ресерч, включая Э. Мейера, С. Пейтон-Джонса, и других.

F# если что не принадлежит MS. Есть некомерческая организация Fsharp Software Foundation которая занимается его развитием. Проект открытый, лежит на гитхабе, развивается сообществом.

364 13 мая, 08:32 364 1398833

>>1398759
>ты предполагаешь, что SML может обскакать GHC
Да. Не думаю скорость визитная карточка Хаскеля.

>>1398759
>было бы интересно на это посмотреть, поэтому и спросил за бенч
Попугли ёпт, раз интересно.

>>1398759
>SML отличается от Хаскеля
Большей минималистичностью

>>1398759
>По возможности реализации функциоанльных паттернов программирования.
А ты на нем писал чтобы такое утверждать?

>>1398759
>Ой да в пизду, какая там экосистема?
Намного круче Хаскелевой. Новая платформа NET Core от MS. Быстрый рантайм, обходит по производительности джаву. В некоторых бенчах приближается к Си. Куча библиотек, модульный веб-фреймворк который быстрее Netty, возможность компиляции в нативный код.

Кроме того для NET Core есть крутые фреймворки и либы не от MS. Websharper о котором я уже писал, и еще куча всего.

Можно юзать F# без дотнета. Есть отдельная реализация, и для нее тоже есть полная экосистема, несколько веб-фреймворков и куча либ с инструментами.

>>1398759
>Это возможность заменять выражение его значением и наоборот без изменения семантики программы.
Кек, так это же и есть чистая функция, которая зависит только от аргументов и не модифицирует нигде состояние. По моему ты морочишь мне голову.

>>1398759
>у функцильональщиков, которые пишут на Scala/F#, возникает резонный вопрос: а нахуй вообще нужно функциональное программирование, если в реальном коде нужно забыть про все эти плюшки и писать как на старой доброй джаве/сишке?
Шта? На F# невозможно писать как на джаве/сишарп, это ML ёпты.

Не знаю насколько эти тесты адекватные, но Хаскель в них проигрывает F# https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/ghc-fsharpcore.html

>>1398759
>cats/scalaz
Что это такое?

>>1398759
>Ну да, на Скале можно побаловаться cats/scalaz, но именно что побаловаться, потому что такой подход будет заведомо проигрывать по производительности императивному коду на том же языке, следовательно не позволит использовать преимущества ФП.
Естественно ты не измерял. Тогда и пиши что это только твое мнение, как и я написал. Кстати я думаю Скала на JVM обойдет Хаскель во многих тестах.

И вообще, что за мантра "не позволяет использовать фишки ФП"? Что не позволяет? Какие фишки не позволяет? Почему не позволяет?

>>1398759
>Заведи козу Maven-а покушай, или sbt. Как накушаешься, возвращайся к stack.
Я вообще на Скале не писал никогда, да и JVM не использую. Для F# есть dotnet CLI, простая и мощная тулза.

>>1398759
>Испытательный полигон для C#.
Ну не правда же. Испытательный полигон для C# - Хаскель. Вся верхушка команды разрабатывающей Хаскель работает в Майкрософт ресерч, включая Э. Мейера, С. Пейтон-Джонса, и других.

F# если что не принадлежит MS. Есть некомерческая организация Fsharp Software Foundation которая занимается его развитием. Проект открытый, лежит на гитхабе, развивается сообществом.

Показать весь текст

210 Кб, 1437x1080
365 13 мая, 08:49 365 1398836

>>1398688
Сложна. Но суть уловил, понял куда жаловаться, спасибо. Ппопробую доебать предыдущего мейнтейнера.

366 13 мая, 12:47 366 1398948

>>1398823
я правое двоеточие затер в пейнте, бака

Ответы398950399488

367 13 мая, 12:54 367 1398950

>>1398948
>в пейнте
Windows & Haskell?

Признавайся ты писал это?

>>1398329
>Манямирок тут только у школоты, которая нихуя ни знает ни Хаскеля, ни Скалы, ни F#, не использовала эти языки в продакшене, не писала на них сколь угодно производительного кода, не разбирается в том, как устроены ФЯ, но зато очень хочет поспорить.

Ответы398963

368 13 мая, 13:22 368 1398963

>>1398950
не писал, только пейнт

Ответы398964399002

369 13 мая, 13:22 369 1398964

>>1398963
Line tool конкретно

Ответы399002

370 13 мая, 14:26 370 1399002

>>1398963
>только пейнт

>>1398964
>Line tool

Пэинт легендарный графический редактор из винды. Какое отношение к нему имеет лайн тул?

Ответы399010

371 13 мая, 14:33 371 1399010

>>1399002
Ну я эту кнопку так называю.

27 Кб, 370x320
372 13 мая, 19:23 372 1399189

Я, короче, вообще нихуя не понял. В стекедже агды нет. А на гитхабе у них нашел вот такое https://github.com/agda/agda/blob/master/stack-8.6.5.yaml Т.е. я что, могу просто это скочать и потом запустить stack build и оно соберется с использованием крайнего резолвера 13.21?

Ответы399242

373 13 мая, 19:46 373 1399212

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

Ответы399631

374 13 мая, 20:35 374 1399242

>>1399189
Ты агду хочешь установить или что?

Ответы399244

375 13 мая, 20:38 375 1399244

>>1399242
>Ты агду хочешь установить
Да. Как я описал выше, оно не ставится...

Ответы399254399256399261

376 13 мая, 20:53 376 1399254

>>1399244
Как именно не ставится? Есть как минимум 3 варианта установки.

Ответы399260

377 13 мая, 20:54 377 1399256

>>1399244
Какая ОС у тебя? В арче/манжаро например агда есть в репах.

Ответы399260

378 13 мая, 21:01 378 1399260

>>1399254
>Как именно не ставится?
git clone, затем stack init. Пишет, что резолверы не подходят.
>Есть как минимум 3 варианта установки.
Огласите весь список
>>1399256
>Какая ОС у тебя? В арче/манжаро например агда есть в репах.
Бубунта 16.04. В репах агда старая поди, я хотел 2.6. Версия 2.5.4.2 (предпоследняя) через стек норм ставится, оно у меня и стоит. А 2.6 в стакадже нету.

Ответы399264399266

379 13 мая, 21:04 379 1399261

>>1399244
Я не пишу на Хаскеле сразу говорю, поэтому некоторые вещи не знаю. Почему тебе нужен именно stackage если ты можешь поставить из hackage последний релиз с помощью cabal? Почему не поставить в виде пакета? Почему не собрать самому в конце концов?

Ответы399265

380 13 мая, 21:08 380 1399264

>>1399260
>Огласите весь список
https://agda.readthedocs.io/en/latest/getting-started/installation.html

Можешь использовать cabal, он юзает пакеты из хэкэнджа, в нем есть последний релиз.

Ответы399265

381 13 мая, 21:09 381 1399265

>>1399261
>>1399264
Стек - единтсвенный рабочий вариант, все остальное либо совсем не ставится, либо ЧАСТИЧНЫЙ УСПЕХ с засиранием винта гигабайтами мусора, который потом еще и чистить вилкой...

Ответы399267399268399270

382 13 мая, 21:10 382 1399266

>>1399260
Или изучи как добавлять пакеты в stackage.

383 13 мая, 21:12 383 1399267

>>1399265
Cabal тоже рабочий вариант. Если боишься ставить, подними докер контейнер с ним. Или подними виртуалку с vagrant.

384 13 мая, 21:15 384 1399268

>>1399265
Мануал по добавлению пакетов в стэкедж.

https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md

Ответы399274

385 13 мая, 21:17 385 1399270

>>1399265
>все остальное либо совсем не ставится, либо ЧАСТИЧНЫЙ УСПЕХ с засиранием винта гигабайтами мусора, который потом еще и чистить вилкой...
Привыкай. Тут как бы 2 варианта, либо ставишь, чистишь, дебажишь, либо используешь докер/виртуалки.

Ответы399274

386 13 мая, 21:20 386 1399274

>>1399268
Я ж не мейнтейнер агды, надобавляю там... Я ее просто из исходников собрать не могу.
>>1399270
Стек работает без бубна, когда в стакадже пакет есть. Через лтс 12.26 без дрочьбы вприсядку и без единого косяка ставится и работает хаскель, агда, идрис + собираются проекты. Я такого вообще не встречал.

Ответы399281399292399293399296

387 13 мая, 21:27 387 1399281

>>1399274
>Я ж не мейнтейнер агды, надобавляю там...
Научишься, опыт получишь. По другому никак. Нужно пробовать.

>>1399274
>Я ее просто из исходников собрать не могу.
Опиши что не получается.

>>1399274
>Стек работает без бубна, когда в стакадже пакет есть.
Вот именно что "когда". Не всегда пакеты будут, будут баги вылезать, это нормально, так везде. Так что лучше не ждать пока кто то соизволит добавить, а научиться самому.

>>1399274
>Я такого вообще не встречал.
Еще встретишь и не раз. Я тебе посоветовал кабал, это самый простой для тебя вариант. Еще вариант перейти на арч/манджаро, в их репах всегда все свежее.

388 13 мая, 21:41 388 1399292

>>1399274
С помощью стэка можно же установить пакет для кабала? В хэкедже лежит готовый оттестированный пакет агды для кабала.

389 13 мая, 21:46 389 1399293

>>1399274
Есть еще сексуальный вариант. Установить linuxbrew, и с помощью него поставить агду. Он использует пакетную базу homebrew, а там всегда все свежее.

Ответы399300

390 13 мая, 21:49 390 1399296

>>1399274
В репе homebrew есть последняя агда. Ставь linuxbrew, должно все получится.
https://docs.brew.sh/Homebrew-on-Linux

Ответы399300

391 13 мая, 21:53 391 1399298

Установка и использование LinuxBrew
https://www.8host.com/blog/ustanovka-i-ispolzovanie-linuxbrew-na-servere-linux/

392 13 мая, 21:56 392 1399300

>>1399296
>>1399293
Ну да, там 2.6 https://formulae.brew.sh/formula/agda попробую поставить

393 14 мая, 06:25 393 1399488

>>1398948
Проиграл. Я даже и не заметил, что это просто отредактированная картинка.

Ответы399508

394 14 мая, 08:12 394 1399508

>>1399488
Лол, я тоже не заметил. Удивился что картинка такого же размера и код очень похож, но не подумал что это та же самая.

FP is dead as a topic. 395 14 мая, 11:44 395 1399611

>>1396243

Помните, было такое "структурное программирование"? Люди в чатиках конца шестидесятых срались на тему СП vs. GoTo, кричали "considered harmful!", писали посты на своих печатных машинках, такая движуха была. И где оно все, почему прекратились срачи? Все основные языки впитали в себя (или взросли на) СП, и тема рассосалась. Наблюдая за интенсивностью тем об ФП на разных форумах, в ЖЖ, в журнале ПФП и прочих интернетах, в этом году могу констатировать аналогичную ситуацию: ФП как темы больше нет, расходимся. Все основные языки впитали в себя (или взросли на) ФП, по крайней мере полезные его части (первоклассные функции, ФВП, лямбды, замыкания, иммутабельность, произведение типов, копроизведение типов, экспонента, применение этого всего в первую очередь в виде map/filter/reduce), а бесполезные части оказались выкинуты на задворки, в уголке музея эзотерики на них всегда можно будет полюбоваться, но в основном только там. Думаете, другая часть ФП еще себя покажет, и расширение линз Кана вправо-вверх вдоль контравариантного функтора еще выстрелит? Не будет этого, dead end.

https://thedeemon.livejournal.com/101181.html

Ответы399621399625399771

396 14 мая, 11:53 396 1399621

>>1399611
>копроизведение
это и есть сексуальные технологии?

40 Кб, 1620x774
397 14 мая, 11:59 397 1399625

>>1399611
Ну правильно, скрестили бульдога с носорогом, и получилось чудовище. Посмотри на C#, один из самых мультипарадигменных, но это же полный отстой, страшное поделие псевдоинженеров. Стопятсот ключевых слов и фич, а код ни разу не компактный. ФП как и математика будет жить всегда, и тру-фп языки тоже никуда не денутся. За последние лет 5 русскоязычное компьюнити фп языков значительно расширилось. Вакансий тоже стало больше. Раньше про Хаскель тупо не слышали. Сейчас же любой вкатывальщик в программинг хоть краем ухо о нем слышал.

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

398 14 мая, 12:16 398 1399631

>>1399212
>Ну, это и есть автоматическое доказательство
Это автоматическая проверка доказательства, которую почему-то называют "автоматическим доказательством".

Ответы399957

399 14 мая, 16:32 399 1399771

>>1399611
ФП - это когда иммутабельность по умолчанию. У Димона просто манатка головного мозга, а манатки и вправду никому нахуй ненужны, это просто была интересная тема для пейперов с 90-ых, привет.

Ответы400267

134 Кб, 675x900
400 14 мая, 20:32 400 1399957

>>1398793
>>1399631
Нет, это именно автоматическое доказательство. Ты просто не знаешь в чем разница между нотациями "x : A" и "a : A", т.е между гипотетическим и категорическим суждениями в MLTT. То, что в общем случае эта задача неразрешима (теорема о неполноте) никак не опровергает того, что она разрешима во многих частных случаях. Ну а в случае задач, сводящихся к исчислению пропозишенов, все разрешимо полностью автоматически например стандартными тактиками в коке (теорема о полноте).

401 15 мая, 09:06 401 1400267

>>1399771
>ФП - это когда иммутабельность по умолчанию
Не совмещается с моделью памяти современных компьютеров, поэтому не нужно. Борщехлёбы, конечно, будут кукарекать, как у них компилятор всё за них делает, но на практике у них обычный квиксорт превращается в хтоническую еботу. Без возможности явно модифицировать данные in place о производительности на современных архитектурах можно забыть, так что удел борщехлёбов - скриптовые язычки вроде js, пусть там пробуют вводить свою иммутабельность.

Ответы400365400473400482

402 15 мая, 12:36 402 1400365

>>1400267
Не понимаю этих высеров в ФП. Императивщики пытаются реализовать императивные алгоритмы используя иммутабельные структуры в иммутабельном языке, а потом удивляются, хули оно работает через жопу.
И архитектура памяти, процессора тут ни при чем. Просто ФП посылает нахуй одну из фич? современной архитектуры - мутабельность, кототрую используют в 95% созданых алгоритмов и структур данных.
https://en.wikipedia.org/wiki/Purely_functional_data_structure

403 15 мая, 14:56 403 1400473

>>1400267
Память это всего лишь абстракция из переключателей вкл. или выкл., 0 или 1.

Программисты на высокоуровневых языках не работают с памятью на самом низком уровне, где нули и единицы, это неудобно. Поэтому языки предоставляют другие абстракции поверх памяти, с которыми удобнее работать. В любом высокоуровневом языке они есть.

Если все построено на наложении уровней абстраций, то нет причин не создавать удобные абстрации для ФП языков. Они используют модель вычислений без изменяемого состояния. В них нет изменяемых переменных. Поэтому им не нужны изменяемые ячейки памяти. Компиляторы/интерпретаторы дают им неизменяемые данные.

Никто не может сказать что неизменяемые данные дают сколь нибудь ощутимый оверхед. ФП языки в среднем не медленее императивных языков, а скорее быстрее Если взять топ 10 императивных языков, вывести среднее значение их скорости выполнения, и сравнить со средним значением топ 10 ФП языков, то на мой взгляд ФП языки окажется более производительными. Из императивных языков лидеры по скорости C/C++ и Фортран. Но остальные языки уступают по скорости большинству ФП языков.

ФП языки легко параллелятся. В том числе за счет неизменяемых данных. Парадигма работы с неизменяемыми данными отнюдь не странная и не новая. Она пришла из математики. В математике это естественно иметь неизменные переменные. Наоброт, модель машины Тьюринга кажется странной. Она противоречит философии вычислений в математике.

>>1400267
>о производительности на современных архитектурах можно забыть
Это высказывание на уровне "ко-ко-ко кудах-кудах". Уже давно доказано, что ФП языки могут быть наравне с C/C++ по скорости. Иногда даже быстрее. Они точо также оптимизуются. Оверхеда практически никакого. Если небольшой и присутствует, то больше по использованию памяти. Большинство императивных языков даже близко не могут похвастать произодительстью Haskell, OCaml, Common Lisp, и других ФП языков.

Небольшой пример, первая попавшаяся ссылка в гугле https://irreal.org/blog/?p=4285

403 15 мая, 14:56 403 1400473

>>1400267
Память это всего лишь абстракция из переключателей вкл. или выкл., 0 или 1.

Программисты на высокоуровневых языках не работают с памятью на самом низком уровне, где нули и единицы, это неудобно. Поэтому языки предоставляют другие абстракции поверх памяти, с которыми удобнее работать. В любом высокоуровневом языке они есть.

Если все построено на наложении уровней абстраций, то нет причин не создавать удобные абстрации для ФП языков. Они используют модель вычислений без изменяемого состояния. В них нет изменяемых переменных. Поэтому им не нужны изменяемые ячейки памяти. Компиляторы/интерпретаторы дают им неизменяемые данные.

Никто не может сказать что неизменяемые данные дают сколь нибудь ощутимый оверхед. ФП языки в среднем не медленее императивных языков, а скорее быстрее Если взять топ 10 императивных языков, вывести среднее значение их скорости выполнения, и сравнить со средним значением топ 10 ФП языков, то на мой взгляд ФП языки окажется более производительными. Из императивных языков лидеры по скорости C/C++ и Фортран. Но остальные языки уступают по скорости большинству ФП языков.

ФП языки легко параллелятся. В том числе за счет неизменяемых данных. Парадигма работы с неизменяемыми данными отнюдь не странная и не новая. Она пришла из математики. В математике это естественно иметь неизменные переменные. Наоброт, модель машины Тьюринга кажется странной. Она противоречит философии вычислений в математике.

>>1400267
>о производительности на современных архитектурах можно забыть
Это высказывание на уровне "ко-ко-ко кудах-кудах". Уже давно доказано, что ФП языки могут быть наравне с C/C++ по скорости. Иногда даже быстрее. Они точо также оптимизуются. Оверхеда практически никакого. Если небольшой и присутствует, то больше по использованию памяти. Большинство императивных языков даже близко не могут похвастать произодительстью Haskell, OCaml, Common Lisp, и других ФП языков.

Небольшой пример, первая попавшаяся ссылка в гугле https://irreal.org/blog/?p=4285

Показать весь текст
Ответы400484400561401108

404 15 мая, 15:01 404 1400482

>>1400267
На чем ты пишешь и что за проекты?

Ответы400484

405 15 мая, 15:04 405 1400484

>>1400482
На няшной
>>1400473
>Память это всего лишь абстракция из переключателей вкл. или выкл., 0 или 1.
память это leaky abstraction

Ответы400516

406 15 мая, 15:35 406 1400516

>>1400484
>На няшной
Сразу понял что ни на чем.

>>1400484
>память это leaky abstraction
Объясни что это значит. Сдается мне что ты школьник.

407 15 мая, 16:01 407 1400561

>>1400473
>Память это всего лишь абстракция из переключателей вкл. или выкл., 0 или 1.
Типичный уровень знаний ФП-петушка
>ФП языки легко параллелятся.
Как там в 1998? Вс
>Она пришла из математики. В математике это естественно иметь неизменные переменные.
Только математики при этом любят скриптовые императивные языки

Ответы400806

408 15 мая, 16:07 408 1400572

О как школота разрывается от бессилия.

409 15 мая, 21:28 409 1400806

>>1400561
>Только математики при этом любят скриптовые императивные языки

>математики знают, что их операции над объектами не меняют объектов (Вычисление |21/2| не меняет числа 2). Эта неизменяемость является основным отличием мира математики и мира компьютерных вычислений.

Это цитата из книги Бертрана Мейера по ООП. В конце неправильно написано. Математика отличается не от мира компьютерных вычислений, а от мира императивного программирования. В функциональном программироании используют такой же подход как в математике.

Ну и что ты теперь скажешь? Даже один из авторитетнейших людей в мире ООП подтверждает, что императивный подход ущербен. Математика основа вычислений. А императивное программирование ей противоречит. Поэтому оно не нужно.

Ответы400814400853

410 15 мая, 21:42 410 1400814

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

411 15 мая, 22:59 411 1400853

>>1400806
>Даже один из авторитетнейших людей в мире ООП
Он математик?

Ответы400866

412 15 мая, 23:31 412 1400866

>>1400853
Он PhD Computer Science.

Ответы400907

413 16 мая, 00:48 413 1400907

>>1400866
Объясни, насколько нужно быть тупым, чтобы в качестве ответа на аргумент "Только математики при этом любят скриптовые императивные языки " нести phd по cs?

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

Ответы400916

414 16 мая, 01:19 414 1400916

>>1400907
Императивные языки противоречат принципам математики. Как математики могут любить императивное программирование? У тебя логика сломалась. Хотя ее изначаль не видно было.

Я когда увидел первый раз код на языке программирования, меня стошнило. Естественно это был императивный код. Меня убило то что переменные переприсвают. Мутируют их зачем то по сто раз. Для меня это было чуждо, ведь на уроках математики меня учили работать с пермеными по другому.

Никакой здравый математик не будет писать на императивных языках. Хотя на некоторых императивных языках можно писать вполне функционально, декларативно, и компактно. ES6 в этом плане хорош.

Ответы400922400969

415 16 мая, 01:26 415 1400922

>>1400916
Ты математик?

Ответы400924

416 16 мая, 01:29 416 1400924

>>1400922
Да

Ответы401094

417 16 мая, 05:57 417 1400969

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

Ответы400983

418 16 мая, 08:29 418 1400983

>>1400969
>Они вполне соответствуют универсальной машине Тьюринга (абстрактный вычислитель, вполне математика)
Противоестественная для математики модель. Вот Лямбда-исчисление это математика.

>>1400969
>термин "тьюринг-полноты" никто не отменял
И что?

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

Ответы401041

419 16 мая, 10:53 419 1401041

>>1400983
> Противоестественная для математики модель. Вот Лямбда-исчисление это математика.
> Они хоть и равносильны, но совершенно разные.
Ещё сам Тьюринг доказал, что на МТ вычисимы ровно те же функции, которые представимы в лямбда исчислении.
> Лямбда-исчисление позволяет строить мощнейшие абстракции из небольшого количества компонентов. Машина Тьюринга может только чиселки складывать. Она тупая и ограниченная.
Ну здраститя. Даже в самой работе Тьюринга "on computable numbers" полно примеров работы не с чиселками, а с любым конечным алфавитом и любыми действиями над знаками и знакосочетаниями алфавитов. МТ очень крутая вещь, если не ограничиваться простейшим применением типа перестановки нулей и единиц. По факту любой интерпретатор любого императивного яп это и есть машина Тьюринга. Даже в своей простейшей форме с нулями и единицами её достаточно чтобы например, работать с логическими вентилями, т.е для представления любого процессора фоннеймановской архитектуры. Конечно, с практической стороны это бесполезная ебля на ровном месте, но самой возможности это не отменяет.

Ответы401055401057

420 16 мая, 11:17 420 1401055

>>1401041
>полно примеров работы не с чиселками, а с любым конечным алфавитом и любыми действиями над знаками и знакосочетаниями алфавитов
Их сначал нужно создать, закодировать. Для этого нужно дохрена времени и сил. Модель не математическая, плохо поддается абстрагированию.

В Лямбда-исчислении за пару часов дней можно закодить начальную поддержку символов, чисел, операций над ними.

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

78 Кб, 1080x1138
421 16 мая, 11:24 421 1401057

>>1401041
Вот зачем ты споришь. Посмотри на ассемблер. Он же почти полный эквивалент языка МТ. Привожу скрин решения задачи A + B на NASM.

WHAT? Вот это и есть сила абстракций МТ? Чтобы сложить 2 числа нужно написать кода на один экран. Это провал. В Лямбда-исчислении таким количеством кода можно выполнить сложнейшие операции.

422 16 мая, 12:48 422 1401094

>>1400924
Над чем работаешь?

423 16 мая, 13:32 423 1401108

>>1400473
>Поэтому языки предоставляют другие абстракции поверх памяти,
Сразу видно человека, который никогда не спускался в самый низ, хотя бы до АЛУ. Абстракции поверх памяти. Дальше уже не хватило сил читать.

Ответы401114

424 16 мая, 13:50 424 1401114

>>1401108
Сразу видно человека который не умеет в абстрагирование. В высокоуровневых языках нет управления памятью на низком уровне. Программисту даже не нужно знать как память работает на низком уровне, чтоб писать на высокоуровневых языках. Всю работу по выделению и освобождению памяти за него делает языковая платформа. Это и есть абстракция над памятью.

Ответы401121

425 16 мая, 14:05 425 1401121

>>1401114
>Программисту даже не нужно знать
Вся суть.

Ответы401132

426 16 мая, 14:43 426 1401132

>>1401121
Ты когда используешь функцию из библиотеки, ты знаешь как она устроена внутри? Не знаешь. И тебе это не нужно знать. Тебе дается API (интерфейс), с помощью которого ты пользуешься либой, внутреннюю реализацию знать не обязательно чтобы пользоваться. Точно также пользователю высокоуровнего языка не обязательно знать как работает память на низком уровне. Ему дается API его уровня, для решения задач его уровня. А что на низком уровне знать необязательно.

Ответы401161401177

427 16 мая, 15:21 427 1401161

>>1401132
>ты знаешь как она устроена внутри?
Знаю.
Дальше читать смысла нет.

Ответы401176

428 16 мая, 15:40 428 1401176

>>1401161
>Знаю.
Что ты знаешь? Изучаешь весь код внутри? Ты че ебнутый? Там может быть 100k строк кода. Нихера ты не знаешь внутреннее устройство, ты подключаешь либу и пользуешься. Еще блять скажи, что код компилятора читаешь прежде чем начать им пользоваться, или код ОС прежде чем ее установить.

Откуда вы беретесь такие, еще и в Хаскель треде? Уебывать нужно отсюда, помойка редкостная.

Ответы401178

429 16 мая, 15:42 429 1401177

>>1401132
Почитай статью Джоэля про закон дырявых абстракций.

430 16 мая, 15:44 430 1401178

>>1401176
>Что ты знаешь? Изучаешь весь код внутри? Ты че ебнутый?
Да.
>100k строк кода.
Это совсем мало если ты не умственно отсталый хаскельдебил с двощепараши, конечно
>код компилятора читаешь прежде чем начать им пользоваться
Иногда.

Ответы401194401196

431 16 мая, 16:06 431 1401194

>>1401178
>Ты че ебнутый?
>Да.
Так бы сразу и сказал.

Ответы401207

432 16 мая, 16:08 432 1401196

>>1401178
>код компилятора читаешь?
>Иногда.
Так я и поверил школьнику.

Ответы401207

433 16 мая, 16:18 433 1401207

>>1401194
>>1401196
>этот порвавшийся на два поста олигофрен
Ясно.

434 17 мая, 19:05 434 1401954

Почему String это список, а не Sequence? Ведь чаще всего, к строке что-то добавляют в конец, а не в начало.

Ответы402343

435 18 мая, 10:14 435 1402343

>>1401954
Это низачем, им не нужно пользоваться, Data.Text вроде бы называется который не список.

Ответы402760

436 18 мая, 17:01 436 1402515

https://www.ohaskell.guide хороший гайд? Осваиваю его параллельно с Москвиным.

Ответы403576

437 18 мая, 20:07 437 1402592

OCaml кто нибудь юзает?

438 19 мая, 00:48 438 1402760

>>1402343
тогда нахуй он нужен?
хотя такая же проблема и в сярпах есть - там строка - это массив и функция "складывания" двух строк возвращает новый массив

Ответы402793403220

439 19 мая, 01:35 439 1402793

>>1402760
Приведение типов не осилил?

440 19 мая, 15:37 440 1403220

>>1402760
Он не нужен. Третий раз можешь спросить, я отвечу.

441 19 мая, 23:51 441 1403549

Поясните за foldr/foldl. Стоит ли юзать их вместо рекурсии? Например для реализации функции elem?

Я вижу здесь несколько проблем. Во-первых, foldr/l проходит по всему списку (что не очень оптимально). Во-вторых, (из-за первого) не получится эту функцию применить к бесконечным спискам.

Или есть какой-то хитрый способ избежать этих проблем? Можно ли как-то заставить fold остановиться при достижении какого-то условия?

Ответы403551

442 19 мая, 23:54 442 1403551

>>1403549
https://wiki.haskell.org/Foldr_Foldl_Foldl'

Ответы403559

443 20 мая, 00:11 443 1403559

>>1403551
Спосибо. Написал такую функцию:
myelem x = foldr (\y acc -> if x == y then True else acc) False

Теперь можно делать так: myelem 5 [1..].
Правда я пока не понимаю, как это работает. Компилятор умеет такое оптимизировать?

Ответы403568403576

444 20 мая, 00:28 444 1403568

>>1403559
Хаскель - ленивый язык, он ничего вычислять не будет, пока это не понадобится (например, чтобы вывести на экран). Когда ты пишешь x = [1..] не считается нихуя. Когда ты пишешь print $ x !! 5, вычислится 1, 2, 3, 4, 5, 6, а дальше в списке будет лежать санк который будет вычислять хвост списка, если потребуется. Соответственно появляется целый новый слой мозгоебли - как сделать ленивое энергичным, а энергичное ленивым.

https://wiki.haskell.org/Lazy_evaluation
https://wiki.haskell.org/Thunk

Ответы403739

445 20 мая, 00:53 445 1403576

>>1403559
Вот простенький гайд https://www.ohaskell.guide/laziness.html от анона выше.
>>1402515

Ответы403739

446 20 мая, 13:25 446 1403739

>>1403568
>>1403576
Не, про ленивость мне более-менее понятно. Непонятно, как это работает в этом конкретном случае.

Я думал, что foldr проходит список, начиная с самого правого элемента, но список-то бесконечный! Самое интересное, что с foldr эта функция работает, а с foldl не работает.

То есть получается компилятор строит такую последовательность (λ — это функция, которая передаётся в foldr/l):

Для foldr:
1 λ (2 λ (3 λ ( … )))

Для foldl:
((((False λ 1) λ 2) λ 3) … )

И, как я понимаю, для λ работает вот эта штука:
https://wiki.haskell.org/Non-strict_semantics

То есть myelem 3 [1..], написанный на foldr будет работать так:
1 λ (…) = 2 λ (…) = 3 λ (…) = True
а написанный на foldl будет работать так:
((False λ 1) … ) = ((False λ 2) … ) = ((False λ 3) … ) = (True λ 4) …

Правильно ли я понимаю всё это? И правильно ли я понимаю, что работа foldr с бесконечным списком возможна как раз из-за non-strict semantics? И если бы функция, которая передаётся foldr не допускала бы этой семантики, то и вычисления никогда бы не остановились?

Ответы404254409606

76 Кб, 640x479
447 20 мая, 21:38 447 1403986

Чё, котятки, кто-нить едет https://www.fpure.events/ ?

448 21 мая, 14:54 448 1404254

>>1403739
>Я думал, что foldr проходит список, начиная с самого правого элемента, но список-то бесконечный!
Сказу видно человек СИКП не читал.

Ответы404287

449 21 мая, 17:43 449 1404287

>>1404254
Так и есть, анон! Обязательно прочитаю. Я сейчас читаю Learn You a Haskell for Great Good. Там есть раздел про свёртки, но про их реализацию как-то не очень хорошо написано. Сейчас вроде понял, как это всё работает.

И правая, и левая свёртки идут по списку с самого начала:
1 λ (2 λ (3 λ ( … )))
((((False λ 1) λ 2) λ 3) … )

Но для правой свёртки это конец вычислений, поэтому засчёт ленивости на каком-то шаге отпадает необходимость в дальнейших вычислениях. И можно сразу вернуть результат. А для левой свёртки такая штука уже не сработает. Всё правильно?

450 27 мая, 21:51 450 1407622

Первый видос с FPure, снятый на мобилочку: https://www.youtube.com/watch?v=FVhyF2DS9lg

Официальные видосы появятся в течение месяца, буду выкладывать по мере появления.

451 27 мая, 22:03 451 1407627

Работаю юристом но хочу вкатится в ит так как мало сейчас платят. Мне посоветовали начать с хаскеля, но что учить потом после него? И какие зп у хаскел?

Ответы407633

452 27 мая, 22:16 452 1407633

>>1407627
После Хаскеля учи Coq и гомотопическую теорию типов. З.п. примерно как у топовых джавистов, но работа менее блевотная. Если ты юрист, рассмотри Утрехтский университет права, они там как раз используют Хаскель для валидации законов (не в самом универе, а в коммерческих конторах, которые вокруг него работают, тоже в Утрехте).

Ответы407661

453 27 мая, 22:55 453 1407661

>>1407633
Гениальный образец постиронии.

Ответы407663

454 27 мая, 23:10 454 1407663

>>1407661
Зумеры открывают для себя хаскель-троллинг

Ответы407669

455 27 мая, 23:40 455 1407669

>>1407663
>Зумеры открывают для себя хаскель-троллинг
Тащем-то достаточно взглянуть на список спонсоров и докладчиков: https://www.fpure.events/#speakers
Tinkoff, Сбербанк, Jetbrains, BIOCAD, WAVES, elama, ЭВОТОР, Provectus. Охуенно хаскельцом троллонули, кого забыли пригласить, наверное, Касперского, Luxoft и Яндекс?

Вы, блядь, понимаете, что эти ваши "борщехлёбы" уже везде, и это не вовсе не студенты, а дядьки, которым за 30 и которые работают на должностях тимлидов и руководителей проектов в топовых российских компаниях. И на следующем собеседовании вас спросят вовсе не за паттерны, а за симметричные моноидальные категории. И это отсталая рашка, by the way, за рубежом всё, что напиздели в этой конференции - просто образовательный минимум, кто в него не может, идёт на welfare.

Ответы407864408151

456 28 мая, 04:35 456 1407749

как же хочется на welfare

457 28 мая, 12:51 457 1407864

>>1407669
>Тащем-то достаточно взглянуть на список спонсоров
Распильные банки, блокчейн-стартапы, коррупционеры, и так далее. Ну и Jetbrains, которым выгодно, чтобы в мире был миллиард языков и для каждого IDE.
Хочешь понять, какой язык чего стоит, ищи тех, кто вкладывает свои бабки. Не жрет халявные корпоративные ресурсы, не разводит инвесторов умными словами, а вкладывает свои, рассчитывая отбить. Ну и делай выводы, лал.

Ответы407941408049

458 28 мая, 14:24 458 1407941

>>1407864

> Хочешь понять, какой язык чего стоит, ищи тех, кто вкладывает свои бабки.
Значит единственные правильные языки - си и лисп?

459 28 мая, 16:35 459 1408049

>>1407864
Выводы очень простые: на следующем собеседование тебе "перезвонят", когда выяснится, что ты не знаешь, чем симметричная моноидальная категория отличается от декартовой.

Ответы408064

460 28 мая, 16:53 460 1408064

>>1408049
>ты не знаешь, чем симметричная моноидальная категория отличается от декартовой.
Так ведь и собеседующий не знает.

Ответы408112

461 28 мая, 18:50 461 1408112

>>1408064
Как мы смогли убедиться, во всех нормальных компаниях уже знают.

462 28 мая, 19:36 462 1408151

>>1407669
Бля, а нахуя жидбрейнс туда полезли, у них же свой кривой велосипед уже есть?

Ответы408161

463 28 мая, 19:45 463 1408161

>>1408151
Докладчики от компаний приходят с одной целью - хантить. Нафиг фрилансеры доклады пилят - х.з., видимо свободного времени много.

464 28 мая, 23:49 464 1408339

Господа хаскеллиты, с меня требуют написать функцию, которая принимает аргументом инт-число и выдает, является ли данное число простым - труе-фолс. Вообще не ебу как это делать. Накидайте, плокс, как это могло бы выглядеть, на что стоит обратить внимание? Естественно, готовому коду тоже был бы рад, но на этом не настаиваю

Ответы408700409604

465 29 мая, 14:45 465 1408700

>>1408339
https://ideone.com/qMlPof

Ответы410264

466 31 мая, 00:40 466 1409598

Ух бля, зашёл в тред сказать, что я отчисленец, который был на паре пар по haskell и мутили хуйню на F#, мне понравилось ФП, и хотел бы узнать что читать. А в результате прочитал весь тред, у меня аж обои от стен поотклеивались.
Ух, бля...

467 31 мая, 00:57 467 1409604

>>1408339
Решето!

468 31 мая, 01:08 468 1409606

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

469 31 мая, 04:31 469 1409649

>>1344026
Двачую. Сначала такие кококо кукареку мы функциональщики, а потом впилили императивные монады, чтобы язык нашёл прикладное применение. Лисперы хоть молодцы, не прогинаются, и похуй им, что 3.5 анонимуса на их языке пишут.

Ответы409700409839410269

470 31 мая, 08:18 470 1409700

>>1409649
>Лисперы хоть молодцы, не прогинаются
В каком месте? Тот же CL императивный по самое не могу, вон хоть на loop посмотри.

Ответы410126410259

471 31 мая, 12:42 471 1409839

>>1409649
> Лисперы хоть молодцы, не прогинаются
lolych! lisp imperativnaja porasha eshe s 50-x godov, manya
sicp to xotj prochital?

Ответы410259

472 1 июня, 00:48 472 1410126

>>1409700
Хаскель императивный по самое не могу. Вон, на монады посмотри.

473 1 июня, 13:14 473 1410259

>>1409839
Нет, конечно, щас бы во всяком функциональном говне колупаться.
>>1409700
Ну тогда Эксобар.

474 1 июня, 13:22 474 1410264

>>1408700
Если он придёт ко мне на собеседование прикрывая жопу дипломом, я мысленно тебе пошлю рак яичек.

475 1 июня, 13:27 475 1410269

>>1409649
>императивные монады
Лол кек чебурек.
>Лисперы хоть молодцы
История Лиспа очень забавна. Маккартни придумал абстрактные синтаксические деревья и способ их представления в компьютере. А лисперы решили, что это синтаксис языка такой и начали на нём программируют. Так с тех пор и программируют на абстрактных синтаксических деревьях.

Ответы422368

476 3 июня, 09:24 476 1411159

А на Хаскелле можно написать решето Эратосфена?

Ответы411175411205411993

477 3 июня, 10:28 477 1411175

>>1411159
Для этого нужно использовать более продвинутые инструменты, например, PHP.

478 3 июня, 11:24 478 1411205

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

479 3 июня, 14:04 479 1411251

Такой вопрос, товарищи. Есть множество кортежей (Int, Int) что есмь клетки. Как сие лучше отрисовать через OpenGL? Я совсем зеленый и ничего в этой графике не понимаю.

480 4 июня, 23:36 480 1411993

>>1411159
Вас там в гугле забанили? https://rosettacode.org/wiki/Sieve_of_Eratosthenes#Haskell

481 17 июня, 11:03 481 1417578

хацкель не тони

10 Кб, 331x95
482 17 июня, 22:39 482 1418042

Ебать пацаны, я тут узнал, что список МОНАДА! Поэтому это не монада массив, а массив монада.
мимо еблан, который уже пол года учит хацкиль по часу в месяц

Ответы418174418254442803

483 18 июня, 11:19 483 1418174

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

12 Кб, 534x200
484 18 июня, 14:10 484 1418254

>>1418042
пиздёж кк никогда и не компилировался, а вы тут удивляетесь как дети

Ответы418978

485 19 июня, 20:25 485 1418978

>>1418254
> massiv
Проиграл с этого 1C-ника

Ответы419126

sage 486 20 июня, 00:29 486 1419126

>>1418978
тредик посетил, нюфаню рассмешил)))

487 21 июня, 23:07 487 1420219

27 Кб, 1432x28145 Кб, 1214x6046 Кб, 394x87

На каком говне основан Text? Это же пиздец - вобрать в себя недотсатки и массивов и списков. Какие профиты он дает?

Ответы422366

488 26 июня, 10:02 488 1422366

>>1420219
На hackage же написано Depend on the bytestring-builder. Вот на bytestring и гони.
>take, index O(n)
Ты же знаешь что такое utf-8, да?

489 26 июня, 10:09 489 1422368

>>1410269
Зато метапрограммировать удобно.

490 21 июля, 18:28 490 1440095

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

Ответы442719

491 23 июля, 11:38 491 1440887

>>1343135 (OP)
Когда-нибудь я вкачусь в хаскель, а пока на шарпе посижу. Удачи вам, хорошего дня!

492 23 июля, 11:39 492 1440889

>>1343135 (OP)
На Haskell все равно не найти работу. Перекатывайтесь на Scala пока не поздно!

493 26 июля, 08:47 493 1442719

>>1440095
Да, они выводятся из положительных:
F-n = (-1)n+1Fn.

Положительные считаются с помощью хвостовой рекурсии:
https://wiki.haskell.org/The_Fibonacci_sequence#Tail_recursive

494 26 июля, 12:56 494 1442803

>>1418042
Попробуй [1 .. 10] >>= (\x -> [x-1, x+1]), вообще охуеешь

495 17 авг, 01:28 495 1454783

Читаю сабж в оппосте.
"One big difference is that right folds work on infinite lists, whereas left ones don't! To put it plainly, if you take an infinite list at some point and you fold it up from the right, you'll eventually reach the beginning of the list. However, if you take an infinite list at a point and you try to fold it up from the left, you'll never reach an end!"
Нихуя не понял, можете мне объяснить?

Они там выше еще поясняют что foldl бегает слева направо, а foldr бегает справа налево, как это проверить? Хуи со стековерфлоу пиздят что все бегают слева направо, я вахуе братишки. Не могу понять как это на самом деле работает. Объясните пожалуйта.

Плюс говорится, что один (левый или правый) фолд может работать с бесконечными листами, а другой нет. Как это понять?

Ответы458390458407

496 22 авг, 13:51 496 1458390

>>1454783
Проверить очень просто - нужно раскрыть фолды небольшого списка из 5 элементов по определению, и раскрывать их пока не поймешь.

Бегают они и правда от головы списка к его хвосту, но операции производятся в разном порядке:

foldr op base [x1,x2,x3] == x1 `op` (x2 `op` (x3 `op` base))

foldl op base [x1,x2,x3] == ((base `op` x1) `op` x2) `op` x3

Вообще, рекомендую курс Москвина на степике, если ты даже в таких вещах закапываешься. Там подробно разбираются базовые вещи.

497 22 авг, 14:02 497 1458407

>>1454783
Насчет бесконечных листов: правая свертка завершается на бесконечном цикле из-за ленивости: если известен левый операнд функции, а правый по какой-то причине не нужен, то вычиление прекращается.

Например, пусть есть mlist = [Just 1, Just 2, Nothing, Just 3, ...] -- Дальше Just N
и функция
sumM :: Num a => Maybe a -> Maybe a -> Maybe a
sumM (Just x) (Just y) = Just (x + y)
sumM _ _ = Nothing

тогда
foldr sumM (Just 0) mlist дойдет до момента

Just 1 `sumM` (Just 2 `sumM` (Nothing `sumM` (foldr sumM (Just 0) остатокСписка)))

в функции sumM сматчится Nothing и вычисления завершатся, потому что из-за ленивости правый операнд не вычислится.

498 31 авг, 09:08 498 1464470

Test

499 31 авг, 09:09 499 1464472

Test

500 7 сен, 09:54 500 1469254

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

Ответы469838469995

sage 501 8 сен, 12:11 501 1469838

>>1469254
>что будет полезно
Очевидно учить нормальный язык

Ответы469981

502 8 сен, 17:40 502 1469981

>>1469838
Давай оставим сторонние советы и остановимся только на моём реквесте?
Какой нормальный посоветуешь?

503 8 сен, 18:04 503 1469995

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

Ответы470070

504 8 сен, 20:43 504 1470070

>>1469995
Спасибо тебе, добрый человек. А если собираюсь не просто писать на х-ле, а писать когда-нибудь что-то дельное?

Ответы470934

136 Кб, 415x480
505 10 сен, 11:11 505 1470932

Поискал по треду и не нашёл божественного Москвина, всё обмазано LYAH. Вы тут охуели совсем?
https://stepik.org/course/75/syllabus
https://stepik.org/course/693/syllabus

506 10 сен, 11:17 506 1470934

>>1470070
У меня та же проблема. Пока прицелился на:
https://stepik.org/course/1127/syllabus
https://stepik.org/course/126/syllabus
(и куда-то проебалась линейная алгебра, видимо, выпилили курс)
Но тут стоит оговориться, для подобных отечественных курсов характерно то,что они скорее отфильтровывают тех, кто нихуя нипонил, чем пытаются научить. В итоге приходится читать кучу сторонней литературы, после которой дальше блок/курс проходить нет смысла, т.к. всё уже узнал из сторонних источников.

Ответы471115

507 10 сен, 16:45 507 1471115

>>1470934
Спасибо, судя по описанию как то, что нужно (попробовал посмотреть Москвина, услышал "лямбда исчисления", загуглил , охуел и понял что нужно всё же математику подтянуть).

Ответы471143472210

508 10 сен, 17:10 508 1471143

>>1471115
Не, Москвин тем и хорош,что можно с нуля навернуть хаскеля. Я так и сделал, когда не смог раскурить красную книгу по Scala, а у меня гуманитарная вышка, про все эти алгебры и математике вообще не в курсе. Ну жопа иногда извергала плазму от заданий, иногда бросал на пару месяцев, но ничего - на 90%+ осилил в результате оба курса.

Он там практически всё объясняет по нескольку раз с разных концов и с разными формулировками (как и положено хорошему преподавателю).

509 12 сен, 12:18 509 1472210

>>1471115
>попробовал посмотреть Москвина, услышал "лямбда исчисления"
Вот про них, кстати
https://www.youtube.com/playlist?list=PLblbE3wsp3J2gGy1nUuDg2w2V-ghw4GSm

510 13 сен, 10:17 510 1472689

Чуваки, начал хаскелл и меня ебут ошибки связанные с неправильными типами. Конкретно вот:

calculate :: [(Double,Int)] -> Double -> Double
calculate p x = sum map poly (zip p (replicate (length p) x))

poly :: ((Double,Int), Double) -> Double
poly p = fst (fst p) snd p ^ snd (fst p)

Смысл в том что Каждый элемент листа (a,n) означает слогаемое полинома ax^n. Например: [(4.0,2),(1.0,1),(30.0,0)] будет значить 4*x^2 + x + 30

Что тут неправильно?

Ответы472690

511 13 сен, 10:22 511 1472690

>>1472689
ай блин, сам спросил сам
calculate p x = sum (map poly (zip p (replicate (length p) x)))
скобки не поставил

Ответы474124

512 16 сен, 08:36 512 1474124

>>1472690
В следующий раз пиши выхлоп компилятора, будет понятнее, где типы не сошлись.

52 Кб, 1222x701
513 19 сен, 21:52 513 1477201

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

Ответы477274479589

514 19 сен, 23:35 514 1477274

>>1477201
>только вторая неделя, а я уже понял что такое моноиды, группы, кольца и поля. Боюсь представить что будет через 4 года

ПФФФФ АХХАХААХАХ

Ответы479946

515 23 сен, 04:59 515 1479589

>>1477201
Скинь лекции/учебник/книгу/методичку/задания, пожалуйста

Ответы479946

516 23 сен, 16:52 516 1479946

>>1477274
К сожалению, этот анон оказался прав. Спустя две лекции у нас начались матрицы и кривые второго порядка, что нихуя неинтересно :с
>>1479589
Та я просто препода слушал, а потом дома уточнял определения по википедии.

Ответы482291

517 26 сен, 16:10 517 1482291

>>1479946
Так там дальше в хаскеле вроде теоркатная всякая шняга идёт, которая в кодинге используется: функторы, аппликатвы, монады, котрвариантные функторы, комонады, бифункторы, профункторы (больше не знаю, лел)

518 3 окт, 22:05 518 1488257

ПЕРЕКАТ

>>1488256 (OP)
>>1488256 (OP)
>>1488256 (OP)

Тред утонул или удален.
Это копия, сохраненная 7 октября 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion