Size: a a a

2021 May 05

IO

I O in Haskell
> getClosureData $! False
ConstrClosure {info = StgInfoTable {entry = Nothing, ptrs = 0, nptrs = 1, tipe = CONSTR_0_1, srtlen = 0, code = Nothing}, ptrArgs = [], dataArgs = [139742103865856], pkg = "ghc-prim", modl = "GHC.Types", name = "False"}
> getClosureData $! unsafeCoerce @_ @[()] False
ConstrClosure {info = StgInfoTable {entry = Nothing, ptrs = 0, nptrs = 1, tipe = CONSTR_0_1, srtlen = 0, code = Nothing}, ptrArgs = [], dataArgs = [139742103865856], pkg = "ghc-prim", modl = "GHC.Types", name = "False"}
источник

MK

Maxim Koltsov in Haskell
Таааак, чего-то я не знаю значит
источник

MK

Maxim Koltsov in Haskell
Тогда что вообще хранится в инфотейбле?
источник

IO

I O in Haskell
Кстати всякие listToMaybe = unsafeCoerce еще один пример cломающий recover-rtti
источник

AA

A64m AL256m qn<co... in Haskell
да все вы правильно понимаете че там хранится
просто если
unsafeCoerce [] :: Maybe Int

посмотреть хипвью то он все равно увидит что там было до коэрса
источник

MK

Maxim Koltsov in Haskell
Тогда как работает коерс?
источник

IO

I O in Haskell
Обманывает тайпчекер, в стг стирается
источник

MK

Maxim Koltsov in Haskell
Ведь код, который получил коерснутый аргумент, пытается в него смотреть как в тот тип, который он ждал
источник

MK

Maxim Koltsov in Haskell
Нет?
источник

AA

A64m AL256m qn<co... in Haskell
ну мало кода, работа которого зависит от строки с именем конструктора, а CONSTR_0_1 он и есть CONSTR_0_1
источник

AA

A64m AL256m qn<co... in Haskell
хоть [] хоть Nothing
источник

MK

Maxim Koltsov in Haskell
Вообще логично что я хрень сказать
источник

MK

Maxim Koltsov in Haskell
Инфотейбл же описывает конструктор, а не тип
источник

MK

Maxim Koltsov in Haskell
Так что коерс ваще никак не мог бы его менять
источник

AA

A64m AL256m qn<co... in Haskell
ну в программе то наблюдаемые конструкторы разные все правильно у вас вопрос возник
источник

AA

A64m AL256m qn<co... in Haskell
но кложуры соотвествующие этим конструкторам - одинаковые
источник

MK

Maxim Koltsov in Haskell
Вот, тогда какой ответ? Откуда берутся наблюдаемые конструкторы?
источник

к

кана in Haskell
блин когда уже в хаскель-плагин для вскода добавлят команду добавлять экстеншены
источник

MK

Maxim Koltsov in Haskell
Она умеет добавлять если гхц в варнинге говорит что надо
источник

AA

A64m AL256m qn<co... in Haskell
из типов. яж говорю, от строки с именем конструктора в инфотейбле ниче не зависит обычно, токо выхлоп профайлера
источник