tickle 0.0.6 → 0.0.7
raw patch · 7 files changed
+364/−143 lines, 7 filesdep +papanew-uploader
Dependencies added: papa
Files
- LICENCE +28/−0
- LICENSE +0/−27
- changelog +6/−0
- src/Data/Tickle/Get.hs +9/−38
- src/Data/Tickle/IsolateError.hs +307/−32
- src/Data/Tickle/RunGetResult.hs +4/−39
- tickle.cabal +10/−7
+ LICENCE view
@@ -0,0 +1,28 @@+Copyright 2014,2015 NICTA Limited+Copyright 2016,2017, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230.++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
− LICENSE
@@ -1,27 +0,0 @@-Copyright 2014 Tony Morris--All rights reserved.--Redistribution and use in source and binary forms, with or without-modification, are permitted provided that the following conditions-are met:-1. Redistributions of source code must retain the above copyright- notice, this list of conditions and the following disclaimer.-2. Redistributions in binary form must reproduce the above copyright- notice, this list of conditions and the following disclaimer in the- documentation and/or other materials provided with the distribution.-3. Neither the name of the author nor the names of his contributors- may be used to endorse or promote products derived from this software- without specific prior written permission.--THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-SUCH DAMAGE.
changelog view
@@ -1,3 +1,9 @@+0.0.7++* use nix for build.+* depend on `papa`.+* some more prisms on `IsolateError`.+ 0.0.6 * Change `inlinePerformIO` to `unsafePerformIO`.
src/Data/Tickle/Get.hs view
@@ -133,51 +133,22 @@ , uncompletedValue ) where -import Control.Applicative(Applicative((<*>), pure), (<$>))-import Control.Category(Category((.), id))-import Control.Lens.Iso(Iso', iso)-import Control.Lens.Lens(lens)-import Control.Lens.Prism(Prism', prism')-import Control.Lens.Review((#))-import Control.Lens.Type(Iso, Lens', Traversal')-import Control.Monad(Monad((>>=), (>>), return), ap)-import Data.Bifoldable(Bifoldable(bifoldMap))-import Data.Bifunctor(Bifunctor(bimap))-import Data.Bitraversable(Bitraversable(bitraverse)) import Data.Bits((.|.), (.&.), shiftL, shiftR)-import Data.Bool(Bool(False, True), (&&), not, otherwise) import qualified Data.ByteString as B(ByteString, concat, append, length, splitAt, empty, null, break, drop) import qualified Data.ByteString.Lazy as L(ByteString, toChunks, fromChunks, readFile) import qualified Data.ByteString.Lazy.Internal as LI(ByteString(Chunk, Empty)) import qualified Data.ByteString.Unsafe as BU(unsafeDrop, unsafeTake, unsafeHead, unsafeIndex, unsafeUseAsCString)-import Data.Either(Either(Left, Right), either)-import Data.Eq(Eq((==)))-import Data.Foldable(Foldable(foldMap))-import Data.Function(const)-import Data.Functor(Functor(fmap))-import Data.Functor.Apply(Apply((<.>)))-import Data.Functor.Alt(Alt((<!>))) import qualified Data.Functor.Alt as Al(Alt(some, many))-import Data.Functor.Bind(Bind((>>-)))-import Data.Int(Int, Int8, Int16, Int32, Int64)-import Data.List(reverse, foldr)-import Data.Maybe(Maybe(Nothing, Just), maybe, isJust)-import Data.Monoid(Monoid(mempty))-import Data.Ord(Ord((>), (>=), (<), (>=)))-import Data.Semigroup(Semigroup((<>))) import Data.Tickle.IsolateError(IsolateError, _NegativeSize, _IsolateXFail, _UnexpectedConsumed) import Data.Tickle.RunGetResult(RunGetResult, _RunGet, _RunGetFail)-import Data.Traversable(Traversable(traverse))-import Data.Tuple(uncurry) import Foreign(Ptr, castPtr, Storable(peek), sizeOf, alloca, poke)-import System.FilePath(FilePath) import System.IO.Unsafe(unsafePerformIO) #if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__) import GHC.Word(Word, Word8, Word16(W16#), Word32(W32#), Word64(W64#)) import GHC.Base(uncheckedShiftL#, Int(I#)) #endif-import Prelude(Num((-), (+)), Float, Double, Integer, ($!), Show, fromIntegral, undefined, seq)-import System.IO(IO)+import Prelude(($!), undefined, seq)+import Papa hiding (many, (.>>), (<<.)) -- $setup -- >>> import Control.Lens.Fold((^?))@@ -256,7 +227,7 @@ -- RunGet 195 instance Apply (Get e) where (<.>) =- ap+ (<*>) apG :: Get e (a -> b)@@ -574,8 +545,8 @@ go 0 (r Nothing) go n (XPartial r) = do i <- Get (\b q -> let takeLimited t =- let (j, o) = B.splitAt n t- in q o (Just j)+ let (j, h) = B.splitAt n t+ in q h (Just j) in if B.null b then prompt b (q B.empty Nothing) takeLimited@@ -983,17 +954,17 @@ then normalised else denormalised normalised =- let exp = (fromIntegral exp16 `shiftR` 10) - 15 + 127+ let xp = (fromIntegral exp16 `shiftR` 10) - 15 + 127 frac = fromIntegral frac16- in (exp, frac)+ in (xp, frac) denormalised =- let exp = (fromIntegral exp16 `shiftR` 10) - 15 + 127 - e+ let xp = (fromIntegral exp16 `shiftR` 10) - 15 + 127 - e (e, frac ) = let step acc x = if x .&. 0x400 == 0 then step (acc + 1) (shiftL x 1) else (acc, fromIntegral x .&. 0x3FF) in step 0 (shiftL frac16 1) - in (exp, frac)+ in (xp, frac) in toFloat (sign32 .|. word32) {-# INLINE toFloat16 #-}
src/Data/Tickle/IsolateError.hs view
@@ -2,32 +2,19 @@ module Data.Tickle.IsolateError( -- * Data type- IsolateError+ IsolateError(..) -- * Reduction , isolateError -- * Prisms , _NegativeSize , _IsolateXFail , _UnexpectedConsumed+, _Not_NegativeSize+, _Not_IsolateXFail+, _Not_UnexpectedConsumed ) where -import Control.Lens.Prism(prism')-import Control.Lens.Type(Prism')-import Data.Eq(Eq)-import Data.Function(const)-import Data.Functor(Functor(fmap))-import Data.Functor.Extend(Extend(extended, duplicated))-import Data.Int(Int)-import Data.Maybe(Maybe(Just, Nothing))-import Data.Ord(Ord)-import Data.Tuple(uncurry)-import Prelude(Show)---- $setup--- >>> import Control.Lens((#))--- >>> import Control.Lens.Fold((^?))--- >>> import Data.List(reverse)--- >>> import Prelude(Num((+), (*)))+import Papa data IsolateError e = NegativeSize@@ -102,6 +89,222 @@ -- | --+-- >>> IsolateXFail (+10) <.> IsolateXFail 99+-- IsolateXFail 109+--+-- >>> IsolateXFail (+10) <.> NegativeSize+-- NegativeSize+--+-- >>> IsolateXFail (+10) <.> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <.> UnexpectedConsumed 5 6+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <.> NegativeSize+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <.> IsolateXFail (+10)+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize <.> UnexpectedConsumed 5 6+-- NegativeSize+--+-- >>> NegativeSize <.> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize <.> IsolateXFail (+10)+-- NegativeSize+instance Apply IsolateError where+ IsolateXFail f <.> IsolateXFail x =+ IsolateXFail (f x)+ IsolateXFail _ <.> NegativeSize =+ NegativeSize+ IsolateXFail _ <.> UnexpectedConsumed x y =+ UnexpectedConsumed x y+ NegativeSize <.> _ =+ NegativeSize+ UnexpectedConsumed x y <.> _ =+ UnexpectedConsumed x y++-- |+--+-- >>> IsolateXFail (+10) <*> IsolateXFail 99+-- IsolateXFail 109+--+-- >>> IsolateXFail (+10) <*> NegativeSize+-- NegativeSize+--+-- >>> IsolateXFail (+10) <*> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <*> UnexpectedConsumed 5 6+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <*> NegativeSize+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 <*> IsolateXFail (+10)+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize <*> UnexpectedConsumed 5 6+-- NegativeSize+--+-- >>> NegativeSize <*> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize <*> IsolateXFail (+10)+-- NegativeSize+--+-- >>> pure 5 :: IsolateError Int+-- IsolateXFail 5+instance Applicative IsolateError where+ pure =+ IsolateXFail+ (<*>) =+ (<.>)++-- |+--+-- >>> IsolateXFail 99 >>- \n -> IsolateXFail (n + 10)+-- IsolateXFail 109+--+-- >>> IsolateXFail 99 >>- \_ -> NegativeSize+-- NegativeSize+--+-- >>> IsolateXFail 99 >>- \_ -> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>- \n -> IsolateXFail (n + 10)+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>- \_ -> NegativeSize+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>- \_ -> UnexpectedConsumed 5 6+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize >>- \n -> IsolateXFail (n + 10)+-- NegativeSize+--+-- >>> NegativeSize >>- \_ -> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize >>- \_ -> UnexpectedConsumed 3 4+-- NegativeSize+instance Bind IsolateError where+ IsolateXFail x >>- f =+ f x+ NegativeSize >>- _ =+ NegativeSize+ UnexpectedConsumed x y >>- _ =+ UnexpectedConsumed x y++-- |+--+-- >>> IsolateXFail 99 >>= \n -> IsolateXFail (n + 10)+-- IsolateXFail 109+--+-- >>> IsolateXFail 99 >>= \_ -> NegativeSize+-- NegativeSize+--+-- >>> IsolateXFail 99 >>= \_ -> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>= \n -> IsolateXFail (n + 10)+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>= \_ -> NegativeSize+-- UnexpectedConsumed 3 4+--+-- >>> UnexpectedConsumed 3 4 >>= \_ -> UnexpectedConsumed 5 6+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize >>= \n -> IsolateXFail (n + 10)+-- NegativeSize+--+-- >>> NegativeSize >>= \_ -> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize >>= \_ -> UnexpectedConsumed 3 4+-- NegativeSize+--+-- >>> return 5 :: IsolateError Int+-- IsolateXFail 5+instance Monad IsolateError where+ (>>=) =+ (>>-)+ return =+ pure++-- |+--+-- >>> IsolateXFail 99 <!> IsolateXFail 55+-- IsolateXFail 99+--+-- >>> IsolateXFail 99 <!> NegativeSize+-- IsolateXFail 99+--+-- >>> IsolateXFail 99 <!> UnexpectedConsumed 3 4+-- IsolateXFail 99+--+-- >>> UnexpectedConsumed 3 4 <!> IsolateXFail 55+-- IsolateXFail 55+--+-- >>> UnexpectedConsumed 3 4 <!> NegativeSize+-- NegativeSize+--+-- >>> UnexpectedConsumed 3 4 <!> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize <!> IsolateXFail 55+-- IsolateXFail 55+--+-- >>> NegativeSize <!> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize <!> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+instance Alt IsolateError where+ IsolateXFail x <!> _ =+ IsolateXFail x+ _ <!> y = + y++-- |+--+-- >>> IsolateXFail 99 <> IsolateXFail 55+-- IsolateXFail 99+--+-- >>> IsolateXFail 99 <> NegativeSize+-- IsolateXFail 99+--+-- >>> IsolateXFail 99 <> UnexpectedConsumed 3 4+-- IsolateXFail 99+--+-- >>> UnexpectedConsumed 3 4 <> IsolateXFail 55+-- IsolateXFail 55+--+-- >>> UnexpectedConsumed 3 4 <> NegativeSize+-- NegativeSize+--+-- >>> UnexpectedConsumed 3 4 <> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+--+-- >>> NegativeSize <> IsolateXFail 55+-- IsolateXFail 55+--+-- >>> NegativeSize <> NegativeSize+-- NegativeSize+--+-- >>> NegativeSize <> UnexpectedConsumed 3 4+-- UnexpectedConsumed 3 4+instance Semigroup (IsolateError e) where+ (<>) =+ (<!>)++-- |+-- -- >>> _NegativeSize # () -- NegativeSize --@@ -116,11 +319,7 @@ _NegativeSize :: Prism' (IsolateError e) () _NegativeSize =- prism'- (const NegativeSize)- (\x -> case x of- NegativeSize -> Just ()- _ -> Nothing)+ _Not_IsolateXFail . _Nothing -- | --@@ -136,13 +335,9 @@ -- >>> (_UnexpectedConsumed # (12, 13)) ^? _IsolateXFail -- Nothing _IsolateXFail ::- Prism' (IsolateError e) e+ Prism (IsolateError e) (IsolateError g) e g _IsolateXFail =- prism'- IsolateXFail- (\x -> case x of- IsolateXFail e -> Just e- _ -> Nothing)+ _Not_NegativeSize . _Right -- | --@@ -160,8 +355,88 @@ _UnexpectedConsumed :: Prism' (IsolateError e) (Int, Int) _UnexpectedConsumed =+ _Not_IsolateXFail . _Just++-- |+--+-- >>> _Not_NegativeSize # Left (8, 9)+-- UnexpectedConsumed 8 9+--+-- >>> _Not_NegativeSize # Right 'a'+-- IsolateXFail 'a'+--+-- >>> (_NegativeSize # ()) ^? _Not_NegativeSize+-- Nothing+--+-- >>> (_IsolateXFail # 8) ^? _Not_NegativeSize+-- Just (Right 8)+--+-- >>> (_UnexpectedConsumed # (12, 13)) ^? _Not_NegativeSize+-- Just (Left (12,13))+_Not_NegativeSize ::+ Prism (IsolateError e) (IsolateError g) (Either (Int, Int) e) (Either (Int, Int) g)+_Not_NegativeSize =+ prism+ (\a -> case a of+ Right e -> IsolateXFail e+ Left (l, m) -> UnexpectedConsumed l m)+ (\x -> case x of+ IsolateXFail e -> Right (Right e)+ UnexpectedConsumed d e -> Right (Left (d, e))+ NegativeSize -> Left NegativeSize)++-- |+--+-- >>> _Not_IsolateXFail # Nothing+-- NegativeSize+--+-- >>> _Not_IsolateXFail # Just (7, 8)+-- UnexpectedConsumed 7 8+--+-- >>> (_NegativeSize # ()) ^? _Not_IsolateXFail+-- Just Nothing+--+-- >>> (_IsolateXFail # 8) ^? _Not_IsolateXFail+-- Nothing+--+-- >>> (_UnexpectedConsumed # (12, 13)) ^? _Not_IsolateXFail+-- Just (Just (12,13))+_Not_IsolateXFail ::+ Prism' (IsolateError e) (Maybe (Int, Int))+_Not_IsolateXFail = prism'- (uncurry UnexpectedConsumed)+ (\a -> case a of+ Nothing -> NegativeSize+ Just (l, m) -> UnexpectedConsumed l m) (\x -> case x of- UnexpectedConsumed l m -> Just (l, m)- _ -> Nothing)+ IsolateXFail _ -> Nothing+ UnexpectedConsumed d e -> Just (Just (d, e))+ NegativeSize -> Just Nothing)++-- |+--+-- >>> _Not_UnexpectedConsumed # Nothing+-- NegativeSize+--+-- >>> _Not_UnexpectedConsumed # Just 99+-- IsolateXFail 99+--+-- >>> (_NegativeSize # ()) ^? _Not_UnexpectedConsumed+-- Just Nothing+--+-- >>> (_IsolateXFail # 8) ^? _Not_UnexpectedConsumed+-- Just (Just 8)+--+-- >>> (_UnexpectedConsumed # (12, 13)) ^? _Not_UnexpectedConsumed+-- Nothing+_Not_UnexpectedConsumed ::+ Prism (IsolateError e) (IsolateError g) (Maybe e) (Maybe g)+_Not_UnexpectedConsumed =+ prism+ (\a -> case a of+ Nothing -> NegativeSize+ Just e -> IsolateXFail e)+ (\x -> case x of+ IsolateXFail e -> Right (Just e)+ UnexpectedConsumed d e -> Left (UnexpectedConsumed d e)+ NegativeSize -> Right Nothing)
src/Data/Tickle/RunGetResult.hs view
@@ -2,7 +2,7 @@ module Data.Tickle.RunGetResult( -- * Data type- RunGetResult+ RunGetResult(..) -- * Reduction , runGetResult -- * Prisms@@ -15,43 +15,11 @@ , runGetResultAccValidationIso ) where -import Control.Applicative(Applicative((<*>), pure), (<$>))-import Control.Category(Category((.), id))-import Control.Lens.Iso(iso, from)-import Control.Lens.Prism(prism')-import Control.Lens.Type(Iso, Prism')-import Control.Monad(Monad((>>=), return))-import Data.Bifoldable(Bifoldable(bifoldMap))-import Data.Bifunctor(Bifunctor(bimap))-import Data.Bitraversable(Bitraversable(bitraverse))-import Data.Either(Either(Left, Right))-import Data.Eq(Eq)-import Data.Foldable(Foldable(foldMap))-import Data.Functor(Functor(fmap))-import Data.Functor.Apply(Apply((<.>)))-import Data.Functor.Alt(Alt((<!>)))-import Data.Functor.Bind(Bind((>>-)))-import Data.Functor.Extend(Extend(extended, duplicated))-import Data.Int(Int64)-import Data.Maybe(Maybe(Nothing, Just))-import Data.Monoid(Monoid(mempty))-import Data.Ord(Ord)-import Data.Semigroup(Semigroup((<>)))-import Data.Traversable(Traversable(traverse))-import Data.Tuple(uncurry) import Data.Validation(Validation, AccValidation, Validation', Validate(_Either, _Validation'))-import Prelude(Show)+import Papa -- $setup--- >>> import Control.Lens((#))--- >>> import Control.Lens.Fold((^?))--- >>> import Control.Lens.Prism(_Right, _Left)--- >>> import Data.Eq(Eq((==)))--- >>> import Data.Int(Int)--- >>> import Data.List((++))--- >>> import Data.String(String) -- >>> import Data.Validation(_Success, _Failure)--- >>> import Prelude(Num((*), (+), (-)), subtract, even, mod) data RunGetResult e a = RunGetFail Int64 e@@ -319,9 +287,6 @@ -- | ----- >>> :t _RunGet # 8--- _RunGet # 8 :: Num b => RunGetResult e b--- -- >>> (_RunGet # 8) ^? _RunGet -- Just 8 --@@ -386,10 +351,10 @@ -- >>> runGetResultValidation'Iso . from _Validation' # _Left # (12, "abc") -- RunGetFail 12 "abc" ----- >>> from (runGetResultValidation'Iso . from _Validation') # _RunGet # 99 :: Validation (Int64, ()) Int+-- >>> from (runGetResultValidation'Iso . from _Validation') # _RunGet # 99 :: Validation (Int64, Int) Int -- Success 99 ----- >>> from (runGetResultValidation'Iso . from _Validation') # _RunGetFail # (12, "abc") :: Validation (Int64, String) ()+-- >>> from (runGetResultValidation'Iso . from _Validation') # _RunGetFail # (12, "abc") :: Validation (Int64, String) String -- Failure (12,"abc") runGetResultValidation'Iso :: Iso (RunGetResult a b) (RunGetResult b d) (Validation' (Int64, a) b) (Validation' (Int64, b) d)
tickle.cabal view
@@ -1,25 +1,26 @@ name: tickle-version: 0.0.6+version: 0.0.7 license: BSD3-license-file: LICENSE+license-file: LICENCE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> maintainer: Tony Morris copyright: Copyright (C) 2014,2015 NICTA Limited+copyright: Copyright (c) 2016-2018 Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230. synopsis: A port of @Data.Binary@ category: Data description:- <<http://i.imgur.com/Ns5hntl.jpg>>+ <<http://i.imgur.com/uZnp9ke.png>> . A port of @Data.Binary@ that tightens up data types and parameterises error messages-homepage: https://github.com/NICTA/tickle-bug-reports: https://github.com/NICTA/tickle/issues+homepage: https://github.com/qfpl/tickle+bug-reports: https://github.com/qfpl/tickle/issues cabal-version: >= 1.10 build-type: Custom extra-source-files: changelog, etc/ATTRIBUTIONS source-repository head type: git- location: git@github.com:NICTA/tickle.git+ location: git@github.com:qfpl/tickle.git flag small_base description: Choose the new, split-up base package.@@ -37,8 +38,10 @@ , bytestring >= 0.10 , transformers >= 0.3.0.0 , mtl >= 2.1- , validation >= 0.3.4+ , validation >= 0.3.4 && < 0.6 , filepath >= 1.4+ , papa >= 0.3 && < 0.4+ ghc-options: -Wall