A64m
16.10.2017
09:44:53
получаются такие вот вилы Мортона, при дефолтных настройках выиграть меняя один A невозможно.
@qnikst не уверен что поровну. В какие чанки капабилити набрала для аллокации, те один поток ГЦ трейсит, вроде так.
Alexander
16.10.2017
09:47:37
о, ваще ужасно
это ж почти гарантировано, что одна capability наберёт больше других
Google
A64m
16.10.2017
09:53:39
но я не уверен на этот счет
показатели Parallel GC work balance привда без qb0 обычно ниже плинтуса, как они этого добиваются я помню плохо
Denis
16.10.2017
10:45:09
спасибо
A64m
16.10.2017
15:50:00
отлично, обсуждение первого языка для изучения фп поползло на реддит.
мой личный анекдотический опыт с пурскриптом: когда я переписывал небольшой хеллоуворлд на хаскеле на другие ФЯ (для бенчмарков и определения мест где требуется расставление костылей) я быстро и без особых проблем переписал его на ocaml, f#, alice, idris и даже scala, который и фя-то не назовешь. Но пурскриптовая версия так и не заработала - вышибает стек и привет.
Диёр
16.10.2017
15:54:30
но ок
Pig
16.10.2017
15:59:18
F# какой-то уж очень ограниченный
Тёма
16.10.2017
15:59:38
Чего не скажешь о F*
Диёр
16.10.2017
16:00:39
А F* сырой
Pig
16.10.2017
16:01:07
Пишешь:
let const x _ = x
let const' _ x = x
let curry f x y = f (x, y)
let uncurry f (x, y) = f x y
А вот так уже нельзя:
let fst = uncurry const
И сразу как-то скучно становится.
Google
A64m
16.10.2017
16:01:42
система типов у F# самая убогая из перечисленных, но хоть есть какие-то элементарные ФП удобства вроде нормальнго сранения, не слишком страшного ПМ и сносного вывода типов, чег в скале, например нету
Denis
16.10.2017
16:01:42
A64m
16.10.2017
16:02:12
@xgrommx я их и использовал
Denis
16.10.2017
16:03:05
A64m
16.10.2017
16:04:53
вероятно, но с этим имплементация будет самая костыльная, из работающего по костыльности чемпион смл из-за худших возможностей по завязыванию узлов
Так что для обучения начинающего я бы не рекомендовал
вообще строгий язык с хаскельным синтаксисом (т.е всякие where и let rec по умолчанию) уже минное поле
а тут еще и имплементаация совсем сырая, даже наколеночный haste так весело стек не вышибает на каждом шагу
Alexander
16.10.2017
16:15:36
почему dhall считают хорошей вещью?
Leonid
16.10.2017
16:16:25
Потому что Гонзалес
Index
16.10.2017
16:16:36
Потому что Гонзалез
Alexander
16.10.2017
16:18:55
страннота
A64m
16.10.2017
16:19:52
он страшно выглядит и требует много аннотаций типов и вообще какого-то странного бойлерплейта
но сама концепция-то нормальная
Alexander
16.10.2017
16:21:04
там ни ad-hoc ни row-polymorphism нету
это полная печалька
и мало средств для абтракции
блин нельзя написать let mkType = \a -> .. uses a in let b = [...] : mkType a in b
Denis
16.10.2017
16:56:03
Dhall всем нравится, гм, платонически
Yuriy
16.10.2017
16:57:08
Google
Alexander
16.10.2017
16:57:49
но почему нужен он, а не аналог, который писать пару вечером и он будет делать что надо?
A64m
16.10.2017
16:58:20
ну не пару вечеров, конечно
Yuriy
16.10.2017
16:58:44
ну напиши за пару вечеров аналог
A64m
16.10.2017
16:58:47
но лучше бы действительно кто-то сделал аналог
Alexander
16.10.2017
16:59:11
вот пока вопрос, не лучше ли в dhall контрибьютить
а там правда отличные error messages
A64m
16.10.2017
17:00:19
не думаю, что так в нем можно будет что-то значительное изменить
Alexander
16.10.2017
17:00:19
у меня без прокрутки терминала их не прочитать правда, там какое-то сочинение было
J
16.10.2017
17:12:39
Пыщ
IC
16.10.2017
17:46:36
https://pbs.twimg.com/media/DMLHtKdX0AAwNGN.jpg:large
твоё лицо, когда в твоём языке о ф и г е н н ы е типы
Daniel
16.10.2017
19:23:01
нубский вопрос:
Пытаюсь с тестами в хаскелле разобраться (hspec).
Я правильно понимаю, что в тестах видны только exposed-modules и поэтому надо стараться все выносить из executable в library в exposed-modules?
Мне с непривычки это кажется странным (как тестировать тогда other-modules). Может я доки плохо просмотрел, а может так и принято.
IC
16.10.2017
20:02:14
в executable вообще лучше по минимуму держать. как раз в связи с тестированием, да
Alexander
16.10.2017
20:09:25
internal library вводить
и в ней держать other-modules
библиотека внутренняя пишется просто как
library internal в кабал файле
ну вообще любая именованная библиотека явлй яется внутренней и не экспортируется, но ее можно испортировать в тестах
с другой стороны other-modules в общем случае это далеко не лучшая затея
и неясно зачем так делать
ну кроме того, чтобы портить другим жизнь
Google
Yuriy
16.10.2017
20:33:41
Alexander
16.10.2017
20:35:35
кто, когда отказался?
я вот сейчас у себя собрал так проект
причем тесты в отдельном hs-source-dir им модуля не видно
в документации новой тоже это есть
Yuriy
16.10.2017
20:37:46
просто пару лет назад ходили разговоры, а я год назад нашёл тикет, в котором решили не делать
Alexander
16.10.2017
20:39:09
ни разу не видел
> Cabal 2.0 and later support “internal libraries”, which are extra named libraries (as opposed to the usual unnamed library section)
https://www.haskell.org/cabal/users-guide/developing-packages.html#developing-packages
мне интересно common-fields ли запилили
illiatshurotshka❄️
16.10.2017
20:53:47
я правильно понимаю что комоноид и моноид это одно и тоже?
Bohdan
16.10.2017
20:55:07
Ilya
16.10.2017
21:37:39
Я просто развернул все стрелки, а так я не в теме
illiatshurotshka❄️
16.10.2017
21:38:24
все сложно
kana
16.10.2017
21:38:29
ну, у моноида есть (a, a) -> a, у комоноида a -> (a, a)
и memtpy :: () -> a в a -> ()
comconcat в бесконечный массив развернет
Андрей
16.10.2017
21:39:09
а вообще забавно как он лист развернет из мконката )
Ilya
16.10.2017
21:39:10
illiatshurotshka❄️
16.10.2017
21:39:39
как у нас появляется продукт
Google
illiatshurotshka❄️
16.10.2017
21:40:47
и синглтон сет
из одного обьекта
если мы просто стрелки повернули >_>
Pig
16.10.2017
21:42:52
А зачем моноиду concat?
illiatshurotshka❄️
16.10.2017
21:43:09
конвиниенс
Ilya
16.10.2017
21:44:41
Когда мы отделяем от строки по одной буковке - это комоноид? Или раскладываем натуральное число в сумму единиц?
Пытаюсь придумать какие-то примеры чисто по сигнатуре...
Андрей
16.10.2017
21:45:11
а в сумму двоек не катит?
Ilya
16.10.2017
21:45:56
Андрей
16.10.2017
21:46:02
или в бесконечную сумму нулей, как ту выше предлагали )))
kana
16.10.2017
21:46:04
да я хз вообще, я не шарю)
Андрей
16.10.2017
21:46:34
а что - бесконечный список мемптев как сомконкат! ) как идея?
Ilya
16.10.2017
21:46:35
В comappend
comconcat 7 = [1, 1, 1, 1, 1, 1, 1, 0, 0, 0...]
comconcat "hask" = ["h", "a", "s", "k", "", "", "", ...]
Какой-то бред
illiatshurotshka❄️
16.10.2017
21:50:04
лоол
откуда код?