Size: a a a

2021 February 04

MK

Maxim Koltsov in Haskell
Но может и заинлайниться
источник

DB

Danil Berestov in Haskell
кана
так а что такой инлайн даст-то
ну в том месте, где всё таки foo передаются аргументы
источник

MK

Maxim Koltsov in Haskell
Зависит от того как определено
источник

к

кана in Haskell
{-# INLINE f #-}
f x y = x + y

g . f 1 . h

заменится на

g . (\y -> 1 + y) . h
источник

к

кана in Haskell
ну если бы инлайнилось без всех аргументов
источник

к

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

DB

Danil Berestov in Haskell
блин, я че-то не так сказал видимо
источник

DB

Danil Berestov in Haskell
в смысле смотри
источник

DB

Danil Berestov in Haskell
foo = fmap
bar = foo f a
источник

DB

Danil Berestov in Haskell
блин
источник

DB

Danil Berestov in Haskell
ну вот это заинлайнится внутри  bar?
источник

к

кана in Haskell
а, ну да, при {-# INLINE foo #-} должен/может
будет просто bar = fmap f a

foo-то полностью применен (все 0 аргументов)
источник

MK

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

MK

Maxim Koltsov in Haskell
а вот на то, заинлайнится ли дальше фмап, это никак не влияет
источник

MK

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

DB

Danil Berestov in Haskell
то есть foo для {-# INLINE fmap #-} непрозрачный
источник

MK

Maxim Koltsov in Haskell
если ты напишешь {-# NOINLINE foo #-} то да
источник

MK

Maxim Koltsov in Haskell
туда фмап (вроде бы как) не заинлайнится
источник

MK

Maxim Koltsov in Haskell
НО foo настолько маленький что с очень большой вероятностью гхц сам решит его инлайнить
источник

DB

Danil Berestov in Haskell
капец я тока путаюсь че-то)
источник