Size: a a a

2021 February 19

к

кана in Haskell Start
f x : y
это
(f x) : y
источник

к

кана in Haskell Start
subtreesTraversed это уже [b]
f v это b
(f v) : subtreesTraversed это тоже [b]
источник

JS

Jerzy Syrowiecki in Haskell Start
сравните с

sin x + cos x == (sin x) + (cos x)
источник

12

1 2 in Haskell Start
Теперь непонятно почему выполняется pre-order, а не post-order

Написал тоже самое на котлине
источник

12

1 2 in Haskell Start
и он идет по post-order
источник

12

1 2 in Haskell Start
1 2
preOrder :: (a -> b) -> Tree a -> [b]
preOrder f (Node v subtrees)
 = let subtreesTraversed = concat $ map (preOrder f) subtrees
   in f v : subtreesTraversed

не понимаю совершенно последнюю строку, к v клятся остальные значения (subtreesTraversed) и только ПОТОМ они в f или как?
третья строчка ленивая?
источник

12

1 2 in Haskell Start
> = let subtreesTraversed = concat $ map (preOrder f) subtrees
источник

JS

Jerzy Syrowiecki in Haskell Start
в Хаскеле все строчки ленивые
источник

12

1 2 in Haskell Start
все, разобрался, спасибо!
источник

12

1 2 in Haskell Start
вот так симитировал в котлине, если кому интересно
источник

JS

Jerzy Syrowiecki in Haskell Start
1 2
Теперь непонятно почему выполняется pre-order, а не post-order

Написал тоже самое на котлине
функция называется preorder. почему вы ожидаете что-то другое?
источник

12

1 2 in Haskell Start
функцию как угодно можно назвать, мне было интересно почему работает именно так, теперь разобрался 🙂
источник

JS

Jerzy Syrowiecki in Haskell Start
да, можно как угодно, но когда я вижу незнакомый код, ориентируюсь на имена
источник

JS

Jerzy Syrowiecki in Haskell Start
1 2
вот так симитировал в котлине, если кому интересно
только это совсем другая функция, она не собирает результаты в список, а выполняет действие и попутно собирает оригиналы
источник

к

кана in Haskell Start
1 2
вот так симитировал в котлине, если кому интересно
это совсем другой код, да
источник

к

кана in Haskell Start
1 2
вот так симитировал в котлине, если кому интересно
кинь весь код текстом, с определением дерева
источник

JS

Jerzy Syrowiecki in Haskell Start
этот код совместим с Data.Tree
источник

JS

Jerzy Syrowiecki in Haskell Start
и логичнее было бы preorder обход определить без преобразования

preOrder :: Tree a -> [a]
preOrder (Node v subtrees) =
 v : concatMap preOrder subtrees
источник

12

1 2 in Haskell Start
кана
кинь весь код текстом, с определением дерева
источник

к

кана in Haskell Start
вот тот код на хаскеле на котлине, надеюсь это поможет понять хаскельную версию

https://gist.github.com/kana-sama/f838e6c8d2f16a99b1f9bd4f27492e2f
источник