
Александр
12.05.2018
08:17:31
Ну а как их посчитать? Каждый байнд учитывать? Оценка в строчках более удобная
И вот, кстати, мысль. Если Free в ленивом стиле байндит одну цепочку к другой, пробегая по всем элементам первой, и отсюда лезет квадрат, то что мешает вычислись результат до какой-нибудь NF (поправьте, если ошибаюсь), и получить просто линейную цепочку?
Или я чего-то не понимаю?

Alexander
12.05.2018
08:27:17
ну для free реализации это разумно, а для обычной скорее число STM операций и длина беклога

Google

Александр
12.05.2018
08:27:54
Что такое "беклог"?

Alexander
12.05.2018
09:22:29
опс, transaction log
список действий, которые перепроверяются при коммите
в общем-то список read-ов разных тварей (и.к. повторный read уже локальный)

Denis
12.05.2018
09:39:39
https://github.com/jwiegley/ghc-dynamic-example

Dmitry
12.05.2018
10:44:36
Добрый день! Можете подсказать как в vscode рефакторинг (HaRe?) подключить? После установки hie рефакторинга нет (может не туда смотрю?).

Anatolii
12.05.2018
10:53:13

Denis
12.05.2018
10:53:44

Alister
12.05.2018
12:06:20
реквестирую статическую кложу

Alexander
12.05.2018
12:06:51
лень

Maxim
12.05.2018
12:08:35
Там кстати фейсбук выкатил свой тайпчекер для питона
https://pyre-check.org
А вы в кложу не можете

kana
12.05.2018
12:11:18
join .(N+1) liftAN - вроде как довольно частая вещь. Никто нигде не видел готового общепринятого хелпера/нейминга?
liftMN уже занят, можно взять liftAMN

Google

Maxim
12.05.2018
12:25:16
Народ, а hie обязательно должен быть собран тем же компилятором, что и проект?
Если я соберу его системным гхц, а проект собираю стеком со своим компилером, будет работать? Версии обоих 8.0.2

Александр
12.05.2018
12:28:15
Обязательно :(

Denis
12.05.2018
12:29:49
мб можно под проект локально собирать

Ilya
12.05.2018
12:40:14
как проапдейтить поле структуры по "вынимающей функции"?
допустим, есть такой тип
data Crowd a = Crowd {first :: a, second :: a, third :: a} deriving Functor
type Man = forall a. Crowd a -> a
хочу написать такую функцию, но не знаю как
forget :: Bounded a => Man -> Crowd a -> [Crowd a]
forget = undefined
-- forget first (Crowd _ s t) = [(Crowd f s t) | f <- [minBound..maxBound]]
в комментарии к forget пример, как она должна работать. Но я не могу заматчить first.
Если type Man выбран неудачно, то какой тут нужен на самом деле?

Maxim
12.05.2018
12:50:53
Я до сих пор не понимаю до конца где что и зачем хранит стек
Хоть на никс переходи
Кстати, никс может собирать мне только хаскель, а всякие зависимости брать из системы?

Alexander
12.05.2018
12:52:43
в .stack-work локальное в ,~/.stack глобальное

Ilya
12.05.2018
12:53:55

kana
12.05.2018
12:57:14
линзы же

Maxim
12.05.2018
12:57:32

Ilya
12.05.2018
12:57:57
линзы же
вместо Crowd может быть более сложный тип, например список или ещё хз что. Всё равно линзы?

kana
12.05.2018
12:58:05
да

Ilya
12.05.2018
12:58:12
спасибо, пошёл читать

Dmitry
12.05.2018
12:58:23
Добавил Enum a, все прошло

Alexander
12.05.2018
12:58:48

Ilya
12.05.2018
12:59:24

Maxim
12.05.2018
12:59:42
Инфраструктура на высоте

Google

Dmitry
12.05.2018
12:59:59
undefined закомментировал. Следующую сточку раскомментировал

Ilya
12.05.2018
13:00:29

kana
12.05.2018
13:01:39
такая функция не заработает, ну что вы
какой блин матчинг по функции
там first будет не тот геттер first, он любой геттер сматчит очевидно

Dmitry
12.05.2018
13:02:02
это правда :-)

Ilya
12.05.2018
13:02:07

