← All posts tagged ghc

qnikst
Haskell ghc ненужный_пост Хочу плагин к GHC, который вычисляет какие исключения может бросать функция. Причем, какой-нить тупой, ей даешь на вход текстовый файлик со списком:

Module.function : Module.Exception

он используя эту информацию собирает код и генерит на выходе файлик дополненый всеми собранными функциями, это же реально?
qnikst
? Haskell ghc а можно каким-то образом отключать ghc-options: -event-log, если через cabal/stack включается --profile? Просто обычно с профилем не собираешь, а -event-log удобно выносить сразу в cabal файл, чтобы не забывать с ним собирать, т.к. с его поддержкой код пойдет в т.ч. в production.
qnikst
ghc typefun 1.hs:16:1: error:
• Invalid declaration for ‘FieldType’; you must explicitly
declare which variables are dependent on which others.
Inferred variable kinds:
p :: N
t :: Type
i :: Fin p
• In the type synonym declaration for ‘FieldType’


А вот как это явно указать?
qnikst
fun ghc Make the crash happen as early as possible. -debug already turned on lots of assertions, one of which might trigger. Also, try +RTS -DS which turns on a bunch of extra "sanity checking", i.e. expensive assertions about the state of the runtime at regular points. One thing this enables is a full sweep of the heap after each garbage collection to make sure there are no dangling references. Also, it fills all free memory with the value 0xaaaaaaaa (the sound of GHC disappearing down a hole).
qnikst
? ghc circleci блин на CI делается cabal configure , cabal build, при этом cabal test --show-always=true говорит, мол перекофигурируйте, т.к. сменился кабал и ghc, как такое может быть?
qnikst
Haskell ghc гинь-гинь новая мода — считать complitation time своим программ и ругаться если он увеличился с новой версией! Будь в тренде! Ведь компилятор должен быть быстрым, скорость работы компилятора это главная фича!!!
qnikst
ghc TIL В продолжение предыдущему посту:

```
Prelude Control.Exception> error "a" `catch` (\e -> getMaskingState >>= print . flip const (e :: SomeException))
MaskedInterruptible
Prelude Control.Exception> getMaskingState
Unmasked
```

Вот такое вот "ха-ха". Надо теперь потестить мелкие паттерны и подумать как теперь жить с этим знанием и насколько часто можно было допустить ошибку. Т.е. не пускать действие из exception handler а делать верно, т.е.

не

go `catchSome` (const go)

а, например,

let fix f = maybe (fix f) return (Just <$> f `catchSome` (cont $ return Nothing))
in fix go
qnikst
? rts ghc Кто-нибудь может пояснить по: (комментарий из rts/Exceptions.cmm)

Furthermore, asynchronous exceptions are masked automatically during the execution of an exception handler.

Т.к. это выглядит очень странно и go `catch` (const go) явно ж не должен
пускать go второй раз с замаскированными исключениями. Ползать по всему коду base, чтобы проследить что там происходит мне лень :)



полный текст:


A thread can request that asynchronous exceptions not be delivered
("masked") for the duration of an I/O computation. The primitives

maskAsyncExceptions# :: IO a -> IO a

and

maskUninterruptible# :: IO a -> IO a

are used for this purpose. During a masked section, asynchronous
exceptions may be unmasked again temporarily:

unmaskAsyncExceptions# :: IO a -> IO a

Furthermore, asynchronous exceptions are masked automatically during
the execution of an exception handler. All three of these primitives
leave a continuation on the stack which reverts to the previous
state (masked interruptible, masked non-interruptible, or unmasked)
on exit.

qnikst
ghc гинь-гинь без Functor m
compiler/utils/MonadUtils.hs:82:10:
Could not deduce (Functor m)
arising from the superclasses of an instance declaration
from the context (Monad m)
bound by the instance declaration
at compiler/utils/MonadUtils.hs:82:10-44
Possible fix:
add (Functor m) to the context of the instance declaration
In the instance declaration for ‘Applicative (StateT s m)’

с Functor m
compiler/utils/MonadUtils.hs:82:10: Warning:
Redundant constraint: Functor m
In the instance declaration for ‘Applicative (StateT s m)’