Size: a a a

2020 May 20

к

кана in Haskell
хм, ну вроде все наоборот, через месяц нужно будет читать больше идентификаторов и искать реализацию
источник

R

Roman in Haskell
кана
хм, ну вроде все наоборот, через месяц нужно будет читать больше идентификаторов и искать реализацию
> искать реализацию

локальную функцию
источник

к

кана in Haskell
ну да, их там может быть много
источник

R

Roman in Haskell
обычно нет. Если много, то разделить большую функцию на маленькие. Если не получается, то смириться
источник

R

Roman in Haskell
спрошу и тут еще:

I want to do something like the following:

class C a where
   x :: a -> a
   x = y
   default x :: a -> a
   x = id

   y :: a -> a
   y = x
The intended semantics is

- if x is explicitly specified in an instance, then y is implicitly defined in terms of x
- if y is explicitly specified, then x is implicitly defined in terms of y
- if nothing is explicitly specified, then x is implicitly defined as id and y is implicitly defined in terms of x

GHC rejects the above code with "Conflicting definitions of x".

Workarounds I've considered:

1. keep the mutual definitions, drop the default one for x and use DerivingVia to recover the functionality. Bad option, because the default definition is going to be extremely useful and imposing on the user to use DerivingVia for such a basic thing is a no go
2. drop either x and y and provide a function that allows to explicitly construct the dropped one in terms of the other one. Doing that right now and being annoyed

Any ideas?
источник
2020 May 21

AA

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

MK

Maxim Koltsov in Haskell
ты про фулл стг?
источник

MK

Maxim Koltsov in Haskell
откуда, кстати, вообще мёртвый код?
источник

AA

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

AA

A64m AL256m qn<co... in Haskell
справедливости ради, анализ там самый минимальный, так то можно делать всякие чудеса делать типа мономорфизации всего (но это медленно)
источник

AA

A64m AL256m qn<co... in Haskell
на самом деле впечатляет что вообще реальное приложение удалось скомпилить
источник

MP

Misha Puzanov in Haskell
а в линзах есть что-то простое, чтобы сковырнуть newtype?
источник

MP

Misha Puzanov in Haskell
у меня есть
data X = { bla :: Y }
newtype Y = Y (Map A Z)
и я хочу
case Map.lookup a (x ^. bla ???) of ….
источник

MK

Maxim Koltsov in Haskell
coerced
источник

MK

Maxim Koltsov in Haskell
x ^? bla . coerced . ix a
источник

MK

Maxim Koltsov in Haskell
Как-то так должно сработать
источник

MP

Misha Puzanov in Haskell
indeed! почему-то сразу не нагуглилось
источник

MP

Misha Puzanov in Haskell
спасибо
источник

MK

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

G

Gamer in Haskell
A64m AL256m qn I0
на самом деле впечатляет что вообще реальное приложение удалось скомпилить
а для тех кто в танке, это про че?
источник