{-# OPTIONS_GHC -funbox-strict-fields #-} {-# LANGUAGE NoImplicitPrelude, BangPatterns #-} module Phladiprelio.General.Datatype where import GHC.Base import GHC.List import Data.Char (isDigit, isSpace) import Text.Read import GHC.Num ((*)) data Phladiprelio t a b = Phl { forall (t :: * -> *) a b. Phladiprelio t a b -> t a inputData :: t a, forall (t :: * -> *) a b. Phladiprelio t a b -> t a -> t b convF :: t a -> t b } data BasicUkr = U1 {-# UNPACK #-} !Char | U2 !Double deriving (BasicUkr -> BasicUkr -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: BasicUkr -> BasicUkr -> Bool $c/= :: BasicUkr -> BasicUkr -> Bool == :: BasicUkr -> BasicUkr -> Bool $c== :: BasicUkr -> BasicUkr -> Bool Eq, Eq BasicUkr BasicUkr -> BasicUkr -> Bool BasicUkr -> BasicUkr -> Ordering BasicUkr -> BasicUkr -> BasicUkr forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: BasicUkr -> BasicUkr -> BasicUkr $cmin :: BasicUkr -> BasicUkr -> BasicUkr max :: BasicUkr -> BasicUkr -> BasicUkr $cmax :: BasicUkr -> BasicUkr -> BasicUkr >= :: BasicUkr -> BasicUkr -> Bool $c>= :: BasicUkr -> BasicUkr -> Bool > :: BasicUkr -> BasicUkr -> Bool $c> :: BasicUkr -> BasicUkr -> Bool <= :: BasicUkr -> BasicUkr -> Bool $c<= :: BasicUkr -> BasicUkr -> Bool < :: BasicUkr -> BasicUkr -> Bool $c< :: BasicUkr -> BasicUkr -> Bool compare :: BasicUkr -> BasicUkr -> Ordering $ccompare :: BasicUkr -> BasicUkr -> Ordering Ord) readBasicUkr0 :: Double -> (String -> [a]) -> ([a] -> [Double]) -> String -> [Double] readBasicUkr0 :: forall a. Double -> (String -> [a]) -> ([a] -> [Double]) -> String -> [Double] readBasicUkr0 Double temp String -> [a] fConvA [a] -> [Double] fConvD xs :: String xs@(Char _:String _) = [Double] dc forall a. Monoid a => a -> a -> a `mappend` ((String -> Double readU2 String ws forall a. Num a => a -> a -> a * Double d) forall a. a -> [a] -> [a] : forall a. Double -> (String -> [a]) -> ([a] -> [Double]) -> String -> [Double] readBasicUkr0 Double d String -> [a] fConvA [a] -> [Double] fConvD String qs) where (String ts, String us) = forall a. (a -> Bool) -> [a] -> ([a], [a]) break (forall a. Eq a => a -> a -> Bool == Char '_') String xs dc :: [Double] dc | forall a. [a] -> Bool null forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . Char -> Bool isSpace) forall a b. (a -> b) -> a -> b $ String ts = [Double temp] | Bool otherwise = [a] -> [Double] fConvD forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> [a] fConvA forall a b. (a -> b) -> a -> b $ String ts d :: Double d = forall a. [a] -> a last [Double] dc vs :: String vs = forall a. (a -> Bool) -> [a] -> [a] dropWhile (forall a. Eq a => a -> a -> Bool == Char '_') String us (String ws, String qs) = forall a. (a -> Bool) -> [a] -> ([a], [a]) span Char -> Bool isDigit String vs readBasicUkr0 Double _ String -> [a] _ [a] -> [Double] _ String _ = [] readBasicUkr :: (String -> [a]) -> ([a] -> [Double]) -> String -> [Double] readBasicUkr = forall a. Double -> (String -> [a]) -> ([a] -> [Double]) -> String -> [Double] readBasicUkr0 Double 1.0 {-# INLINE readBasicUkr #-} readU2 :: String -> Double readU2 :: String -> Double readU2 xs :: String xs@(Char y:String ys) = forall a. Read a => String -> a read (Char yforall a. a -> [a] -> [a] :Char '.'forall a. a -> [a] -> [a] :String ys)::Double