@haskellru

Страница 1309 из 1551
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
я заставил ту штуку скомпиляться

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

как там явно показывать типы по очереди, чтобы дырки заполнять?

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
А если попробовать stack dot :binary2?
попробовал, не помогло

Есть подозрение, что он строит один граф для проекта целиком

Yuriy
27.06.2018
08:48:15
должен обрезать

вторая программа зависит от первого пакета?

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

Yuriy
27.06.2018
08:49:11
кажется. он учитывает name из projectName.cabal
конечно, как-то учитывает

Timofey
27.06.2018
08:49:40
вторая программа зависит от первого пакета?
нет. Два экзешника зависят от одной либы, экзешники друг от друга не зависят

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

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

Google
Timofey
27.06.2018
08:54:04
name: projectName library: ... executables: binary1: dependencies: - projectName - optparse-applicative binary2: dependencies: - shake - projectName

выдержка из package.yaml

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

?

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

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

Alex
27.06.2018
11:01:28
А как он может зафейлить? Достичь конца файла?
он фейлит когда там ньюлайн или конец

возможно, а как нужно это должно выглядеть?

Ilya
27.06.2018
11:02:59
сдается мне, ты хочешь optional
которого я в megaparsec почему-то не нахожу

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

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