Details

Previously, fasta would produce incorrect output when compiled with -fno-state-hack; this isn't too strange, considering how it used a dangerous combination of unsafeUseAsCString and poke, something the documentation for unsafeUseAsCString explicitly warns about.

Unlike the existing implementation, this version is both correct and (at least somewhat) idiomatic Haskell.