@haskellru

Страница 390 из 1551
Aleksey
05.09.2017
13:19:01
Так проблема в том, что не имея обобщенного функтора я не смогу написать один раз библиотеку, подходящуюю для любых функторов

Та же фигня с аппликативом

Alexander
05.09.2017
13:19:13
как это будет выглядеть в без класса типов

Aleksey
05.09.2017
13:19:40
Именно поэтому в Elm трэш, угар и неполный набор базовых функций от коллекции к коллекции

Google
Alexander
05.09.2017
13:20:48
есть ли какая-то гарантия наличия Functor если у меня есть Monad или Applicative?

если нету классов типов и обобщения

Aleksey
05.09.2017
13:21:00
mapM, concatMap, foldMap - вот эти все комбинаторы писать каждый раз для любого подходящего типа? Это и долго и error prone (мало ли как там взбредет автору очередной либы map реализовать)

Aleksey
05.09.2017
13:22:27
fmap разный, а вот комбинаторы один раз написаны

? animufag ?
05.09.2017
13:22:31
переписывать пришлось бы

Vasiliy
05.09.2017
13:23:07
? animufag ?
05.09.2017
13:23:30
Alexander
05.09.2017
13:23:35
имплементация для fmap, но не для комбинаторов

Vasiliy
05.09.2017
13:23:35
ну да

Aleksey
05.09.2017
13:23:36
fmap, это "интерфейс". Его надо реализовать (или вывести). Это позволит "писать на интерфейсах, а не на реализациях" - одна из основных best practices в ООП :)

Google
Aleksey
05.09.2017
13:27:25
Проблема не только в функторе. В Elm я не могу сделать Map с произвольным ключем - вот это реальный фейл! Потому что нет Eq, Ord и прочих Hash

И вот отсутствие тахих приземлённых тайпклассов дико раздражает

Dmitry
05.09.2017
13:28:29
а как там сделано?

как в окамле?

или контейнеры не полиморфные?

Alexander
05.09.2017
13:28:56
а там нельзя руками словарики попередавать?

Aleksey
05.09.2017
13:30:04
В Elm только встроенные типы (примитивы) могут быть ключами и сравниваться на равенство. Даже кортежи не могут

Alexander
05.09.2017
13:30:22
а понял, готовый map

ясно

Map

Aleksey
05.09.2017
13:31:09
или контейнеры не полиморфные?
контейнеры полиморфные по значению и "магические" по ключу - ключ может быть любого типа, но из списка возможных

Dmitry
05.09.2017
13:31:20
аааа

ну нельзя же так.

Aleksey
05.09.2017
13:32:11
"Котята терпят, колются, но продолжают жрать кактус"

Причем хэшируемость и проверка на эквивалентность есть для пользовательских типов есть уже много где и давно, но нет, Эвану виднее, поэтому в Elm нету (прямо как с Пайком в Го)

Дмитрий
05.09.2017
13:36:36
Садизм какой-то

Такой Elm точно не нужен

Aleksey
05.09.2017
13:38:20
В итоге единственны вариант - класть функцию a -> Key прямо в мапу. Либо тупо таскать в аргументе (так делают в паре либ. Пример: http://package.elm-lang.org/packages/careport/elm-avl/1.0.0/Avl-Dict)

kana
05.09.2017
13:46:43
вы забываете, что Elm - не язык общего назначения, это язык под конктерный юзкейс. Без тайпклассов больно, но в 95% случаев они и не нужны. Эван просто не хочет ради 5% сильно усложнять язык, хоть прекрасно понимает, что они нужны (а жс-еры въедут в тайпклассы далеко не сразу)

Dmitry
05.09.2017
13:50:15
а жс-еры въедут в elm ?

Google
Dmitry
05.09.2017
13:50:21
им и на js хорошо

kana
05.09.2017
13:50:42
ну почему нет, элм намного проще js

Dmitry
05.09.2017
13:51:16
ну у них должна быть какая-то мотивация, если же они уже js-еры, какая им разница, что elm проще?

kana
05.09.2017
13:51:30
я сидел полгода в слаке элма, там большая часть пришла из js и хаскель не знают

их мотивация - убрать undefined is not a function)

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

Dmitry
05.09.2017
13:52:50
ну, хорошо если так.

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

без хаков на уровне языка

Aleksey
05.09.2017
14:07:50
В итоге на Эльме куча вещей даже из его же юзкейса деляется ну очень неудобно

Но да, "просто зато"

Arseniy
05.09.2017
14:18:01
Purescript❤️

Max
05.09.2017
14:20:13
а жс-еры въедут в elm ?
Опыт показывает, что матерятся, но плывут

Alexander
05.09.2017
14:22:55
это опыт программирования в целом

/me начал прослеживать тенденцию в комментариях @jagajaga : ]

Igor
05.09.2017
14:29:21
Опыт показывает, что матерятся, но плывут
Как-то очень медленно. В JS-react чате ~3k людей, а в Elm < 100

