lomeo: (лямбда)
[personal profile] lomeo
Я это как-то писал, но напишу ещё раз, бо тема поднялась.

Недостатки явной рекурсии по сравнению с комбинаторами (ага, zip3):

  • Рекурсия непонятна (согласен, это субъективное).
  • Обычно используется с декомпозицией, нарушая инкапусляцию.
  • Всегда используется для работы с элементами, вместо работы с коллекцией (wholemeal programming).
  • Цепочка вызовов проще для оптимизации.
  • Сложнее нежно мною любимый equational reasoning.

Юный хаскеллист, избегай явной рекурсии!

Ну и ссылочка, куда без неё!

Date: 2012-12-01 04:05 am (UTC)
ext_659502: (полосатая свинья)
From: [identity profile] some41.livejournal.com
compareTopo не является ordering. например, для (a, []), (b, []), (c, [a]) получаем a == b, b == c, a < c. аналогично если возвращать GT (как ниже), то будет a > b, b > a.

Date: 2012-12-01 10:53 am (UTC)
From: [identity profile] thesz.livejournal.com
С ошибками даже интересней.

У вас появляется шанс поправить и понять, что не так. ;)

Поправите?

Date: 2012-12-01 10:47 pm (UTC)
ext_659502: (полосатая свинья)
From: [identity profile] some41.livejournal.com
[livejournal.com profile] voidex уже написал правильную функцию сравнения, но делать topological sort через сортировку как-то дико. вместо O(V+E) получается O(logV*V*V). я написал алгоритм из википедии внизу.

Date: 2012-12-01 11:00 pm (UTC)
From: [identity profile] thesz.livejournal.com
Спасибо!

Я, откровенно говоря, не помнил алгоритма топологической сортировки.

Date: 2012-12-01 11:34 pm (UTC)
ext_659502: (полосатая свинья)
From: [identity profile] some41.livejournal.com
да там особенно нечего помнить -- он очевиден, никакой хитрости в нем нет. и если честно, то у меня тоже неправильная сложность из-за lookups в Map и Set. но, думаю, все равно лучше, чем с поисками в полностью развернутом графе.

Profile

lomeo: (Default)
Dmitry Antonyuk

April 2024

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 7th, 2025 11:45 am
Powered by Dreamwidth Studios