3 ms·
Thank you. I will look into these and give it another try. It's a good point that maybe I should just have the right expectations here, and expect data structu
by jeffdavis 9y ago
Thank you. I will look into these and give it another try.
It's a good point that maybe I should just have the right expectations here, and expect data structures to be hard in rust.
I looked around a bit and it looks like these thing are quite challenging in haskell as well.
- lederhosen 9y agoIn Haskell it is easy, you can not create cyclic data structures ;-)
- tome 9y agoHuh? Sure you can.
- wtetzner 9y agoCyclic data structures can be created in Haskell, in large part due to laziness.
- lederhosen 9y agoIf you see data structures as cyclic, it is not "in large part due to laziness", but _only_ due to laziness. If you look at the memory representation I think (but I am not sure) there will be no cycles between allocated objects. Only a thunk. Using strict data types, I think you agree that cycles can not be created. Non strict data structures I agree can be seen as cyclic, but I prefer seeing them as infinite.
- lomnakkus 9y agoCounterexample: $ ghci GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Prelude> let ones = 1 : ones Prelude> take 50 ones [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] You can take as many as you like. (The 'ones' list contains a tail which links back to its head, producing an infinite list.) Obviously, this is a trivial example, you can do much more interesting things with mutually recursive bindings.
- tene 9y agolet cycle = "cycle " ++ cycle