Олег
05.09.2017
14:30:18
Привет. Какой плагин ставить на VS Code для Хаскеля, может кто посоветовать?

Max
05.09.2017
14:30:42
Как-то очень медленно. В JS-react чате ~3k людей, а в Elm < 100
Нас спасает технофашистские методы работы

Daniel
05.09.2017
14:36:51
'>' переход или сравнение?

Google
Тёма
05.09.2017
14:37:24
а жс-еры въедут в elm ?
Почему нет? Въезжают и радуются. Столько костей же сломали без статической проверки типов. Тайпскрипт –– не панацея. А элм всё скажет, всё расскажет, место в коде покажет. Надо лишь попробовать.

? animufag ?
05.09.2017
14:38:50
Aleksey
05.09.2017
14:40:51
Как-то очень медленно. В JS-react чате ~3k людей, а в Elm < 100
Потому как официальный пруд, где они водятся и нерестятся, это эльмослак - там тысячи их

? animufag ?
05.09.2017
14:41:31
Почему нет? Въезжают и радуются. Столько костей же сломали без статической проверки типов. Тайпскрипт –– не панацея. А элм всё скажет, всё расскажет, место в коде покажет. Надо лишь попробовать.
кстати, да. ограниченность статической системы типов даёт больше возможностей для диагностики ошибок. это как в го, только в го нужно interface {} делать, что совсем больно

Aleksey
05.09.2017
14:42:22
Даёт больше возможностей допустить ошибки по причине невозможности достаточно хорошо закодировать домен, вы хотите сказать?

Иначе Брейнфак всё бы зарулил - там один тип только и есть, вот уж где точно "легко диагностировать ошибки" :)

Дмитрий
05.09.2017
14:44:33
malbolge

Aleksey
05.09.2017
14:45:09
Не, malbolge, это уже спецолимпиада. Типа Perl6

Тёма
05.09.2017
14:46:34
Ну вообще про весь этот элм уже давно сказано: Formal methods will never have a significant impact until they can be used by people that don’t understand them. Ну, вот мы и пришли, собственно.

Элм выучить проще жс-а в разы с нуля.

? animufag ?
05.09.2017
14:50:28
Даёт больше возможностей допустить ошибки по причине невозможности достаточно хорошо закодировать домен, вы хотите сказать?
ну в хаскеле обычно получаешь ошибку что нет инстанса там то там то. хотя в большинстве случаев поможет не определение инстанса а подстановка нужно аргумента (легко запутаться когда применение через пробел записывается)

Тёма
05.09.2017
14:50:30
Даёт больше возможностей допустить ошибки по причине невозможности достаточно хорошо закодировать домен, вы хотите сказать?
Скорее всего имелось в виду, что строгая типизация даёт больше возможностей для хорошей диагностики с подсказками и прочей дружественностью

Олег
05.09.2017
14:50:36
haskerro > haskelly
Haskerro работает хорошо, спасибо

? animufag ?
05.09.2017
14:51:07
Haskerro работает хорошо, спасибо
пишет тип для сущности?

Олег
05.09.2017
15:43:12
пишет тип для сущности?
При наведении курсора - да :)

Daniel
05.09.2017
15:43:57
кстати, для этого нет хоткея как в идее?

? animufag ?
05.09.2017
15:48:46
При наведении курсора - да :)
Значит ок. Просто у меня не сразу всё встало.

Denis
05.09.2017
15:50:56
А как же рефлекс для фронта?)

kana
05.09.2017
18:55:35
Слушайте, а тип Void -> a населен?

Тёма
05.09.2017
18:55:59
Боттомом как минимум :)

Google
kana
05.09.2017
18:56:07
я знаю про absurd, но я не очень понимаю, как может существовать функция, которая ничего не принимает

ну, если бы не было bottom

Alexander
05.09.2017
19:05:52
absurd :: Void -> a она не ничего не принимает, а принимает ничего

Vasiliy
05.09.2017
19:08:05
absurd a = let x = absurd a in x

только она вернёт боттом

Alexander
05.09.2017
19:10:02
ну это не удивительно

нужно может быть если есть, например какая-нить бесконечная функция, типа forever blabla её логично сделать тип m Void, но если вдруг по каким-то причинам надо её композить с другой, например всякими примитивами из async то там иногда нужно вызывать absurd

Index
05.09.2017
19:11:54
Слушайте, а тип Void -> a населен?
Конечно, потому что это id :)

Void можно рассматривать как forall a. a

Alexander
05.09.2017
19:12:30
эм...

Index
05.09.2017
19:13:00
newtype Void = Void { absurd :: forall a. a } data Void написать изоморфизм - упражнение читателю

Alexander
05.09.2017
19:13:31
это то понятно, вот "потому что это id" как-то неочевидно, что так

Index
05.09.2017
19:13:42
это id up to isomorphism

То есть для одного из возможных определений Void это просто unwrapping ньютайп-конструктора

kana
05.09.2017
19:17:37
не существует же функции Void -> Void

как и любой другой a -> Void

Index
05.09.2017
19:18:09
id

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