
You're right, sorry, forgot that one.
2014-02-27 11:43 GMT+00:00 Ivan Lazar Miljenovic
And an Ord instance.
On 27 February 2014 22:34, João Cristóvão
wrote: Hey, So, proposal 2.0, with the received feedback:
-- | get the sub-tree rooted at the first (left-most, depth-first) occurrence -- of the specified node value lookupTree :: Eq a => a -> Tree a -> Maybe (Tree a)
-- | get the sub-tree rooted at the first (left-most, depth-first) value that -- matches the provided condition findTree :: (a -> Bool) -> Tree a -> Maybe (Tree a)
-- | get the sub-tree for the specified node value in the first tree in -- forest in which it occurs. lookupTreeInForest :: Eq a => a -> [Tree a] -> Maybe (Tree a)
-- | keep only the elements that match the provided condition filter :: (a -> Bool) -> Tree a -> Tree a
-- | Size of the (flattened) tree size :: Tree a -> Int size = getSum . F.foldMap (const $ Sum 1)
-- | Maximum depth of tree maxDepth :: Tree a -> Int
-- | Remove all nodes past a certain depth prune :: Int -> Tree a -> Tree a
-- | Take the mirror-image of a tree mirror :: Tree a -> Tree a mirror (Node a ts) = Node a . reverse $ map mirror ts
Any additions / comments? Thanks, João
2014-02-24 12:55 GMT+00:00 João Cristóvão
: Hi Ivan,
then what about the arguably better name `size`? Huh, I thought we already had that.
We do? If there is consensus I would then add `size` with the arguably more efficient implementation: size :: Tree a -> Int size = getSum . F.foldMap (const $ Sum 1)
* An Ord instance (achievable via standalone deriving, though this isn't ideal)
Agreed.
* Functions to take/drop so many levels of the tree (take is relatively easy; drop would result in a Forest).
Similar to treeprune in http://hackage.haskell.org/package/hledger-lib-0.22.1/docs/Hledger-Utils.htm... ?
mirror :: Tree a -> Tree a mirror (Node a ts) = Node a . reverse $ map mirror ts
I don't have strong feeling about this one, but if more people see as useful, why not...
João
2014-02-24 11:38 GMT+00:00 Ivan Lazar Miljenovic
: On 24 February 2014 22:17, Tobias Florek
wrote: hi,
But to be honest, I don't have strong feelings about this, I'm willing to drop this particular function (length) from the proposal, if there is no consensus.
then what about the arguably better name `size`?
Huh, I thought we already had that.
Some things I missed when I last used Data.Tree:
* An Ord instance (achievable via standalone deriving, though this isn't ideal)
* A function to take the mirror-image of a tree (name not that important):
mirror :: Tree a -> Tree a mirror (Node a ts) = Node a . reverse $ map mirror ts
* Functions to take/drop so many levels of the tree (take is relatively easy; drop would result in a Forest).
cheers, tobias florek
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com