deniok: (Default)
Некоторое время пользовался вычурной техникой для работы с индексированными семействами функций. Есть семейство (список)
f :: Int -> a -> a
причём разные параметры Int задают разные элементы семейства f 1, f 2, f 3. При этом требуемая свёртка имеет вид
f n ( ... (f 3 (f 2 (f 1 x)))) ... )
Техника такая
chain_bad f n = foldl' (flip (.)) id $ map f [1..n]
Мэп делает список функций типа a->a, после чего идёт свёртка по композиции, ну и, скажем,
*Tst> chain_bad (+) 10 0
55
монтирует
(10+).(9+).(8+). ... .(1+).id $ 0
и вычисляет его.

Неприятности и их преодоление... )
И остается вопрос из заголовка: фолдить композицией список функций порожденный мэппингом - это таки антипаттерн из-за space leak?

Profile

deniok: (Default)
deniok

February 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223 242526
2728     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 14th, 2025 12:17 pm
Powered by Dreamwidth Studios