record 0.3.1 → 0.3.1.1
raw patch · 3 files changed
+14/−25 lines, 3 files
Files
- library/Record.hs +11/−22
- library/Record/Types.hs +2/−2
- record.cabal +1/−1
library/Record.hs view
@@ -10,6 +10,7 @@ import BasePrelude import Language.Haskell.TH+import Language.Haskell.TH.Syntax import Language.Haskell.TH.Quote import qualified Record.Types as Types import qualified Record.Lens as Lens@@ -137,31 +138,19 @@ recordTypeNameByArity :: Int -> Maybe Name recordTypeNameByArity arity =- fmap head $ mfilter (not . null) $ Just $- drop (pred arity) $- [- ''Types.Record1, ''Types.Record2, ''Types.Record3, ''Types.Record4, - ''Types.Record5, ''Types.Record6, ''Types.Record7, ''Types.Record8, - ''Types.Record9, ''Types.Record10, ''Types.Record11, ''Types.Record12,- ''Types.Record13, ''Types.Record14, ''Types.Record15, - ''Types.Record16, ''Types.Record17, ''Types.Record18, ''Types.Record19, - ''Types.Record20, ''Types.Record21, ''Types.Record22, - ''Types.Record23, ''Types.Record24- ]+ if arity > 24 || arity < 1+ then Nothing+ else Just (Name (OccName ("Record" <> show arity)) ns)+ where+ ns = case ''Types.Record1 of Name _ x -> x recordConNameByArity :: Int -> Maybe Name recordConNameByArity arity =- fmap head $ mfilter (not . null) $ Just $- drop (pred arity) $- [- 'Types.Record1, 'Types.Record2, 'Types.Record3, 'Types.Record4, - 'Types.Record5, 'Types.Record6, 'Types.Record7, 'Types.Record8, - 'Types.Record9, 'Types.Record10, 'Types.Record11, 'Types.Record12, - 'Types.Record12, 'Types.Record13, 'Types.Record14, 'Types.Record15, - 'Types.Record16, 'Types.Record17, 'Types.Record18, 'Types.Record19, - 'Types.Record20, 'Types.Record21, 'Types.Record22, 'Types.Record22, - 'Types.Record23, 'Types.Record24- ]+ if arity > 24 || arity < 1+ then Nothing+ else Just (Name (OccName ("Record" <> show arity)) ns)+ where+ ns = case 'Types.Record1 of Name _ x -> x renderType :: Parser.Type -> Either String Type renderType =
library/Record/Types.hs view
@@ -32,14 +32,14 @@ -- Here's how you can use it with tuples: -- -- >trd :: Field "3" v v' a' a => a -> v--- >trd = view . fieldLens (FieldName :: FieldName "3")+-- >trd = view . fieldLens (undefined :: FieldName "3") -- The function above will get you the third item of any tuple, which has it. class Field (n :: Symbol) a a' v v' | n a -> v, n a' -> v', n a v' -> a', n a' v -> a where -- | -- A polymorphic lens. E.g.: -- -- >ageLens :: Field "age" v v' a' a => Lens a a' v v'- -- >ageLens = fieldLens (FieldName :: FieldName "age")+ -- >ageLens = fieldLens (undefined :: FieldName "age") fieldLens :: FieldName n -> Lens a a' v v' -- |
record.cabal view
@@ -1,7 +1,7 @@ name: record version:- 0.3.1+ 0.3.1.1 synopsis: First class records implemented with quasi-quotation description: