I’m not sure the argument here is actually convincing as to why I should use trees. So a List is a kind of binary tree, ok. But that doesn’t tell me if always viewing it as a tree is actually what I want. If the answer is: parallelism then fine, but what am I giving up for the parallelism win? I like the idea of a tree being my base structure but I’m not convinced it’s the right choice yet.
I don’t think anybody’s advocating that languages flip their standard libs around. In the case of Haskell, it’s normal to have parallel universe Prelude'ish APIs wrapped around different sets of assumptions.
I’m not sure the argument here is actually convincing as to why I should use trees. So a List is a kind of binary tree, ok. But that doesn’t tell me if always viewing it as a tree is actually what I want. If the answer is: parallelism then fine, but what am I giving up for the parallelism win? I like the idea of a tree being my base structure but I’m not convinced it’s the right choice yet.
Best for me to just link:
https://github.com/bitemyapp/learnhaskell/blob/master/dialogues.md#magma-parallelism-free-monoid
The thread of thought began with Guy Steele’s talk here: http://vimeo.com/6624203
Edward’s comment in my link is not to be missed.
See the rest of the thread here: http://www.reddit.com/r/haskell/comments/2corq6/algebraic_terraforming_trees_from_magma/
Also: https://hackage.haskell.org/package/reducers
I don’t think anybody’s advocating that languages flip their standard libs around. In the case of Haskell, it’s normal to have parallel universe Prelude'ish APIs wrapped around different sets of assumptions.
Cf. String/Text/ByteString, []/Map/Set/HashMap/HashSet