[Haskell-cafe] Re: Write Haskell as fast as C.
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