1) Is there a more efficient definition of hyperseq that does not traverse
the data structure twice? The "show" function traverses the structure once
but I found it to be much slower.

persumably because it produces its output with (++), or with (.) and building up lots of closures (?)

something like  class Size s where size :: s -> Int  would help.
(or a class Hash ...  -  both are nice to have anyway in a program)
(and automatic instance derivations for them would be nice as well...)

2) In this application the uses of lazy evaluation are rare and easily
eliminated (zip xs [1..] and so on); is there some hidden GHC option that
evaluates everything strictly? I realise that this would invalidate
optimisations relying on certain laws but I just wonder how difficult this
would be. Somebody must have given this a thought at one point.

It would also be interesting to find out what exactly the compiler is missing when translating your program. Ideally, it should be able to "see" that everything is strict. -- -- Johannes Waldmann, Tel/Fax: (0341) 3076 6479 / 6480 -- ------ http://www.imn.htwk-leipzig.de/~waldmann/ ---------

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to