Size: a a a

2021 April 02

[

[BRM]White Rabbit in Haskell
Моноиды
источник

[

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

YS

Yan Shkurinskiy in Haskell
Maxim Koltsov
В слоне есть что-то чего нет у тебя?
Смешные картинки!
источник

YS

Yan Shkurinskiy in Haskell
Хотя не уверен что у Дениса их нет
источник

YS

Yan Shkurinskiy in Haskell
Не помню(
источник

IL

Ilya L. in Haskell
Yan Shkurinskiy
Смешные картинки!
Я бы сказал, что кое-кого они подбешивали (меня)
источник

IL

Ilya L. in Haskell
В этом чате всегда рекомендуют слона, но мне он был поперек горла, хотя прочитал от корки до корки.
источник

[

[BRM]White Rabbit in Haskell
Я рекомендую Курта
источник

IL

Ilya L. in Haskell
real world haskell мне был гораздо ближе по душе; сейчас сам бы тоже рекомендовал бы курта
источник

DS

Denis Shevchenko in Haskell
Maxim Koltsov
В слоне есть что-то чего нет у тебя?
Да у меня там мало чего, на самом деле. Только введение, по сути, дать попробовать Хаскель на вкус, избавить читателя от страха.
источник

KV

Kirill Valyavin in Haskell
Возможно, дурацкий вопрос, но можно ли как-нибудь положить thunk в переменную и периодически копировать и вычислять копии, чтобы оригинал оставался невычисленным?
источник

KV

Kirill Valyavin in Haskell
А, точно, завернуть в функцию же
источник

к

кана in Haskell
сделать функцию вместо занка, да
источник

к

кана in Haskell
можно для гарантии сделать функцию от числа
источник

к

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

IO

I O in Haskell
Kirill Valyavin
А, точно, завернуть в функцию же
Просто сделать функцию почти наверняка не хватит, ghc просто сделает float-out и санк опять появится. Например такое

foo :: () -> [Int]
foo () = [1..1000]

скомпилируется в

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

foo :: () -> [Int]
foo = \ (ds_d19K :: ()) -> case ds_d19K of { () -> foo1 }

Можно навесить на функцию GHC.Exts.oneShot, тогда такое

foo :: () -> [Int]
foo = oneShot \() -> [1..1000]

скомпилируется в

foo :: () -> [Int]
foo = \ (v_B2 :: ()) -> case v_B2 of { () -> eftInt 1# 1000# }

Можно еще в принципе сделать -fno-full-laziness, но это действует как минимум на весь модуль, так что не советую.
источник

KV

Kirill Valyavin in Haskell
Полиморфную может?
источник

KV

Kirill Valyavin in Haskell
Ах да, есть же ещё oneShot
источник

IO

I O in Haskell
Kirill Valyavin
Полиморфную может?
Всм такое?

foo :: a -> [Int]
foo _ = [1..1000]


Может, будет все то же самое

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

foo :: forall a. a -> [Int]
foo = \ (@ a_aPR) _ -> foo1
источник

KV

Kirill Valyavin in Haskell
foo x = seq x [1..1000]
а так?
источник