
Alexander
26.06.2018
19:02:41
точно у тебя ж hpack

Ilya
26.06.2018
19:03:02
угу, это все стэк ?

Alexander
26.06.2018
19:05:02
скорее hpack
стек-то ещё куда ни шло

Google

Ilya
26.06.2018
19:07:00
стэк сейчас hpack по умолчанию предлагает

Alexander
26.06.2018
19:11:05
всегда знал что стек это плохо
блин на ноуте опять сдох телеграм и чтож такое

Alex
26.06.2018
19:24:39
Это было бы замечательно:)
Да, можем поревьюить :)
Завтра скину

Alexander
26.06.2018
20:07:35
я заставил ту штуку скомпиляться
не ясно что с суперрекордом делать, который неиндуктивный нифига
как там явно показывать типы по очереди, чтобы дырки заполнять?

Антон
26.06.2018
21:10:24

Timofey
27.06.2018
08:30:20
Вопрос по stack dot- он умеет графы зависимостей для проектов с несколькими executables?
у меня в проекте их два, binary1 и binary2, команда stack dot binary2 всё равно строит граф для binary1

Mink
27.06.2018
08:35:48
А если попробовать stack dot :binary2?

Google

Yuriy
27.06.2018
08:36:18
странно
может, 2 зависит от 1?
судя по справке, он должен отдельно с компонентом работать
executables в разных пакетах или в одном?

Timofey
27.06.2018
08:43:12
Есть подозрение, что он строит один граф для проекта целиком

Yuriy
27.06.2018
08:48:15
должен обрезать
вторая программа зависит от первого пакета?

Timofey
27.06.2018
08:48:44
кажется. он учитывает name из projectName.cabal

Yuriy
27.06.2018
08:49:11

Timofey
27.06.2018
08:49:40

Yuriy
27.06.2018
08:50:32
строго говоря, нельзя зависеть от либы как компонента, только от пакета целиком

Timofey
27.06.2018
08:50:53

Yuriy
27.06.2018
08:51:13
нет, всё правильно, это очень тонкая тонкость

Timofey
27.06.2018
08:51:29
в таком случае да, оба экзешника завсят от всего пакета

Yuriy
27.06.2018
08:51:37
если программа Б зависит от пакета А, то программы в пакете А тоже должны собираться для Б
или общая библиотека в третьем пакете?

Mink
27.06.2018
08:53:10
Похоже, что таки не умеет. Цитата:
Side note: When any exe component is specified, all of the package's executable components will be built. This is due to limitations in all currently released versions of Cabal. See issue#1046
https://docs.haskellstack.org/en/v1.7.1/build_command/#target-syntax

Yuriy
27.06.2018
08:54:00

Google

Timofey
27.06.2018
08:54:04
name: projectName
library:
...
executables:
binary1:
dependencies:
- projectName
- optparse-applicative
binary2:
dependencies:
- shake
- projectName
выдержка из package.yaml

Yuriy
27.06.2018
08:54:23

Timofey
27.06.2018
08:54:57
и перепутал модули и пакеты =|

Yuriy
27.06.2018
08:55:54
вряд ли модули
проект (stack.yaml) состоит из пакетов (package.yaml | *.cabal)
пакет — из компонентов
компонент = библиотека | программа | тест
у тебя здесь один проект, один пакет, 3 компонента
а собирать одну программу из пакета Кабал не умеет
поэтому граф для binary2 включает и binary1

Timofey
27.06.2018
08:59:34
Спасибо, теперь стало ясно =)

Yuriy
27.06.2018
08:59:58
если разнести по разным пакетам, то, может, будет лучше

Alex
27.06.2018
09:53:59
Господа, а как узнать в мегапарсеке, что парсер зафейлил?

Yuriy
27.06.2018
09:55:18
для чего?
p1 <|> p2 — если начался p2, то p1 зафэйлил, например

Alex
27.06.2018
09:56:59
Вот такой код pos :: Parser Position
pos = do
posName <- clexem
c <- anyChar
if c == ',' then
return $ Position posName ""
else if c == '=' then do
posValue <- clexem
try $ char ','
return $ Position posName posValue
else
return $ Position posName ""
c <- anyChar в вот этот момент парсер может зафейлить и если это так, то мне нужно не выполняться дальше
Как это сделать?

Google

Alex
27.06.2018
09:59:04
Try не подходит, потому, что я не знаю успешно он там отработал или нет

Dmitry
27.06.2018
10:00:24
if ... else if... лучше на case заменить.

Alex
27.06.2018
10:00:47
Справедливо

Maxim
27.06.2018
10:01:36
парсер же и так зафейлится весь если какая-то его часть фейлится, зачем что-то еще городить?
(или я не понял?)

Alex
27.06.2018
10:02:47
Мне нужно что в стиле try, который дает понять, сфейлилось оно там внутри или нет
Не подскажите?:)

Dmitry
27.06.2018
10:05:21
c <- anyChar `onException` return '$'
Смотри Control.Monad.Catch, ищи функции по вкусу

Admin
ERROR: S client not available

Ilya
27.06.2018
10:17:28
эксепшены в парсере это нормально?

Alex
27.06.2018
10:17:36
Почему-то фейлиться вот так
``` c <- anyChar onException return $ Position posName "" ```
c <- anyChar `onException` return `$` Position posName ""
Не компилится
Вот такая ошибка
parse error on input `$'

Dmitry
27.06.2018
10:27:34
return (Postion posName "")

Alex
27.06.2018
10:32:03
c <- anyChar `onException` return (Position posName "")
Вот такая ошибка

Google

Alex
27.06.2018
10:32:19
No instance for (Control.Monad.Catch.MonadCatch
(ParsecT Void String Data.Functor.Identity.Identity))
arising from a use of `onException'
Я неправильно написал?

Yuriy
27.06.2018
10:35:22
какие ещё исключения? несовпадения в парсере не бросают исключения
попробуй через <|>
кстати, это какой парсек?

Alex
27.06.2018
10:37:10
мега
megaparsec
Эта штука не поможет, потому, что тогда я не смогу узнать что в c
Я кажется придумал грязный хак

Yuriy
27.06.2018
10:40:58

Alex
27.06.2018
10:41:41
то есть мне нужно будет проверить как в стиле if c == undefined
?

Maxim
27.06.2018
10:42:02

Alex
27.06.2018
10:42:18
Я знаю

Dmitry
27.06.2018
10:57:02

Ilya
27.06.2018
11:00:29
сдается мне, ты хочешь optional

Alex
27.06.2018
11:01:28
возможно, а как нужно это должно выглядеть?

Ilya
27.06.2018
11:02:59

Yuriy
27.06.2018
11:03:41

Ilya
27.06.2018
11:03:56
а, ну да