X a
f :: [A] -> [X A]
f = map X
вообще убрать map? Или такое надо руками через coerce делать?
f = Data.Coerce.coerce
а, супер но сам он не заменит?
странно, это же прямо просится
ну, это придется про функтор много знать в компиляторе, а не в правилах переписывания
Была, можешь чекнуть core
типы же. руками через coerce доказываешь, что типы правильные, а компилятор выкидывает обёртку
ага, так понятнее, спасибо
есть newtype X a = X a f :: [Int] -> [X Int] f = map X inspect $ coreOf 'f f = f_sdj0 `cast` <Co:7> f_sdj0 = \ v -> v
Обсуждают сегодня