@haskellru

Страница 739 из 1551
Index
13.01.2018
14:39:29
Challenge: у меня есть библиотека для монадических эффектов, написанная с несколькими unsafeCoerce, но я хотел бы, чтобы их не было. У кого есть настроение побороться с компилятором?

Dmitry
13.01.2018
14:40:15
компилятор всё равно победит

Index
13.01.2018
14:40:40
Ну я его пока что победил через unsafeCoerce, а хочется как-то по-честному.

Alister
13.01.2018
14:43:28
компилятор всё равно победит
Снойман окажется сильней

Google
Index
13.01.2018
14:46:33
Да, но это один 'unsafeCoerce'. А сейчас я еще один использовал, и мне стало немного печально.

Denis
13.01.2018
14:48:23
Да, но это один 'unsafeCoerce'. А сейчас я еще один использовал, и мне стало немного печально.
у тебя же там newtype, может лучше заненить на coerce вроде как раз для такого он и сделан

Index
13.01.2018
14:49:13
Ну я начинал с coerce, но оно там не сошлось как-то

К тому же с использованием Any об этом речи идти не может.

Так что надо для начала придумать, как от Any избавиться.

Index
13.01.2018
14:53:02
https://github.com/int-index/caps

kana
13.01.2018
14:54:49


Denis
13.01.2018
14:55:14
Гонзалес стайл

kana
13.01.2018
14:58:37
а, хм, идея в том, чтобы разбивать один эффект на много разных? И чтобы потом подменять один логгер над IO на другой?

как в пурсе Eff вместо IO

Nikita
13.01.2018
15:02:23


Google
Index
13.01.2018
15:03:09
оно экспрессивнее тайпклассов, потому что не обязательно чтобы инстансы были на топ-левеле, их можно составлять в рантайме

то есть это такой fixed point над ReaderT мапы из словарей с эффектами

