@haskellru

Страница 815 из 1551
Vitaly
07.02.2018
14:02:08
уметь писать на ЯП haskell программы
Опытный работодатель, сразу видно!

Dmitry
07.02.2018
14:03:01
иметь коммон сенс, и понимать, что фримонады - шляпа

но это не точно

Leonid
07.02.2018
14:03:16
не шляпа конечно, но и не панацея

Google
Dmitry
07.02.2018
14:03:34
я за несколько раз так и не понял, какой от них профит.

Leonid
07.02.2018
14:03:41
/me посмотрел на тайпкласс Backend с 30ю методами

Andrei
07.02.2018
14:04:14
я за несколько раз так и не понял, какой от них профит.
про них @astynax недавно голосом рассказывал

Dmitry
07.02.2018
14:04:31
да я их вот этими самыми руками сначала в проект притаскивал

а потом выпиливал

Andrei
07.02.2018
14:04:39
ой

Dmitry
07.02.2018
14:04:49
аналогичная история с turtle

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

Aleksey
07.02.2018
14:05:13
Для комонад есть примеры с запиливанием Zipper'ов на оных. Ещё где-то была реализация Жизни конвеевской на комонадке

Mikhail
07.02.2018
14:05:27
вопрос: какое умное название у конструкции вида: data Foo a b c construct :: Option a -> Option b -> Option c -> Option Foo ?

Aleksey
07.02.2018
14:05:59
Э... выглядит, как liftA3

Denis
07.02.2018
14:06:16
это явно работа для аппликативного функтора

Vitaly
07.02.2018
14:06:38
Ну вот, скажем, Traversable, если аппликант не понимает его, сразу в бан?

Google
Dmitry
07.02.2018
14:08:37
неа

Aleksey
07.02.2018
14:08:54
Traversable можно понять по описанию класса. Даже если ты новичок, но с тайпклассами, как концепцией знаком и про Monoid знаешь.

kana
07.02.2018
14:09:13
вопрос: какое умное название у конструкции вида: data Foo a b c construct :: Option a -> Option b -> Option c -> Option Foo ?
data Foo a b c = Foo a b c liftA3 Foo (Just 1) (Just 2) (Just 3) = Just (Foo 1 2 3) Foo <$> Just 1 <*> Just 2 <*> Just 3 = Just (Foo 1 2 3)

Denis
07.02.2018
14:09:32
А у меня про работу есть вопрос как раз. Можешь сформулировать, что должен знать и уметь хаскелист для джуниор-позиции?
У меня несколько требований: 1) умение писать работающие программы на нужном ЯП. Практически любой степени (не)красивости и угловатости. Но чтобы работало. 2) уметь следовать ТЗ и правильные вопросы задавать. Если ТЗ просит написать одну функцию, то надо написать одну функцию, а не библиотеку на го. 3) всякая периферийная фигня, такая как знание средств разработки, баз данных и прочих вещей общих для всех ЯП

Vitaly
07.02.2018
14:10:23
Traversable можно понять по описанию класса. Даже если ты новичок, но с тайпклассами, как концепцией знаком и про Monoid знаешь.
Я не согласен. Там всё-таки уровень абстракции высокий, это только опытый программист может быстро схватить.

Начинающий от f t a и t f a сдохнет сразу

Dmitry
07.02.2018
14:11:00
менее опытный может спросить у более опытного или здесь в чате - не нужен ли мне траверсабл и как его сюда впилить

Dmitry
07.02.2018
14:12:06
заметим, что из этих требований вообще легко удаляется слово haskell

если оно вообще в нём присутствует.

Denis
07.02.2018
14:12:22
эти требования к любому ЯП применяются

Vitaly
07.02.2018
14:12:27
ага

Denis
07.02.2018
14:12:30
хаскелль тут ничем не примечателен на мой взгляд

только почему-то соискатели не всегда так думают

Vitaly
07.02.2018
14:13:00
я старый враг примечательности хаскеля!

Anatolii
07.02.2018
14:13:40
тут просто в чате когда начинают обсуждать высокие вещи - то новички сразу и разбегаются

Vitaly
07.02.2018
14:13:41
соискатели пытаются пониманием комонад хвастаться?

Denis
07.02.2018
14:15:23
я стараюсь избегать, ведь можно самому поплыть!

мне комонады для написания программ в жизни были нужны 0 раз

но это я наверное просто не знаю как их варить

Google
Leonid
07.02.2018
14:16:53
А как же комонад костейт коалгебра?

Denis
07.02.2018
14:17:05
кококо сокращенно

Vitaly
07.02.2018
14:17:23
ку-клукс-клан

kana
07.02.2018
14:18:04
фриман вот говорит, что комонадами хорошо UI моделировать

Denis
07.02.2018
14:19:01
в пурскрипте сектант каждый первый

Leonid
07.02.2018
14:19:11
Фриман пруф оф концепт либу так и не запилил

Denis
07.02.2018
14:19:14
у них halogen самая популярная либа для UI

Leonid
07.02.2018
14:20:06
Галоген не такой и страшный теперь. Было хуже.

Denis
07.02.2018
14:29:49
Фриман пруф оф концепт либу так и не запилил
ну как бы он ща сделал extensible effects через Day Convolution и через него же прототип линз

Denis
07.02.2018
14:31:16
А гуи?
в планах (на линзах же как раз можно сделать оптический gui)

Leonid
07.02.2018
14:33:34
разработаю ИИ чтоб на профункторах гуи

Denis
07.02.2018
14:34:37
я спросил почему нельзя сделать такие эффекты в хаскелл (он написал) The Day convolution bit is possible, but the trick here is to represent an n-ary Day convolution using row polymorphism.

вообще я пока не могу понять на должном уровне Day Convolution

а это прокаченный Day Convolution https://github.com/paf31/purescript-smash/blob/master/src/Data/Smash.purs#L53

Александр
07.02.2018
14:41:53
На PureScritp'е мы сейчас Web UI делаем с помощью портированного нашим коллегой reflex-dom: https://github.com/restaumatic/purescript-specular

Denis
07.02.2018
14:42:53
хм

а зачем портировать рефлекс если есть почти такой же purescript-behaviors?

Александр
07.02.2018
14:44:00
Это лучше у коллеги спросить. Может, ему не хватало самовыражения.

? animufag ?
07.02.2018
14:45:30
а вот например в halogen тоже вроде поначалу сигналы были и всякое фрп. в 0.4 вроде чому они отказались?

Google
A64m
07.02.2018
14:50:54
Dmitry
07.02.2018
14:51:22
нормально собираться и собирать проекты

ставиться из каких-то источников

нормальных.

находиться под активной разработкой, работать над компактизацией кода и оптимизацией

Denis
07.02.2018
14:51:53
нормально собираться и собирать проекты
так он собирается и юзается 8 ghc

Dmitry
07.02.2018
14:51:56
web assembly ?

я что-то не уверен насчёт "нормально", у нас сборка одного проекта даже с никсом занимает часов пять

Denis
07.02.2018
14:52:25
web assembly ?
так ghcjs и так собирает некую стейт машину что работает быстро

Dmitry
07.02.2018
14:52:38
и от этого возникает сильнейшее недовольство заказчика, например

A64m
07.02.2018
14:52:46
нормально собираться и собирать проекты
ну над этим какие-то люди вокруг рефлекса работают

Dmitry
07.02.2018
14:53:11
короче всё это не выглядит, как что-то надежное / годное, а выглядит как маргинальное ответвление, это если еще сам ghc не считать чем-то маргинальным

Александр
07.02.2018
14:53:23
не шляпа конечно, но и не панацея
Free монады - очень нужная концепция. Free-монадические языки решают ту же проблему, которую решают ООПшные интерфейсы, но в чисто функциональном стиле. Проблема называется коротко: Inversion of Control. Free-монады можно использовать в друх вариантах: - scenario-oriented eDSL - API-oriented eDSL Scenario-oriented eDSLs - это такие языки, на которых вы пишете бизнес-логику. Выражают предметную область, процессы и данные в ней. Такой DSL обычно спроектирован так, чтобы его методы были композабельные. API-oriented eDSL - это интерфейс к подсистеме. Композабельности методов относительно друг друга не требует, может представлять просто набор методов, абстрагирующих сервис.

Dmitry
07.02.2018
14:55:10
когда я их смотрел, то столкнулся с проблемой уже на уровне реализации ветвлений

A64m
07.02.2018
14:55:17
находиться под активной разработкой, работать над компактизацией кода и оптимизацией
активность автора плохо отслеживается, он годами что-то себе коммитит в стол, а потом, внезапно, бабах в репе новая ветка. Так что точно сказать нельзя, но он какое-то время назад работал над новым бекендом, продолжает ли он и сейчас или все уже сдохло неизвестно

Dmitry
07.02.2018
14:55:36
вот именно это и напрягает

A64m
07.02.2018
14:56:07
компиляция в вебасембли, может быть, ghcjs со временем убьет, но по-моему, и само будущее вебасембли под вопросом

Dmitry
07.02.2018
14:56:40
с тем, что было неочевидно, как делать ветвления в сценариях.

Google
Александр
07.02.2018
14:56:57
Ну просто if или case

Dmitry
07.02.2018
14:56:58
если где-то есть пример - я бы взглянул. вроде бы очевидная вещь, если мы говорим про dsl

Александр
07.02.2018
14:57:18
У меня есть кой-какие примеры, да

Dmitry
07.02.2018
14:57:29
доступны что бы посмотреть?

ну опять же, можно спросить например @qnikst почему они у себя не используют фри монады, а используют подход, о котром он рассказывал

Александр
07.02.2018
14:58:25
с тем, что было неочевидно, как делать ветвления в сценариях.
Если не хочется этот DSL сериализовать, то все конструкции языка валидны: myScenario :: Int -> Free MyDsl Int myScenario i = case i of 1 -> return 2 2 -> return 10 _ -> return i

Dmitry
07.02.2018
14:59:02
хм, пожалуй, я бы посмотрел на какие-то более полные примеры и в контексте

может быть, уже есть более лучшие статьи по фримонадам, чем были год - два назад

Александр
07.02.2018
14:59:33
доступны что бы посмотреть?
Да, у меня же для этого целый showcase проект есть (сопровождает книгу): https://github.com/graninas/Andromeda/blob/master/test/Test/ControlProgramSpec.hs

Dmitry
07.02.2018
15:00:29
что-то тут какое-то недопонимание.

явно.

Александр
07.02.2018
15:00:39
Поясните тогда

Dmitry
07.02.2018
15:00:50
ну это надо найти статью, где описывалось применение

Dmitry
07.02.2018
15:01:35
@qnikst рассказывал, как они композят разные системы - это вот реализация явных API

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

Александр
07.02.2018
15:02:58
Есть еще более продвинутый вариант - freer-монады. Мы их как раз сейчас в проекте используем.

Dmitry
07.02.2018
15:03:11
т.е что решают, как решают, почему это лучше, чем решение без них

т.е то, о чем была статья - это просто реализация некоего Dsl, интерпретация которого могла меняться в зависимости от.

Страница 815 из 1551