Есть ли тут люди, которые могут в Haskell? Я студентобыдло пытающееся учить его, но мне он конкретно ломает мозги, может ли кто-то помочь разобрать вот этот код http://pastebin.com/YBzHYEUW построения графов и нахождения кратчайшего пути и помочь с комментариями как алгоритм работает вообще тут?
>>891632 (OP)Мда, я догадывался, что у haskell стрёмный синтаксис, но такого говна я точно не ожидал. Зачем вообще на нём писать? Ну если ты не ньюфаг, который не может найти ньюфаг-тред.
>>891649Удивительно как я пропиздоглазил. Я просто удивился, что haskell треда нету ну и решил его создать и как видно он нахуй никому не нужен.
>>891649>стрёмный синтаксис>догадывалсяСоси хуй, быдло.
Ну что, никого нету кто на хаскелле кодит?
>>891672Ну он же прав. Вон в фп треде уже пол треда выясняют как посчитать высоту дерева на хаскеле, лол.
>>891672Вот это манявры, может в WhiteSpace и Brainfuck синтаксис тоже норм, просто я быдло и не эстет?
>>891672>astar :: Nodelist -> String -> String -> Double -> [String]Что это вообще за говнина такая? Как её понимать? Хотя это в целом можно прочесть и даже понять(я так полагаю это вывод типов или что-то в этом роде),а вот это:>printvert (Vtx (Vt n _ _ _) _ _) = nБольше нижних подчёркиваний разделённых пробелами, кто это вообще придумал? Это же полный бред и смотрится, как дерьмо.>map (expandone vs (Vtx (Vt a b c e) p r)) eПросто пушка, шёл 2016 год, люди ещё использовали однобуквенные переменные. a b c e? Автор тупо алфавит вспоминал? И ни одного коммента на весь код! Как это вообще можно читать и сопровождать? Или чем не понятнее написано, тем круче? Вывод: либо этот код говно, а Haskell - на самом деле очень понятный и удобочитаемый язык(который может и склоняет своим синтаксисом к написанию говнокода), либо всё таки(вероятнее этот вариант) это просто эзотерическая говнина, которую пытаются позиционировать, как единственно ВЕРНЫЙ и ПРАВЕДНЫЙ ЯП.
>>891750Ну вот http://pastebin.com/a4QA2kEQ нормальный более читаемый код.
>>891758Ну такое себе, при желании, если были бы комменты и доки, то прочесть можно, но видеть такое каждые день я бы не хотел.>dijkstra s d adjList visitedСначала показалось, что кто-то ударился головой об клаву. Потом увидел, что таки одно английское слово на строку имеется.
>>891763Ещё "List" в составе "adjList". Даже два вышло. Но всё же больше похоже на то, что кто-то забыл сменить раскладку.
>>891763Ну вот, а мне как студенту вообще ниразу не видевшего Haskell надо ту вот парашу из ОП-поста разобрать и дать подробные комментарии как оно работает, это лишь для допуска к сессии, а предмет вообще ознакомительный и мне надо курсач делать.
>>891766Попробуй в ФП треде узнать, может на самом деле a, b, c, d, e - это общепринятые обозначения. типа i,j(в качестве индексов), а dijkstra - это что-то из стандартной либы хаскеля. Во всяком случае это больше похоже на обфусцированный код, нежели на тот, который мог написать человек(ну если он не забыл принять свои таблетки естественно). Тебе прямо так и дали код без доков и комментариев и сказали узнать, что он делает? Странное какое-то задание.
>>891770Проебался, было небольшое описание "Программа на вход получает запрос с указанием вершин и максимальной стоимости, которая интересует пользователя. Если пути не существует, или минимальная стоимость существующего пути выше указанного порога, программа сообщает, что таких путей не найдено. Если существует более дешевый путь, то он возвращается в виде последовательности вершин. Если вершина старта или финиша отсутствуют в графе, выводится сообщение об ошибке." Но меня сам синтаксис просто трахает мозг.
>>891705>Что это вообще за говнина такая? Как её понимать?Сигнатура функции, мазафакер, очевидно же блять. Функция от четырёх аргументов, возвращает список строк. >Больше нижних подчёркиваний разделённых пробелами, кто это вообще придумал?Спешите видеть, быдлан стокнулся с Pattern Matching и охуел>Однобуквенные переменныеКак ты ещё назовёшь компоненты вектора? chislo1 chislo2?>либо этот код говноКод говно. И в первую очередь потому что пытается выразить непростой алгоритм на графе в терминах иммутабельности.>Haskell - на самом деле очень понятный и удобочитаемый языкНет. По крайней мере для ньюфагов. Но по-настоящему качественная абстрактность и нормальный вывод типов требуют жертв
>>891632 (OP)Вот что по этому поводу думает hackage https://hackage.haskell.org/package/astar-0.3.0.0/docs/src/Data-Graph-AStar.html#aStar
>>891778>>Haskell - на самом деле очень понятный и удобочитаемый язык>Нет. По крайней мере для ньюфагов. Но по-настоящему качественная абстрактность и нормальный вывод типов требуют жертвНу вот SQL - вполне годный функциональный язык реляционного исчисления кортежей, при это жертв не требует, а к ньюфагам и макакенам вполне дружелюбен. Причём хорошие разработчики также им довольны. Так может просто haskell неправильно спроектирован или имеет плохой дизайн языка? Тот же F# намного понятнее и код выглядит красивее и элегантнее.
>>891822>Тот же F# намного понятнее и код выглядит красивее и элегантнее.Приводи примеры, хули ты
>>891750Всё охуенно, не заливай.>astar :: Nodelist -> String -> String -> Double -> [String]Указание типа параметров и результата функции.>printvert (Vtx (Vt n _ _ _) _ _) = nОдна из вариаций функции, где неиспользуемые параметры заменены на подчёркивания.>map (expandone vs (Vtx (Vt a b c e) p r)) eЕсли понимать контекст, то это гораздо читабельнее, нежели БобоваяФасолинаФабрикаФасолей.
>>891632 (OP)Держи простенькую книгу для быстрого вкатывания:http://learnyouahaskell.com/
>>891822>F#>код выглядит красивее и элегантнееЮморист в треде, все в монаду.
Гот бампному треду.
>>891766А где ты так учишься, что тебя хачкелем пичкают?
>>891770dijkstra - известный погромист, Эдгар Дейстра, в честь него назван алгоритм обхода вершин.>a, b, c, dvershina1 verhina2>больше похоже на обфусцированный кодНе то что ваши ООП-ориентированные прокси фасольные фабрики экземпляров бобов.
>>894518В Хогвартсе
>>891632 (OP)>Есть ли тут люди, которые могут в Haskell?Да.>может ли кто-то помочь разобрать вот этот код Нет.
>>891750Хаскель не для тебя, пиздуй учить джаву.
>>891766Для начала почитай про A*. Потом начни описывать что делает каждая из функций, начиная с самых простых. Например очевидно, что heuri - вычисляет расстояние между двумя точками. И так далее до основной функции.