То есть если имеем эффекты E1, E2, E3, то это эквивалент ReaderT ( E1 '[E1, E2, E3], E2 '[E1, E2, E3], E3 '[E1, E2, E3] )

А основная проблема, которую решает фреймворк, это возможность такую мапу расширять (чтобы добавить E4) или менять эффекты так, чтобы это отразилось на других.

Например, если нетворинг и база данных используют логгинг, то когда мы подменяем словарик логгинга, нам надо обновить нетворкинг и БД тоже.

Если использовать эффекты mtl-style, то такого не будет.

Yuriy
13.01.2018
17:11:01
в чём разница между пакетами gtk и gtk3?

Andrei
13.01.2018
17:30:39
в чём разница между пакетами gtk и gtk3?
в первом — биндинги для gtk2

Yuriy
13.01.2018
17:30:59
то есть старьё?

Andrei
13.01.2018
17:31:34
да

Yuriy
13.01.2018
17:56:27
спасибо

Mikhail
14.01.2018
09:06:51
Привет! Подскажите, пожалуйста, как в ghci можно засовывать строковые литералы туда, где требуется ByteString? Couldn't match expected type `bytestring-0.10.8.2:Data.ByteString.Lazy.Internal.ByteString' with actual type `[Char]Написал в ghci {-# LANGUAGE OverloadedStrings #-}, но не помогло

Dmitry
14.01.2018
09:07:58
Эммм, не знаток, но может http://hackage.haskell.org/package/bytestring-0.10.8.2/docs/Data-ByteString-Lazy-Char8.html#v:pack

Mikhail
14.01.2018
09:13:41
Эммм, не знаток, но может http://hackage.haskell.org/package/bytestring-0.10.8.2/docs/Data-ByteString-Lazy-Char8.html#v:pack
Couldn't match expected type `Data.ByteString.Lazy.Internal.ByteString' with actual type `ByteString'Hm..

Leonid
14.01.2018
09:14:34
:set -XOverloadedStrings

Mikhail
14.01.2018
09:15:23
:set -XOverloadedStrings
Благодарю

Yuriy
14.01.2018
09:26:58
обратите внимание, что ByteString не адекватно преобразуется из String (адекватно только для ASCII)

то есть пригодно только для каких-то технических вещей вроде ключевых слов

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

Google
Mikhail
14.01.2018
09:31:31
А почему тогда Data.Aeson использует его для декодирования из джсона?

Aleksey
14.01.2018
09:38:11
Энкодинг надо делать

Yuriy
14.01.2018
09:38:28
нет, aeson не использует ByteString.pack (я не смотрел в код, но было бы странно)

сам по себе ByteString вполне адекватно хранит байты

Mikhail
14.01.2018
09:41:41
Aleksey
14.01.2018
09:42:40
Data.ByteString.UTF8.fromString

Yuriy
14.01.2018
09:44:59
но это уже немного в сторону, я просто хотел сказать, что ("пример" :: ByteString) может сильно удивить

Aleksey
14.01.2018
10:04:38
Такой уж инстанс IsString

Artem
14.01.2018
10:19:02
https://github.com/int-index/caps
а отрендеренная документация нигде не лежит случайно?

Index
14.01.2018
10:34:43
https://caps-0-dxkllnpysx.now.sh/

Случайно лежит.

Nikita
14.01.2018
10:40:48
Вопрос по выбору трекера задач. Хотелось бы (не в порядке приоритета): - зависимости между задачами, - спринты, - API, - html5 и нормальный UI, - иметь kanban, - добавление подзадач, - возможность выстраивать workflow как в JIRA (блоксхема из статусов), - интеграция с draw.io, - быть легким (не как JIRA), - интеграции с github, Расскажите, кто что использует?

Alister
14.01.2018
10:41:59
Trello

Хапстаф

Nikita
14.01.2018
10:42:36
Trello не умеет многое

спринты например

workflow статусов

Alister
14.01.2018
10:44:51
Плагины есть

Julian
14.01.2018
11:53:11
Я сам не пробовал, но как легковесную Джиру мне рекомендовали - https://yandex.ru/tracker/ Он не так давно вышел из внутреннего проекта Яндекса, но амбиции имеются.

Google
Nick
14.01.2018
11:57:56
А youtrack тяжёлый ?

На самом деле и Jira не сильно то тяжелая

Andrei
14.01.2018
11:58:26
define «тяжёлый»?

впрочем, я необъективен — я jetbrains за проставленные tab index готов простить почти всё

Nikita
14.01.2018
12:18:56
Кто нибудь пользуетя nixOS тут

Alexander
14.01.2018
12:19:51
да

Ignat
14.01.2018
12:20:52
Офк, но есть и специальный чят

Admin
ERROR: S client not available

Ignat
14.01.2018
12:21:13
@ru_nixos

Nikita
14.01.2018
12:21:48
Мне просто интересен nix package manager но я на darwin

macOS

Andrei
14.01.2018
12:22:07
nix-darwin есть

Ignat
14.01.2018
12:23:30
У меня там что-то странное происходит с обновлением каналов

Но тут собственно nix-darwin ни при чём

Mikhail
14.01.2018
15:38:44


Подскажите, а в чем оптимизация?

Yuriy
14.01.2018
15:39:59
ссылка на f не копируется на каждой итерации

Dmitry
14.01.2018
15:41:11
второй мап можно инлайнить

Mikhail
14.01.2018
15:42:00
А первый почему нельзя инлайнить? Это связанно с тем, как рекурсия компилируется в цикл?

Google
Yuriy
14.01.2018
15:42:05
второй мап можно инлайнить
первый тоже до некоторой глубины

рекурсия не всегда компилируется в цикл

рекурсия может компилироваться в jnz, и цикл может компилироваться в jnz

Ignat
14.01.2018
15:43:55
а конпелятор сам недостаточно умный, чтобы общий префикс аргументов зафиксировать?

Mikhail
14.01.2018
15:44:10
jnz - это jump?

Yuriy
14.01.2018
15:44:15
достаточно глупый компилятор может сказать, что первый map рекурсивный, и даже не пытаться его инлайнить до какой-то там глубины

A64m
14.01.2018
15:44:21
потому что не всегда приводит к улучшению кода.

Yuriy
14.01.2018
15:44:48
jnz - это jump?
ассебмлерная/машинная инструкция условного перехода

Mikhail
14.01.2018
15:44:57
if zero?

Ignat
14.01.2018
15:45:11
if not zero*

A64m
14.01.2018
15:45:35
теперь, правда, есть идея такая, делать это преобразование (оно называется STO) и если появились новые джойн пойнты, а старые не испортились - значит преобразование полезно

Yuriy
14.01.2018
15:45:37
zero или not zero — не суть. какой-то условный переход

Mikhail
14.01.2018
15:46:10
zero или not zero — не суть. какой-то условный переход
А разве не всякий цикл реализуется с помощью условного перехода?

Alister
14.01.2018
15:48:19


почему феминистики пишут на JS?

Yuriy
14.01.2018
15:48:45
почему феминистики пишут на JS?
это валидно и на Хаскеле

Alister
14.01.2018
15:49:08
ну это с сайта по JS

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