ndmitchell: > Hi > > > > Cons: Makes the simplifier slightly more complex - but I hope not by > > much! > > > > And it doesn't work for my case -- I'd really want length as a compile > > time constant. > > > > Could you elaborate on what kind of rules you think we could write with > > the ability to get the head? > > One of my ideas was some RULES that expand: > > test x | "neil" `isPrefixOf` x = ... > | "ned" `isPrefixOf` x = ... > > And obtains direct pattern-matching code. I have a lazy > continuation-based parsing library which could use this extensively. > See my other ongoing thread on this mailing list for more details of > where this is going. > > > The rule I'd like to write is: > > > > "pack/packAddress" pack (unpackCString addr) = ByteString (length# xs) > > 0 addr > > That requires Proposal 2, so needs to have an API defined -- including > length# and some others. Out of curiosity, how much performance boost > would this give in ByteString?
It matters for programs with lots of constant strings. HAppS' webserver reported good speedups doing this translation by hand. -- Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users