Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

renamed 'Text.Blaze' to 'Blaze.ByteString'

  • Loading branch information...
commit a7bbf4aac22ea922849d059c6269628ce96f4fcf 1 parent 815a338
@meiersi authored
View
8 CHANGES
@@ -1,15 +1,15 @@
* blaze-builder-0.2.0.0
- Heavily restructured 'blaze-builder' such that 'Text.Blaze.Builder' serves as
+ Heavily restructured 'blaze-builder' such that 'Blaze.ByteString.Builder' serves as
a drop-in replacement of 'binary:Data.Binary.Builder' which it improves upon
with respect to both speed as well as expressivity. See the documentation and
the benchmarks for details on improvements and new functionality.
Changed module structure:
- Text.Blaze.Builder.Core -> Text.Blaze.Builder
- Text.Blaze.Builder.Utf8 -> Text.Blaze.Builder.Char.Utf8
- Text.Blaze.Builder.Html -> Text.Blaze.Builder.Html.Utf8
+ Blaze.ByteString.Builder.Core -> Blaze.ByteString.Builder
+ Blaze.ByteString.Builder.Utf8 -> Blaze.ByteString.Builder.Char.Utf8
+ Blaze.ByteString.Builder.Html -> Blaze.ByteString.Builder.Html.Utf8
Changed function names:
writeByte -> writeWord8
View
4 Criterion/ScalingBenchmark.hs
@@ -25,8 +25,8 @@ import Data.Int (Int64)
import qualified Data.Vector.Generic as V
-import Text.Blaze.Builder
-import Text.Blaze.Builder.Internal
+import Blaze.ByteString.Builder
+import Blaze.ByteString.Builder.Internal
import qualified Data.Binary.Builder as B
View
2  README.markdown
@@ -23,7 +23,7 @@ or run the list serialization comparison benchmark
make bench-blaze-vs-binary
-Checkout the combinators in the module "Text.Blaze.Builder.Write" to see
+Checkout the combinators in the module "Blaze.ByteString.Builder.Write" to see
the improvements in expressivity. This module allows to incorporate efficient
primitive buffer manipulations as parts of a builder. We use this facility
in the 'blaze-html' HTML templating library to allow for the efficient
View
2  TODO
@@ -2,7 +2,7 @@
* custom serialization functions for lists of 'WordX's
- benchmark chunk size speedup for more complicated computations of list
elements => to be expected that we get no speedup anymore or even a
- slowdown => adapt Text.Blaze.Builder.Word accordingly.
+ slowdown => adapt Blaze.ByteString.Builder.Word accordingly.
* fast serialization for 'Text' values (currently unpacking to 'String' is
the fastest :-/)
View
32 Text/Blaze/Builder.hs
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------------
-- |
--- Module : Text.Blaze.Builder
+-- Module : Blaze.ByteString.Builder
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -8,17 +8,17 @@
-- Stability : experimental
-- Portability : tested on GHC only
--
--- "Text.Blaze.Builder" is the main module, which you should import as a user
+-- "Blaze.ByteString.Builder" is the main module, which you should import as a user
-- of the @blaze-builder@ library.
--
--- > import Text.Blaze.Builder
+-- > import Blaze.ByteString.Builder
--
-- It provides you with a type 'Builder' that allows to efficiently construct
-- lazy bytestrings with a large average chunk size.
--
-- Intuitively, a 'Builder' denotes the construction of a part of a lazy
-- bytestring. Builders can either be created using one of the primitive
--- combinators in "Text.Blaze.Builder.Write" or by using one of the predefined
+-- combinators in "Blaze.ByteString.Builder.Write" or by using one of the predefined
-- combinators for standard Haskell values (see the exposed modules of this
-- package). Concatenation of builders is done using 'mappend' from the
-- 'Monoid' typeclass.
@@ -26,7 +26,7 @@
-- Here is a small example that serializes a list of strings using the UTF-8
-- encoding.
--
--- @ import "Text.Blaze.Builder.Char.Utf8"@
+-- @ import "Blaze.ByteString.Builder.Char.Utf8"@
--
-- > strings :: [String]
-- > strings = replicate 10000 "Hello there!"
@@ -56,16 +56,16 @@
-- expressivity.
-----------------------------------------------------------------------------
-module Text.Blaze.Builder
+module Blaze.ByteString.Builder
(
-- * The @Builder@ type
Builder
-- * Creating builders
- , module Text.Blaze.Builder.Write
- , module Text.Blaze.Builder.Int
- , module Text.Blaze.Builder.Word
- , module Text.Blaze.Builder.ByteString
+ , module Blaze.ByteString.Builder.Write
+ , module Blaze.ByteString.Builder.Int
+ , module Blaze.ByteString.Builder.Word
+ , module Blaze.ByteString.Builder.ByteString
, flush
-- * Executing builders
@@ -78,7 +78,7 @@ module Text.Blaze.Builder
-- * Compatibility to Data.Binary.Builder from the binary package
--
- -- | The following functions ensure that @"Text.Blaze.Builder"@ is a
+ -- | The following functions ensure that @"Blaze.ByteString.Builder"@ is a
-- drop-in replacement for @Data.Binary.Builder@ from the @binary@
-- package. Note that these functions are deprecated and may be removed
-- in future versions of the @blaze-builder@ package.
@@ -99,11 +99,11 @@ module Text.Blaze.Builder
, putWord64host --
) where
-import Text.Blaze.Builder.Internal
-import Text.Blaze.Builder.Write
-import Text.Blaze.Builder.Int
-import Text.Blaze.Builder.Word
-import Text.Blaze.Builder.ByteString
+import Blaze.ByteString.Builder.Internal
+import Blaze.ByteString.Builder.Write
+import Blaze.ByteString.Builder.Int
+import Blaze.ByteString.Builder.Word
+import Blaze.ByteString.Builder.ByteString
import Data.Monoid
import Data.Word
View
8 Text/Blaze/Builder/ByteString.hs
@@ -1,7 +1,7 @@
{-# LANGUAGE CPP, BangPatterns, OverloadedStrings #-}
-- |
--- Module : Text.Blaze.Builder.ByteString
+-- Module : Blaze.ByteString.Builder.ByteString
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -17,7 +17,7 @@
-- > import qualified Data.ByteString as S
-- > import qualified Data.ByteString.Lazy as L
--
-module Text.Blaze.Builder.ByteString
+module Blaze.ByteString.Builder.ByteString
(
-- * Strict bytestrings
writeByteString
@@ -34,8 +34,8 @@ module Text.Blaze.Builder.ByteString
) where
-import Text.Blaze.Builder.Write
-import Text.Blaze.Builder.Internal
+import Blaze.ByteString.Builder.Write
+import Blaze.ByteString.Builder.Internal
import Foreign
import Data.Monoid
View
8 Text/Blaze/Builder/Char/Utf8.hs
@@ -2,7 +2,7 @@
-- ignore warning from 'import Data.Text.Encoding'
-- |
--- Module : Text.Blaze.Builder.Char.Utf8
+-- Module : Blaze.ByteString.Builder.Char.Utf8
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -13,7 +13,7 @@
-- 'Write's and 'Builder's for serializing Unicode characters using the UTF-8
-- encoding.
--
-module Text.Blaze.Builder.Char.Utf8
+module Blaze.ByteString.Builder.Char.Utf8
(
-- * Writing UTF-8 encoded characters to a buffer
writeChar
@@ -34,8 +34,8 @@ import qualified Data.Text.Encoding as TS -- imported for documentation lin
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TS -- imported for documentation links
-import Text.Blaze.Builder.Internal
-import Text.Blaze.Builder.Write
+import Blaze.ByteString.Builder.Internal
+import Blaze.ByteString.Builder.Write
-- | Write a UTF-8 encoded Unicode character to a buffer.
--
View
10 Text/Blaze/Builder/Html/Utf8.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE OverloadedStrings #-}
-- |
--- Module : Text.Blaze.Builder.Html.Utf8
+-- Module : Blaze.ByteString.Builder.Html.Utf8
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -15,9 +15,9 @@
-- templating libraries. If the 'Builder' from 'blaze-builder' replaces the
-- 'Data.Binary.Builder' implementation, this module will most likely keep its
-- place, as it provides a set of very specialized functions.
-module Text.Blaze.Builder.Html.Utf8
+module Blaze.ByteString.Builder.Html.Utf8
(
- module Text.Blaze.Builder.Char.Utf8
+ module Blaze.ByteString.Builder.Char.Utf8
-- * Writing HTML escaped and UTF-8 encoded characters to a buffer
, writeHtmlEscapedChar
@@ -35,8 +35,8 @@ import Data.ByteString.Char8 () -- for the 'IsString' instance of bytesrings
import qualified Data.Text as TS
import qualified Data.Text.Lazy as TL
-import Text.Blaze.Builder
-import Text.Blaze.Builder.Char.Utf8
+import Blaze.ByteString.Builder
+import Blaze.ByteString.Builder.Char.Utf8
-- | Write a HTML escaped and UTF-8 encoded Unicode character to a bufffer.
--
View
12 Text/Blaze/Builder/Int.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE CPP #-}
-- |
--- Module : Text.Blaze.Builder.Int
+-- Module : Blaze.ByteString.Builder.Int
-- Copyright : (c) 2010 Simon Meier
--
-- License : BSD3-style (see LICENSE)
@@ -11,14 +11,14 @@
--
-- 'Write's and 'Builder's for serializing integers.
--
--- See "Text.Blaze.Builder.Word" for information about how to best write several
+-- See "Blaze.ByteString.Builder.Word" for information about how to best write several
-- integers at once.
--
#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)
#include "MachDeps.h"
#endif
-module Text.Blaze.Builder.Int
+module Blaze.ByteString.Builder.Int
(
-- * Writing integers to a buffer
@@ -79,9 +79,9 @@ module Text.Blaze.Builder.Int
) where
-import Text.Blaze.Builder.Internal
-import Text.Blaze.Builder.Write
-import Text.Blaze.Builder.Word
+import Blaze.ByteString.Builder.Internal
+import Blaze.ByteString.Builder.Write
+import Blaze.ByteString.Builder.Word
import Foreign
View
16 Text/Blaze/Builder/Internal.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE CPP, BangPatterns #-}
-- |
--- Module : Text.Blaze.Builder.Internal
+-- Module : Blaze.ByteString.Builder.Internal
-- Copyright : (c) 2010 Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -11,14 +11,14 @@
-- Implementation of the 'Builder' monoid.
--
-- A standard library user must never import this module directly. Instead, he
--- should import "Text.Blaze.Builder", which re-exports the 'Builder' type and
+-- should import "Blaze.ByteString.Builder", which re-exports the 'Builder' type and
-- its associated public functions defined in this module.
--
-- Developers of other libraries may import this module to gain access to the
-- internal representation of builders. For example, in some cases, creating a
-- 'Builder' with a custom low-level 'BuildStep' may improve performance
-- considerably compared to the creating it using the public 'Builder'
--- combinators (e.g., @'fromWrite1List'@ in "Text.Blaze.Builder.Write").
+-- combinators (e.g., @'fromWrite1List'@ in "Blaze.ByteString.Builder.Write").
-- Another example, is the use of 'ModifyChunks' to efficiently wire the
-- 'Builder' type with another library that generates lazy bytestrings.
--
@@ -27,7 +27,7 @@
-- implementation and the guarantees given in this file may change in any
-- version! The release notes will tell, if this was the case.
--
-module Text.Blaze.Builder.Internal
+module Blaze.ByteString.Builder.Internal
(
-- * The @Builder@ type
Builder(..)
@@ -75,10 +75,10 @@ import qualified Data.ByteString.Lazy.Internal as L
-- | Intuitively, a builder denotes the construction of a lazy bytestring.
--
-- Builders can be created from primitive buffer manipulations using the
--- @'Write'@ abstraction provided by in "Text.Blaze.Builder.Write". However for
+-- @'Write'@ abstraction provided by in "Blaze.ByteString.Builder.Write". However for
-- many Haskell values, there exist predefined functions doing that already.
-- For example, UTF-8 encoding 'Char' and 'String' values is provided by the
--- functions in "Text.Blaze.Builder.Char.Utf8". Concatenating builders is done
+-- functions in "Blaze.ByteString.Builder.Char.Utf8". Concatenating builders is done
-- using their 'Monoid' instance.
--
-- Semantically, builders are nothing special. They just denote a sequence of
@@ -94,7 +94,7 @@ import qualified Data.ByteString.Lazy.Internal as L
-- benchmarking is unavoidable. Moreover, it also helps to understand the
-- implementation of builders and the predefined combinators. This should be
-- amenable to the average Haskell programmer by reading the source code of
--- "Text.Blaze.Builder.Internal" and the other modules of this library.
+-- "Blaze.ByteString.Builder.Internal" and the other modules of this library.
--
-- The guiding implementation principle was to reduce the abstraction cost per
-- output byte. We use continuation passing to achieve a constant time append.
@@ -105,7 +105,7 @@ import qualified Data.ByteString.Lazy.Internal as L
-- We also try to take the pressure off the cache by moving variables as far
-- out of loops as possible. This leads to some duplication of code, but
-- results in sometimes dramatic increases in performance. For example, see the
--- @'fromWord8s'@ function in "Text.Blaze.Builder.Word".
+-- @'fromWord8s'@ function in "Blaze.ByteString.Builder.Word".
--
newtype Builder = Builder (BuildStep -> BuildStep)
View
8 Text/Blaze/Builder/Word.hs
@@ -3,7 +3,7 @@
{-# LANGUAGE CPP #-}
-- |
--- Module : Text.Blaze.Builder.Word
+-- Module : Blaze.ByteString.Builder.Word
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
--
-- Original serialization code from 'Data.Binary.Builder':
@@ -35,7 +35,7 @@
#include "MachDeps.h"
#endif
-module Text.Blaze.Builder.Word
+module Blaze.ByteString.Builder.Word
(
-- * Writing words to a buffer
@@ -96,8 +96,8 @@ module Text.Blaze.Builder.Word
) where
-import Text.Blaze.Builder.Internal
-import Text.Blaze.Builder.Write
+import Blaze.ByteString.Builder.Internal
+import Blaze.ByteString.Builder.Write
import Foreign
View
8 Text/Blaze/Builder/Write.hs
@@ -1,7 +1,7 @@
{-# LANGUAGE CPP, BangPatterns #-}
-- |
--- Module : Text.Blaze.Builder.Write
+-- Module : Blaze.ByteString.Builder.Write
-- Copyright : (c) 2010 Jasper Van der Jeugt & Simon Meier
-- License : BSD3-style (see LICENSE)
--
@@ -13,7 +13,7 @@
-- buffer. 'Write's form the public interface for lifting direct buffer
-- manipulations to 'Builder's.
--
-module Text.Blaze.Builder.Write
+module Blaze.ByteString.Builder.Write
(
-- * Atomic writes to a buffer
Write (..)
@@ -29,7 +29,7 @@ module Text.Blaze.Builder.Write
) where
-import Text.Blaze.Builder.Internal
+import Blaze.ByteString.Builder.Internal
import Foreign
import Data.Monoid
@@ -45,7 +45,7 @@ import Data.Monoid
-- must ensure that @n@ bytes are free starting from @pf@.
--
-- For example, the function @'writeWord8'@ provided by
--- "Text.Blaze.Builder.Word" creates a 'Write' that writes a single fixed byte
+-- "Blaze.ByteString.Builder.Word" creates a 'Write' that writes a single fixed byte
-- to a buffer.
--
-- > writeWord8 :: Word8 -> Write
View
4 benchmarks/BlazeVsBinary.hs
@@ -36,8 +36,8 @@ import qualified Data.ByteString as S
import Data.Text (Text)
import Data.Text.Encoding (encodeUtf8)
-import qualified Text.Blaze.Builder as Blaze
-import qualified Text.Blaze.Builder.Char.Utf8 as Blaze
+import qualified Blaze.ByteString.Builder as Blaze
+import qualified Blaze.ByteString.Builder.Char.Utf8 as Blaze
main :: IO ()
main = defaultMain $ concat
View
4 benchmarks/ChunkedWrite.hs
@@ -28,8 +28,8 @@ import Criterion.Main
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString as S
-import qualified Text.Blaze.Builder as BB
-import qualified Text.Blaze.Builder.Char.Utf8 as BB
+import qualified Blaze.ByteString.Builder as BB
+import qualified Blaze.ByteString.Builder.Char.Utf8 as BB
main :: IO ()
main = defaultMain
View
2  benchmarks/Compression.hs
@@ -24,7 +24,7 @@ import Criterion.Main
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Char8 as S
-import qualified Text.Blaze.Builder as B
+import qualified Blaze.ByteString.Builder as B
import Codec.Compression.GZip
main = defaultMain
View
6 benchmarks/StringAndText.hs
@@ -24,9 +24,9 @@ import qualified Data.Text.Encoding as TS
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TL
-import qualified Text.Blaze.Builder as Blaze
-import qualified Text.Blaze.Builder.Internal as Blaze
-import qualified Text.Blaze.Builder.Html.Utf8 as Blaze
+import qualified Blaze.ByteString.Builder as Blaze
+import qualified Blaze.ByteString.Builder.Internal as Blaze
+import qualified Blaze.ByteString.Builder.Html.Utf8 as Blaze
main :: IO ()
main = defaultMain
View
2  benchmarks/Throughput/BlazeBuilder.hs
@@ -6,7 +6,7 @@ module Throughput.BlazeBuilder (
import Data.Monoid
import qualified Data.ByteString.Lazy as L
-import Text.Blaze.Builder
+import Blaze.ByteString.Builder
import Throughput.Utils
View
2  benchmarks/Throughput/BlazeBuilderDeclarative.hs
@@ -7,7 +7,7 @@ import Data.Monoid
import Data.Word
import qualified Data.ByteString.Lazy as L
-import Text.Blaze.Builder
+import Blaze.ByteString.Builder
import Throughput.Utils
View
2  benchmarks/Throughput/BlazePut.hs
@@ -2,7 +2,7 @@
module Throughput.BlazePut (serialize) where
import qualified Data.ByteString.Lazy as L
-import Text.Blaze.Builder
+import Blaze.ByteString.Builder
import Throughput.BlazePutMonad as Put
import Data.Monoid
View
4 benchmarks/Throughput/BlazePutMonad.hs
@@ -52,8 +52,8 @@ module Throughput.BlazePutMonad (
) where
import Data.Monoid
-import Text.Blaze.Builder (Builder, toLazyByteString)
-import qualified Text.Blaze.Builder as B
+import Blaze.ByteString.Builder (Builder, toLazyByteString)
+import qualified Blaze.ByteString.Builder as B
import Data.Word
import qualified Data.ByteString as S
View
16 benchmarks/notes/bench_string_and_text-ghc-7.7.0.0.20100924
@@ -1,12 +1,12 @@
ghc-7.0.0.20100924 --make -O2 -fforce-recomp -ibenchmarks -main-is StringAndText StringAndText
-[1 of 9] Compiling Text.Blaze.Builder.Internal ( Text/Blaze/Builder/Internal.hs, Text/Blaze/Builder/Internal.o )
-[2 of 9] Compiling Text.Blaze.Builder.Write ( Text/Blaze/Builder/Write.hs, Text/Blaze/Builder/Write.o )
-[3 of 9] Compiling Text.Blaze.Builder.Char.Utf8 ( Text/Blaze/Builder/Char/Utf8.hs, Text/Blaze/Builder/Char/Utf8.o )
-[4 of 9] Compiling Text.Blaze.Builder.Word ( Text/Blaze/Builder/Word.hs, Text/Blaze/Builder/Word.o )
-[5 of 9] Compiling Text.Blaze.Builder.Int ( Text/Blaze/Builder/Int.hs, Text/Blaze/Builder/Int.o )
-[6 of 9] Compiling Text.Blaze.Builder.ByteString ( Text/Blaze/Builder/ByteString.hs, Text/Blaze/Builder/ByteString.o )
-[7 of 9] Compiling Text.Blaze.Builder ( Text/Blaze/Builder.hs, Text/Blaze/Builder.o )
-[8 of 9] Compiling Text.Blaze.Builder.Html.Utf8 ( Text/Blaze/Builder/Html/Utf8.hs, Text/Blaze/Builder/Html/Utf8.o )
+[1 of 9] Compiling Blaze.ByteString.Builder.Internal ( Text/Blaze/Builder/Internal.hs, Text/Blaze/Builder/Internal.o )
+[2 of 9] Compiling Blaze.ByteString.Builder.Write ( Text/Blaze/Builder/Write.hs, Text/Blaze/Builder/Write.o )
+[3 of 9] Compiling Blaze.ByteString.Builder.Char.Utf8 ( Text/Blaze/Builder/Char/Utf8.hs, Text/Blaze/Builder/Char/Utf8.o )
+[4 of 9] Compiling Blaze.ByteString.Builder.Word ( Text/Blaze/Builder/Word.hs, Text/Blaze/Builder/Word.o )
+[5 of 9] Compiling Blaze.ByteString.Builder.Int ( Text/Blaze/Builder/Int.hs, Text/Blaze/Builder/Int.o )
+[6 of 9] Compiling Blaze.ByteString.Builder.ByteString ( Text/Blaze/Builder/ByteString.hs, Text/Blaze/Builder/ByteString.o )
+[7 of 9] Compiling Blaze.ByteString.Builder ( Text/Blaze/Builder.hs, Text/Blaze/Builder.o )
+[8 of 9] Compiling Blaze.ByteString.Builder.Html.Utf8 ( Text/Blaze/Builder/Html/Utf8.hs, Text/Blaze/Builder/Html/Utf8.o )
[9 of 9] Compiling StringAndText ( benchmarks/StringAndText.hs, benchmarks/StringAndText.o )
echo ghc-7.0.0.20100924
ghc-7.0.0.20100924
View
18 blaze-builder.cabal
@@ -40,15 +40,15 @@ Extra-source-files:
Library
Ghc-Options: -Wall
- Exposed-modules: Text.Blaze.Builder
- Text.Blaze.Builder.Write
- Text.Blaze.Builder.Int
- Text.Blaze.Builder.Word
- Text.Blaze.Builder.ByteString
- Text.Blaze.Builder.Char.Utf8
- Text.Blaze.Builder.Html.Utf8
-
- Text.Blaze.Builder.Internal
+ Exposed-modules: Blaze.ByteString.Builder
+ Blaze.ByteString.Builder.Write
+ Blaze.ByteString.Builder.Int
+ Blaze.ByteString.Builder.Word
+ Blaze.ByteString.Builder.ByteString
+ Blaze.ByteString.Builder.Char.Utf8
+ Blaze.ByteString.Builder.Html.Utf8
+
+ Blaze.ByteString.Builder.Internal
Build-depends: base >= 4 && < 5,
text >= 0.9,
View
2  tests/LlvmSegfault.hs
@@ -11,7 +11,7 @@ import qualified Data.ByteString.Lazy as L
import Foreign
-import Text.Blaze.Builder.Internal
+import Blaze.ByteString.Builder.Internal
View
6 tests/Tests.hs
@@ -17,9 +17,9 @@ import Test.QuickCheck
import Test.HUnit hiding (Test)
import Codec.Binary.UTF8.String (decode)
-import Text.Blaze.Builder
-import Text.Blaze.Builder.Char.Utf8
-import Text.Blaze.Builder.Html.Utf8
+import Blaze.ByteString.Builder
+import Blaze.ByteString.Builder.Char.Utf8
+import Blaze.ByteString.Builder.Html.Utf8
main :: IO ()
main = defaultMain $ return $ testGroup "Tests" tests
Please sign in to comment.
Something went wrong with that request. Please try again.