2009/1/8 Ertugrul Soeylemez <e...@ertes.de>: > "minh thu" <not...@gmail.com> wrote: > >> Nothing, simply the notation. Now, with the remark of Luke, I'm >> wondering how bad it is to use makeStableName/hashStableName to "copy" >> the data structure in a similar one with explicit reference (that is, >> using pointer or keys in a map or whatever). > > Probably you're misusing the notation. I don't see any reason, why > monadic notation should be less readable. Usually it's even more > readable. Luke's remark is very valid. Haskell is the wrong language > for imperative programming. You don't have _any_ benefit of Haskell, if > you use it like C. Try to change your mind. Monads aren't evil. They > are there to make your life easier. Way easier than imperative methods.
Well, maybe it's is just my opinion, but I found the non-monadic code in the previous mail easier to write than the monadic one... I don't know against what you're making the compareason to say it's more readable. Although I agree using Haskell requires some change of thinking, statement like yours are a bit too much for me. I find Haskell a nice language even for imperative programming... Cheers, Thu > Greets, > Ertugrul. > > >> Thank you, >> Thu >> >> 2009/1/8 Lennart Augustsson <lenn...@augustsson.net>: >> > Look at >> > http://www.haskell.org/ghc/docs/latest/html/libraries/base/System-Mem-StableName.html. >> > >> > But what's wrong with constructing the graph in a monad? >> > >> > On Thu, Jan 8, 2009 at 9:53 AM, minh thu <not...@gmail.com> wrote: >> >> Well, the processing of the data structure has to be done in the IO monad. >> >> What is the library you talk about ? Could it give the "stable names" >> >> (in IO) for >> >> each node of the mentioned graph (I mean, after the graph has been >> >> constructed >> >> purely) ? >> >> >> >> Thanks, >> >> Thu >> >> >> >> 2009/1/8 Lennart Augustsson <lenn...@augustsson.net>: >> >>> Of course you don't need a monad, but you need to do the same >> >>> operations as you would with a state monad to number the nodes. This >> >>> is the only way in (pure) Haskell. There is no object identity in >> >>> Haskell, so if you want the nodes to have identity you need to provide >> >>> it. >> >>> >> >>> GHC does have a library for stable names which (in the IO monad) >> >>> allows you to get something akin to the address of a value in memory. >> >>> But that's not the functional way of doing this. >> >>> >> >>> -- Lennart >> >>> >> >>> On Thu, Jan 8, 2009 at 9:28 AM, minh thu <not...@gmail.com> wrote: >> >>>> Hi, >> >>>> >> >>>> I'd like to process some kind of graph data structure, >> >>>> say something like >> >>>> >> >>>> data DS = A [DS] | B DS DS | C. >> >>>> >> >>>> but I want to be able to discover any sharing. >> >>>> Thus, in >> >>>> >> >>>> b = B a a where a = A [C], >> >>>> >> >>>> if I want to malloc a similar data structure, >> >>>> I have to handle to the node representing B >> >>>> two times the same pointer (the one returned >> >>>> after allocating A [C]). >> >>>> >> >>>> To discover sharing, I thought it would be >> >>>> necessary to give unique name to node and >> >>>> then compare them while traversing the graph. >> >>>> I could give the name by hand but it would be >> >>>> cumbersome. But at least it would not require >> >>>> any monad for the bookkeeping of ungiven >> >>>> names. Is it possible to give those names >> >>>> automatically but outside any monad ? >> >>>> >> >>>> Thanks, >> >>>> Thu >> >>>> _______________________________________________ >> >>>> Haskell-Cafe mailing list >> >>>> Haskell-Cafe@haskell.org >> >>>> http://www.haskell.org/mailman/listinfo/haskell-cafe >> >>>> >> >>> >> >> >> > > > > > -- > nightmare = unsafePerformIO (getWrongWife >>= sex) > http://blog.ertes.de/ > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe