проверка типа во время выполнения с помощью haskell/cabal/stack

В проекте Haskell я использую зависимость, которая, как я знаю, содержит ошибку типа. Но на самом деле это нормально, так как я никогда не вызываю этот код.

Поэтому я хочу включить defer-type-errors, но только для этого зависимого пакета.

Есть ли способ где-то охватить эту инструкцию компилятора (стек? Кабал?)


person nicolas    schedule 19.04.2016    source источник
comment
Разве исправление пакета не было бы лучшим решением...?   -  person Daniel Wagner    schedule 19.04.2016
comment
конечно, но это все равно, что сказать, что нам не нужны ошибки отложенного типа   -  person nicolas    schedule 19.04.2016
comment
и на самом деле в этом случае нет ошибки типа как таковой. он отлично компилируется с ghc, но ghcjs, к сожалению, отображает какой-то другой примитивный тип   -  person nicolas    schedule 19.04.2016
comment
Карты GHCJS заменяют CTime на HTYPE_TIME_T (github .com/ghcjs/ghcjs-boot/blob/master/boot/base/Foreign/C/) и сопоставляет этот символ с Int32 (github.com/ghcjs/ghcjs/blob/master/include/HsBaseConfig.h), тогда как ghc сопоставляется с Int64   -  person nicolas    schedule 19.04.2016
comment
в идеале у нас не было бы ошибок и т. д., но, поскольку я все равно не использую этот код, защелка выхода была бы полезна, если бы она не была общей.   -  person nicolas    schedule 19.04.2016
comment
Если вам действительно нужно, вы можете установить параметры ghc для каждого пакета. в stack.yaml. Я не уверен, совместим ли он с ghcjs.   -  person zakyggaps    schedule 19.04.2016
comment
@nicolas Я думаю, что это отличается от того, чтобы сказать, что нам не нужен -fdefer-type-errors: этот флаг может быть полезным инструментом во время разработки, даже не появляясь в производственной системе.   -  person Daniel Wagner    schedule 19.04.2016
comment
@DanielWagner, и это тоже может быть здесь полезно. Я знаю, что не использую проблемную библиотеку. Исправление некоторых констант глубоко в кишках GHCJS с потенциально волнообразными последствиями для чего-то, что я не использую, не приносит большой пользы.   -  person nicolas    schedule 20.04.2016
comment
@DanielWagner Я согласен с тем, что бремя доказательства слишком велико для меня, чтобы утверждать, что это равносильно утверждению, что нам не нужна ошибка отложенного типа в каждом сценарии, для которого вы можете ее использовать. моя вина :)   -  person nicolas    schedule 20.04.2016
comment
@zakyggaps, вы можете сказать это как ответ. это полезная настройка, о которой нужно знать   -  person nicolas    schedule 20.04.2016


Ответы (1)


Если вам действительно нужно, вы можете установить параметры ghc для каждого пакета в stack.yaml, а именно:

ghc-options:
    your_package_name: -fdefer-type-errors

Я не уверен, совместим ли он с ghcjs.

Но обязательно сообщите об этом пользователям вашего пакета, возможно, включите в документ заявление об отказе от ответственности, выделенное крупным жирным шрифтом.

person zakyggaps    schedule 20.04.2016