Dmitry
12.05.2018
13:02:35
я просто думал, что проблема в компиляции

Ilya
12.05.2018
13:03:21

Dmitry
12.05.2018
13:04:53
lens или даже generic-lens

kana
12.05.2018
13:06:48
@Masteroid

Ilya
12.05.2018
13:09:27
оно на темплейтах работает, да?
за код спасибо, пошёл курить доки

kana
12.05.2018
13:13:04
можно и без TH
а можно через generic-lens через generic
@Masteroid - есть и моя маленькая простая реализация (которой бесконечно далеко до generic-lens, но идея понятна)
Пример использования символов в хаскеле - недолинзы:
https://gist.github.com/kana-sama/733e3596fe2d88a58e1dc3f73868eb8b
(Есть и пакет с чем-то подобным - generic-lens, там все инстансы генерируются)
вот с генерацией через generic: https://gist.github.com/kana-sama/b7f8a2a405061260a2ee7beafbd59e32

Google

Ilya
12.05.2018
13:19:26

kana
12.05.2018
13:22:08
lens - старые кметовские линзы для всего подряд + генерация через template haskell
в generic-lens линзы уже модные профункторные, генерация через Generic
трогать новичку generic-lens имхо не нужно, как показывает время компиляции, это еще игрушка
могу ошибаться
а нет, в generic не все профункторные
но либы скорее всего совместимы между собой, generic-lens просто поставляет код для generic-генерации линз, которые можно использовать уже через функции пакета lens

A64m
12.05.2018
13:26:26

Maxim
12.05.2018
13:44:18
Да я не только про иде, сборка тоже так себе. Стэк этот блин

A64m
12.05.2018
13:46:46
стек был получше в первые годы, когда они старались популярными стать, теперь он не особо развивается, глюкавый (и с этим ничего не делают), отстает от гхц-кабала(как библиотеки) на месяцы (в случае модулей, на годы)

Maxim
12.05.2018
13:48:54
Я наверное в один момент окончательно от этого устану и возьму никс

A64m
12.05.2018
13:49:29
там тоже настрадаться придется

Maxim
12.05.2018
13:49:52
Что стоит знать прежде чем попробую?

A64m
12.05.2018
13:51:24
я в нем не разбираюсь, я к тому что там все равно придется использовать какой-то хаскельный билд-тулинг (кабал инстол тот же) чтоб инкрементально компилять

Александр
12.05.2018
13:51:41
Стоит знать, что в чатике есть люди, склонные драматизировать

Maxim
12.05.2018
13:51:55
У никса есть какая-то интеграция со стаком
Может вместе они будут лучше

A64m
12.05.2018
13:52:43
ну она для того чтоб нехаскельные зависимости никсом ставить

Maxim
12.05.2018
13:53:12
Меня пока больше всего бесит, что какой-то пакет ломается на ровном месте и приходится удалять стек ворк
Нет бы пересобрать только что сломано и от него зависящие
А 200 зависимостей, среди которых плюсня, у меня долго собираются

Google

Александр
12.05.2018
13:55:06

Yuriy
12.05.2018
13:55:32
можно удалять не весь stack-work, а по частям
200 зависимостей должны быть не в stack-work, а в глобальном ~/.stack (который тоже можно убивать по частям)

Александр
12.05.2018
13:56:14
А зачем столько зависимостей?
Что они делают для проекта?

Maxim
12.05.2018
13:56:27
Кажется как-то так: делаю гит пулл, какая-то зависимость поменяла версию и пересобралась, а что-то установленное с ней не совместимо
Все что собирает стек короче

Yuriy
12.05.2018
13:57:03

Maxim
12.05.2018
13:57:42
А как грохать частями?

Александр
12.05.2018
13:58:03
Наверное, нам на проекте очень везет.

Maxim
12.05.2018
13:58:04
Допустим у меня стеком собран lens и он сломался. Что удалять?
lens просто для примера

A64m
12.05.2018
13:58:22

Maxim
12.05.2018
13:58:26
Там же ещё какой-то package db, нельзя наверное просто удалить

Yuriy
12.05.2018
13:58:34

Maxim
12.05.2018
13:58:38

Mink
12.05.2018
14:00:48
Хех, hie, как никто другой помогает хасклю избежать успеха

Maxim
12.05.2018
14:01:06