25
									
								
								Lib.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Lib.hs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					module Lib (readFile', split, count, tRead) where
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Data.ByteString qualified as B (readFile)
 | 
				
			||||||
 | 
					import Data.Text (Text)
 | 
				
			||||||
 | 
					import Data.Text.Encoding qualified as T (decodeUtf8)
 | 
				
			||||||
 | 
					import Data.Text.Read qualified as TR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- IO --
 | 
				
			||||||
 | 
					readFile' :: FilePath -> IO Text
 | 
				
			||||||
 | 
					readFile' f = T.decodeUtf8 <$> B.readFile f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Data.Text --
 | 
				
			||||||
 | 
					tRead :: Text -> Int
 | 
				
			||||||
 | 
					tRead = (\(Right (n, _)) -> n) . TR.signed TR.decimal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Utility --
 | 
				
			||||||
 | 
					split :: (Eq a) => a -> [a] -> [[a]]
 | 
				
			||||||
 | 
					split delimiter list =
 | 
				
			||||||
 | 
					  let (before, after) = break (== delimiter) list
 | 
				
			||||||
 | 
					   in before : case after of
 | 
				
			||||||
 | 
					        [] -> []
 | 
				
			||||||
 | 
					        (_ : xs) -> split delimiter xs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					count :: (Eq a) => [a] -> a -> Int
 | 
				
			||||||
 | 
					count xs x = length $ filter (x ==) xs
 | 
				
			||||||
		Reference in New Issue
	
	Block a user