Size: a a a

2021 June 29

K

Kir in Haskell
Но подожди, оно же строит здоровенный thunk, который, по сути, foldl1 min. Это второй проход!
источник

IO

I O in Haskell
Можно maxBound на head l заменить
источник

к

кана in Haskell
ну вон я скинул решение без thunk-а на min
источник

к

кана in Haskell
чтобы как раз аргумент это отразить
источник

к

кана in Haskell
из-за этого правда придется делать кейс f [] = []
источник

к

кана in Haskell
потому что в пустом списке нечего класть в строгое поле
источник

K

Kir in Haskell
Да, в строгом решении проход один. Но выполняться, я думаю, всё это будет за примерно одинаковое время
источник

к

кана in Haskell
надо бенчмаркать!
источник

L

Lierdakil in Haskell
бесплатного завтрака не бывает. понятно что N операций искать минимум и N операций строить список длины N, и от этого никуда не деться.
источник

L

Lierdakil in Haskell
если список не сортированный
источник

L

Lierdakil in Haskell
но вообще для всякой потоковой обработки такие фокусы могут быть полезны
источник

K

Kir in Haskell
... и радостно подорваться, доев память транком от какого-нибудь corner-case
источник

IO

I O in Haskell
Но вот один цикл на N итераций по крайней мере в теории быстрее двух циклов по N итераций, вопрос только заметно ли это на практике, тут да, бенчить надо
источник

L

Lierdakil in Haskell
подорваться с ленивостью можно и на внешне безобидном коде.
источник

K

Kir in Haskell
Ето да
источник

L

Lierdakil in Haskell
если один цикл на N итераций по две операции, то в теории это то же самое что два цикла по N итераций по одной операции. что конечно не учитывает всякие низкоуровневые вещи типа локальности данных и кэшей процессора. но на то она и теория.
источник

L

Lierdakil in Haskell
ну и тут мне можно возразить что накладные расходы на цикл ненулевые
источник

L

Lierdakil in Haskell
ненулевые, да. однако обычно пренебрежимо малые по сравнению с полезной работой.
источник

IO

I O in Haskell
Я как раз про это, и именно поэтому говорю "по крайней мере в теории"
источник

[

[BRM]White Rabbit in Haskell
я пытался :D
источник