Skip to content
Snippets Groups Projects

reverse-complement: Provide own inlinePerformIO

Merged Sebastian Graf requested to merge wip/inline-perform-io into master
1 file
+ 7
0
Compare changes
  • Side-by-side
  • Inline
@@ -11,6 +11,8 @@ import Control.Monad
@@ -11,6 +11,8 @@ import Control.Monad
import Foreign
import Foreign
import Data.ByteString.Internal
import Data.ByteString.Internal
import System.IO
import System.IO
 
import GHC.Exts
 
import GHC.IO (IO(..))
data Buf = Buf !Int !Int !(Ptr Word8)
data Buf = Buf !Int !Int !(Ptr Word8)
@@ -57,6 +59,11 @@ main = allocaArray 82 $ \ line ->
@@ -57,6 +59,11 @@ main = allocaArray 82 $ \ line ->
comps = Prelude.zipWith (\ a b -> (fromEnum a, c2w b)) "AaCcGgTtUuMmRrYyKkVvHhDdBb"
comps = Prelude.zipWith (\ a b -> (fromEnum a, c2w b)) "AaCcGgTtUuMmRrYyKkVvHhDdBb"
"TTGGCCAAAAKKYYRRMMBBDDHHVV"
"TTGGCCAAAAKKYYRRMMBBDDHHVV"
 
-- Just like unsafeDupablePerformIO, but we inline it.
 
{-# INLINE inlinePerformIO #-}
 
inlinePerformIO :: IO a -> a
 
inlinePerformIO (IO m) = case m realWorld# of (# _, r #) -> r
 
ca :: Ptr Word8
ca :: Ptr Word8
ca = inlinePerformIO $ do
ca = inlinePerformIO $ do
!a <- mallocArray 200
!a <- mallocArray 200
Loading