[Haskell-cafe] Re: Write Haskell as fast as C.

Dan Weston westondan at imageworks.com
Fri May 16 18:08:52 EDT 2008


Ketil Malde wrote:
>> mkAnn :: ByteString -> Annotation
>> mkAnn = pick . B.words
>>     where pick (_db:up:rest) = pick' up $ getGo rest
>>           pick' up' (go:_:ev:_) = Ann (B.copy up') (read $ B.unpack go) (read $ B.unpack ev)
>>           getGo = dropWhile (not . B.isPrefixOf (pack "GO:"))

It seems at first face miraculously coincidental that the dropWhile in 
the getGo definition knows to stop dropping when there are exactly 4 
elements, in order to match the pattern in the second parameter of the 
pick' definition, whose argument is provided by (getGo Rest).

What magic makes this true? Just curious...



More information about the Haskell-Cafe mailing list