Size: a a a

2020 December 18

YS

Yan Shkurinskiy in Haskell
Вот такой вопрос - если у меня есть тип, есть экземпляр A, я конструирую экземпляр B того же типа, где некоторые поля беру из  A, некоторые конструирую сам. Вопрос - всегда ли будет так, что те поля, которые я взял из A, не будут явно копироваться?
источник

MK

Maxim Koltsov in Haskell
если они не анпакнутые скопируется только указатель
источник

YS

Yan Shkurinskiy in Haskell
да, без анпаков
источник

YS

Yan Shkurinskiy in Haskell
спасибо)
источник

AV

Alexander Vershilov in Haskell
Но если они строгие ghc может анпакнуть сам
источник

AV

Alexander Vershilov in Haskell
Но тогда тебе всё равно копируются они или нет
источник

YS

Yan Shkurinskiy in Haskell
Они не строгие
источник

MK

Maxim Koltsov in Haskell
Alexander Vershilov
Но если они строгие ghc может анпакнуть сам
для этого вроде надо -funpack-strict-fields ?
источник

AV

Alexander Vershilov in Haskell
все строгие - да
источник

AV

Alexander Vershilov in Haskell
но маленькие строгие из-коробки -funpack-small-strict-fields
источник

MK

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

MK

Maxim Koltsov in Haskell
но у них размер в указатель, так что в вопросе про копирование на них пофиг
источник

MK

Maxim Koltsov in Haskell
(наверное)
источник

AV

Alexander Vershilov in Haskell
Собственно поэтому и распаковывает
источник

AV

Alexander Vershilov in Haskell
Всё равно копировать ровно столько же, а indirection убирает
источник

MK

Maxim Koltsov in Haskell
дурацкий вопрос: если я в ghci сделал :print какой-то структурки и внутри неё есть функция, я могу её вызвать и посмотреть что вернёт
а я могу как-то посмотреть её код?
источник

K

Kir in Haskell
Maxim Koltsov
дурацкий вопрос: если я в ghci сделал :print какой-то структурки и внутри неё есть функция, я могу её вызвать и посмотреть что вернёт
а я могу как-то посмотреть её код?
Код - точно нет
источник

MK

Maxim Koltsov in Haskell
я так и думал, конечно
источник

MK

Maxim Koltsov in Haskell
обидно
источник

MK

Maxim Koltsov in Haskell
хотя я могу кое-что сотворить с ней...
источник