Frames 0.1.3 → 0.1.4
raw patch · 5 files changed
+30/−27 lines, 5 filesdep +microlensdep −lens-family-coredep ~pipes
Dependencies added: microlens
Dependencies removed: lens-family-core
Dependency ranges changed: pipes
Files
- CHANGELOG.md +4/−0
- Frames.cabal +14/−14
- demo/Kata04.hs +1/−1
- demo/Main.hs +2/−2
- src/Frames/CSV.hs +9/−10
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.1.4++Use `microlens` instead of `lens-family-core` for demos.+ # 0.1.3 GHC-8.0.1 compatibility
Frames.cabal view
@@ -1,5 +1,5 @@ name: Frames-version: 0.1.3+version: 0.1.4 synopsis: Data frames For working with tabular data files description: User-friendly, type safe, runtime efficient tooling for working with tabular data deserialized from@@ -80,9 +80,9 @@ main-is: Plot.hs if flag(demos) build-depends: base, Frames,- lens-family-core, vector, text,+ microlens, vector, text, template-haskell,- pipes >= 4.1.5 && < 4.2, + pipes >= 4.1.5 && < 4.3, Chart >= 1.5 && < 1.8, Chart-diagrams >= 1.5 && < 1.8, diagrams-rasterific >= 1.3 && < 1.4,@@ -97,12 +97,12 @@ main-is: Plot2.hs if flag(demos) build-depends: base, Frames,- lens-family-core, vector, text, template-haskell,- pipes >= 4.1.5 && < 4.2,+ microlens, vector, text, template-haskell,+ pipes >= 4.1.5 && < 4.3, Chart >= 1.5 && < 1.8, Chart-diagrams >= 1.5 && < 1.8, diagrams-rasterific >= 1.3 && < 1.4,- diagrams-lib >= 1.3 && < 1.4, + diagrams-lib >= 1.3 && < 1.4, readable, containers, statistics hs-source-dirs: demo default-language: Haskell2010@@ -113,9 +113,9 @@ buildable: False main-is: Main.hs if flag(demos)- build-depends: base, list-t, lens-family-core, transformers, Frames,+ build-depends: base, list-t, microlens, transformers, Frames, vector, text, template-haskell, ghc-prim, readable,- pipes >= 4.1.5 && < 4.2+ pipes >= 4.1.5 && < 4.3 hs-source-dirs: demo default-language: Haskell2010 ghc-options: -O2 -fllvm@@ -126,9 +126,9 @@ main-is: TutorialMain.hs if flag(demos) build-depends: base, Frames,- lens-family-core, vector, text, template-haskell, readable,+ microlens, vector, text, template-haskell, readable, foldl >= 1.1.0 && < 1.3,- pipes >= 4.1.5 && < 4.2+ pipes >= 4.1.5 && < 4.3 hs-source-dirs: demo default-language: Haskell2010 @@ -138,9 +138,9 @@ buildable: False main-is: BenchDemo.hs if flag(demos)- build-depends: base, Frames, lens-family-core,+ build-depends: base, Frames, foldl >= 1.1.0 && < 1.3,- pipes >= 4.1.5 && < 4.2+ pipes >= 4.1.5 && < 4.3 hs-source-dirs: benchmarks default-language: Haskell2010 ghc-options: -O2 -fllvm@@ -161,8 +161,8 @@ type: exitcode-stdio-1.0 hs-source-dirs: benchmarks main-is: InsuranceBench.hs- build-depends: base, criterion, Frames, lens-family-core, transformers,- pipes >= 4.1.5 && < 4.2+ build-depends: base, criterion, Frames, transformers,+ pipes >= 4.1.5 && < 4.3 ghc-options: -O2 default-language: Haskell2010
demo/Kata04.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE DataKinds, FlexibleContexts, OverloadedStrings, TemplateHaskell, TypeFamilies, TypeOperators, MultiParamTypeClasses, ScopedTypeVariables,- FlexibleContexts, FlexibleInstances #-}+ FlexibleInstances #-} module Main where import qualified Data.Foldable as F import Data.Ord (comparing)
demo/Main.hs view
@@ -3,7 +3,7 @@ module Main where import Data.Functor.Identity import Frames-import Lens.Family+import Lens.Micro import qualified ListT as L import qualified Pipes as P import qualified Pipes.Prelude as P@@ -17,7 +17,7 @@ tbl = listTlist $ readTable' "data/data1.csv" ageDoubler :: (Age ∈ rs) => Record rs -> Record rs-ageDoubler = age *~ 2+ageDoubler = age %~ (* 2) tbl2 :: IO [Row] tbl2 = listTlist $ readTable' "data/data2.csv"
src/Frames/CSV.hs view
@@ -17,11 +17,11 @@ module Frames.CSV where import Control.Applicative ((<$>), pure, (<*>)) import Control.Arrow (first)-import Control.Monad (MonadPlus(..))+import Control.Monad (MonadPlus(..), when, void) import Control.Monad.IO.Class import Data.Char (isAlpha, isAlphaNum, toLower, toUpper) import Data.Foldable (foldMap)-import Data.Maybe (fromMaybe)+import Data.Maybe (fromMaybe, isNothing) import Data.Monoid ((<>), Monoid(..)) import Data.Proxy import qualified Data.Text as T@@ -39,9 +39,6 @@ import Language.Haskell.TH.Syntax import qualified Pipes as P import System.IO (Handle, hIsEOF, openFile, IOMode(..), withFile)-import Control.Monad (when)-import Data.Maybe (isNothing)-import Control.Monad (void) type Separator = T.Text @@ -256,7 +253,7 @@ . T.concat . T.split (not . valid) . toTitle' where valid c = isAlphaNum c || c == '\'' || c == '_' toTitle' = foldMap (onHead toUpper) . T.split (not . isAlphaNum)- onHead f = maybe mempty (uncurry T.cons) . fmap (first f) . T.uncons + onHead f = maybe mempty (uncurry T.cons) . fmap (first f) . T.uncons unreserved t | t `elem` ["Type"] = "Col" <> t | otherwise = t@@ -300,8 +297,9 @@ colDec prefix colName colTy = (:) <$> mkColTDec colTypeQ colTName' <*> mkColPDec colTName' colTyQ colPName where colTName = sanitizeTypeName (prefix <> colName)- colPName = fromMaybe "colDec impossible" $- fmap (\(c,t) -> T.cons (toLower c) t) (T.uncons colTName)+ colPName = maybe "colDec impossible"+ (\(c,t) -> T.cons (toLower c) t)+ (T.uncons colTName) colTName' = mkName $ T.unpack colTName colTyQ = colType colTy colTypeQ = [t|$(litT . strTyLit $ T.unpack colName) :-> $colTyQ|]@@ -313,8 +311,9 @@ declareColumn colName colTy = (:) <$> mkColTDec colTypeQ colTName' <*> mkColPDec colTName' colTyQ colPName where colTName = sanitizeTypeName colName- colPName = fromMaybe "colDec impossible" $- fmap (\(c,t) -> T.cons (toLower c) t) (T.uncons colTName)+ colPName = maybe "colDec impossible"+ (\(c,t) -> T.cons (toLower c) t)+ (T.uncons colTName) colTName' = mkName $ T.unpack colTName colTyQ = return (ConT colTy) colTypeQ = [t|$(litT . strTyLit $ T.unpack colName) :-> $colTyQ|]