Package maintainers and Hackage trustees are allowed to edit certain bits
of package metadata after a release, without uploading a new tarball.
Note that the tarball itself is never changed, just the metadata that is
stored separately. For more information about metadata revisions, please
refer to the
Hackage Metadata Revisions FAQ.
| No. |
Time |
User |
SHA256 |
| -r5 |
2026-06-24T01:43:56Z |
BaldurBlondal |
82c5a3d16f94094f89a30b2acc91b5fe1ddb84cf507060b01d8fa1daa9c332c9
|
|
Changed tested-with
from ghc ==9.8.1: ghc ==9.10.3: ghc ==9.12.4: ghc ==9.14.1
to ghc ==9.8.1: ghc ==9.10.3: ghc ==9.12.4: ghc ==9.14.1: ghc ==9.10.3: ghc ==9.12.4: ghc ==9.14.1 Changed description
from The <https://hackage.haskell.org/package/stock stock> plugin
provides a newtype
__@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__
for deriving and synthesising instances at compile
time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@ and
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@.
@arbitrary@ is structural and size-aware, in the style of
@<https://hackage-content.haskell.org/package/generic-arbitrary generic-arbitrary>@.
It picks a constructor, preferring terminal constructors once the
size runs out, so recursive types terminate, and fills each field
with its own @arbitrary@, dividing the size among recursive
fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
<https://hackage.haskell.org/package/stock stock> companion packages include:
* __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* __@<https://hackage.haskell.org/package/stock-aeson stock-aeson>@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __@stock-quickcheck@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
to The <https://hackage.haskell.org/package/stock stock> plugin
provides a newtype
__@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__
for deriving and synthesising instances at compile
time. __stock-quickcheck__ extends it to support
@<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@,
@<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@ and
@<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@.
@arbitrary@ is structural and size-aware, in the style of
@<https://hackage-content.haskell.org/package/generic-arbitrary generic-arbitrary>@.
It picks a constructor, preferring terminal constructors once the
size runs out, so recursive types terminate, and fills each field
with its own @arbitrary@, dividing the size among recursive
fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
<https://hackage.haskell.org/package/stock stock> companion packages include:
* __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* __@<https://hackage.haskell.org/package/stock-aeson stock-aeson>@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __@stock-quickcheck@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
|
| -r4 |
2026-06-24T00:26:33Z |
BaldurBlondal |
1b50e87e7550619d102ffca8412147cf878244fd8445172dc41652c637c0dd0a
|
|
Changed description
from The @<https://hackage.haskell.org/package/stock stock>@ plugin
provides a datatype for deriving and synthesising instances at
compile time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
@<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
* @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* @<https://hackage.haskell.org/package/stock-aeson stock-aeson>@: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __stock-quickcheck__: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
to The <https://hackage.haskell.org/package/stock stock> plugin
provides a newtype
__@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__
for deriving and synthesising instances at compile
time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@ and
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@.
@arbitrary@ is structural and size-aware, in the style of
@<https://hackage-content.haskell.org/package/generic-arbitrary generic-arbitrary>@.
It picks a constructor, preferring terminal constructors once the
size runs out, so recursive types terminate, and fills each field
with its own @arbitrary@, dividing the size among recursive
fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
<https://hackage.haskell.org/package/stock stock> companion packages include:
* __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* __@<https://hackage.haskell.org/package/stock-aeson stock-aeson>@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __@stock-quickcheck@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
|
| -r3 |
2026-06-23T20:01:07Z |
BaldurBlondal |
92e6925521242f69be583761bc0eea7c4aedb3802662bd33585aba66ebe2bdec
|
|
Changed description
from The @<https://hackage.haskell.org/package/stock stock>@ plugin
provides a datatype for deriving and synthesising instances at
compile time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
> import Stock.Override
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
@<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
* @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* @<https://hackage.haskell.org/package/stock-aeson stock-aeson>@: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __stock-quickcheck__: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
to The @<https://hackage.haskell.org/package/stock stock>@ plugin
provides a datatype for deriving and synthesising instances at
compile time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
@<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
* @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* @<https://hackage.haskell.org/package/stock-aeson stock-aeson>@: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __stock-quickcheck__: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
|
| -r2 |
2026-06-23T19:59:58Z |
BaldurBlondal |
def968306c3203455ce8401c0e14dba18e3af9d693bc6e9ae7b0c75d5b2ef9f8
|
|
Changed description
from The <https://hackage.haskell.org/package/stock stock> plugin provides a datatype for deriving and synthesising
instances at compile time. @stock-quickcheck@ extends the <https://hackage.haskell.org/package/stock stock>
with support for @Arbitrary@ (and higher-kinded variants) and
@CoArbitrary@.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
> import Stock.Override
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
@stock-quickcheck@ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
to The @<https://hackage.haskell.org/package/stock stock>@ plugin
provides a datatype for deriving and synthesising instances at
compile time. __stock-quickcheck__ extends it to support
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@,
@<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@,
and their higher-kinded variants.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
> import Stock.Override
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
__stock-quickcheck__ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
@<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
* @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
* @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
* @<https://hackage.haskell.org/package/stock-aeson stock-aeson>@: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
* __stock-quickcheck__: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
* @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
|
| -r1 |
2026-06-23T16:29:29Z |
BaldurBlondal |
c8d34bfe97f167f42d650e278c98a45ad8aacdce3bf3e302d1567fc348d935a9
|
|
Changed description
from The @stock@ plugin provides a datatype for deriving and synthesising
instances at compile time. @stock-quickcheck@ extends the @stock@
with support for @Arbitrary@ (and higher-kinded variants) and
@CoArbitrary@.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
> import Stock.Override
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
@stock-quickcheck@ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
to The <https://hackage.haskell.org/package/stock stock> plugin provides a datatype for deriving and synthesising
instances at compile time. @stock-quickcheck@ extends the <https://hackage.haskell.org/package/stock stock>
with support for @Arbitrary@ (and higher-kinded variants) and
@CoArbitrary@.
> {-# options_ghc -fplugin Stock #-}
>
> {-# language DerivingVia #-}
> {-# language DataKinds #-}
>
> import Stock
> import Stock.QuickCheck
> import Stock.Override
>
> import Test.QuickCheck
>
> data Person = P { name :: String, age :: Int }
> deriving (Eq, Ord, Show, Read) via
> Stock Person
> deriving Arbitrary via
> Overriding Person
> [ name via ASCIIString, age via Positive ]
@stock-quickcheck@ provides four instances, that signal to the
plugin how to derive @Arbitrary@, @Arbitrary1@, @Arbitrary2@ and
@CoArbitrary@.
@arbitrary@ is structural and size-aware, in the style of
@generic-arbitrary@. It picks a constructor, preferring terminal
constructors once the size runs out, so recursive types terminate,
and fills each field with its own @arbitrary@, dividing the size
among recursive fields. @shrink@ defaults.
> instance DeriveStock Arbitrary ..
> instance DeriveStock1 Arbitrary1 ..
> instance DeriveStock2 Arbitrary2 ..
> instance DeriveStock CoArbitrary ..
|
| -r0 |
2026-06-23T15:43:51Z |
BaldurBlondal |
8fd530321a00d2999faaf9d96aeefff40147fb3471be389d574815cb2f81e467
|
|
|