Size: a a a

2021 April 02

IO

I O in Haskell
В коре это же просто

foo x = case x of _ -> [1..1000] 


так что ничего не изменится,

foo1 :: [Int]
foo1 = eftInt 1# 1000#

foo :: forall a. a -> [Int]
foo
 = \ (@ a_aPS) (x_aPI :: a_aPS) ->
     case x_aPI of { __DEFAULT -> foo1 }
источник

KV

Kirill Valyavin in Haskell
Компилятор умнее программиста. Пусть сам код пишет тогда
источник

AA

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

AA

A64m AL256m qn<co... in Haskell
в том числе и параметр типа
источник

KV

Kirill Valyavin in Haskell
A64m AL256m qn I0
надо шоб параметр использовался
А как бы его так использовать, если он нафиг не нужен?
источник

AA

A64m AL256m qn<co... in Haskell
если нафиг не нужен, то он до рантайма и не доживет
надо чтоб вычисление от него зависило
типа foo p | p = blahblah
источник

AA

A64m AL256m qn<co... in Haskell
но даже тут не удивлюсь если он блала вытянет из кейса наверх, вЕдЬ лЕниВоСтЬ же значит можно!
источник

IO

I O in Haskell
Конечно вытянет

foo :: Bool -> [Int]
foo x
 | x = [1..1000]
 | otherwise = errorWithoutStackTrace ""



foo2 :: [Int]
foo2 = errorWithoutStackTrace []

foo1 :: [Int]
foo1 = eftInt 1# 1000#

foo :: Bool -> [Int]
foo
 = \ (x_aPM :: Bool) ->
     case x_aPM of {
       False -> foo2;
       True -> foo1
     }
источник

KV

Kirill Valyavin in Haskell
Я чёт даже с oneShot нифига не могу сделать как надо
источник

KV

Kirill Valyavin in Haskell
Как только включаю оптимизации, всё шарится
источник

AA

A64m AL256m qn<co... in Haskell
заставить его пересчитывать че-то заново тяжело, сопротивляется до последнего
источник

[

[BRM]White Rabbit in Haskell
ору
источник

[

[BRM]White Rabbit in Haskell
воюете с излишне умным компилятором
источник

[

[BRM]White Rabbit in Haskell
восстание машин на подходе
источник

KV

Kirill Valyavin in Haskell
Хотели же сделать dup или там noupdate хотя бы, вот где оно всё
источник

IO

I O in Haskell
Kirill Valyavin
Я чёт даже с oneShot нифига не могу сделать как надо
Мб тогда просто вынести в отдельный модуль и дать  -fno-full-laziness, чтоб наверняка
источник

KV

Kirill Valyavin in Haskell
I O
Мб тогда просто вынести в отдельный модуль и дать  -fno-full-laziness, чтоб наверняка
Смысл этого упражнения в том, чтобы не выключать full-laziness
источник

[

[BRM]White Rabbit in Haskell
??
источник

IO

I O in Haskell
Kirill Valyavin
Я чёт даже с oneShot нифига не могу сделать как надо
На всякий случай, NOINLINE на функцию сажали? Может быть санк изначально не флоат-аутится, но в месте использования функция инлайнится и санк флоат-аутится уже оттуда? Или cse работает
источник

K

Kir in Haskell
()
источник