From 04685332602ebcb6c0429026aa1def55f4c8c483 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Thu, 3 Aug 2023 16:25:16 +1000 Subject: tidy code --- dedumi.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'dedumi.hs') diff --git a/dedumi.hs b/dedumi.hs index 7bf6dd4..31fd9fe 100644 --- a/dedumi.hs +++ b/dedumi.hs @@ -3,6 +3,7 @@ {-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} +{-# OPTIONS_GHC -Wno-orphans #-} module Main where @@ -11,7 +12,8 @@ import qualified Data.ByteString as B import Data.Cuckoo import Data.FastQ import Data.Function -import Data.Typeable +import GHC.Prim (RealWorld) +import GHC.TypeLits import Lens.Micro import qualified Streamly.Data.Stream as S import System.Environment @@ -22,8 +24,10 @@ instance CuckooFilterHash ByteString where {-# INLINE cuckooHash #-} {-# INLINE cuckooFingerprint #-} +umiLength :: Int umiLength = 8 +trim :: ReadPair -> ReadPair trim x = x & _1 . nucs %~ B.drop umiLength @@ -31,6 +35,7 @@ trim x = & _1 . qual %~ B.drop umiLength & _2 . qual %~ B.drop umiLength +insert' :: (KnownNat b, KnownNat f) => CuckooFilter RealWorld b f ByteString -> ReadPair -> IO Bool insert' f x = let y = B.take umiLength (x ^. _1 . nucs) <> B.take umiLength (x ^. _2 . nucs) in member f y >>= \case @@ -40,6 +45,7 @@ insert' f x = True -> pure False False -> error "filter full" +main :: IO () main = do [p1, p2, p3, p4] <- getArgs @@ -49,5 +55,3 @@ main = do & S.filterM (insert' f) & fmap trim & unparse p3 p4 - - pure () -- cgit v1.2.3