Metadata revisions for discrete-0.1.0.0

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
-r1 (discrete-0.1.0.0-r1) 2018-09-17T18:35:30Z chessai 70625ce5265aa9de4d1aafa37683f6210b0eb1bbaaa91a6e4ac03f017d0f3eab
  • Changed description from

    A 'Discrete' type is a set X with at least one element, along with two
    functions, @'succ' :: X -> 'Maybe' X@ and @'pred' :: X -> 'Maybe' X@,
    such that all inhabitants of the set X can be constructed given at least
    a single element of the set and these two functions. The following must hold:
    @'pred' '>=>' 'succ' '>=>' 'pred' = 'pred'@
    @'succ' '>=>' 'pred' '>=>' 'succ' = 'succ'@
    This means that 'Int' is a discrete type, because given any x :: 'Int', one
    can construct any other 'Int' with the following functions:
    @'succ' x = if x '==' 'maxBound' then 'Nothing' else 'Just' (x '+' 1)@
    @'pred' x = if x '==' 'minBound' then 'Nothing' else 'Just' (x '-' 1)@
    This also means that something like 'Double' is /not/ a discrete type, because
    there are no such functions 'succ' and 'pred' that given any value of type 'Double'
    can allow the construction of all values of type 'Double'.
    'Discrete' acts as a replacement for 'GHC.Enum.Enum'. The motivation for
    'Discrete' is two-fold: firstly, totality of all typeclass instances, and
    secondly, that 'GHC.Enum.Enum' is a typeclass that does too many things,
    and does them poorly. If 'succ' or 'pred' are called on 'maxBound'
    or 'minBound', respectively, the result will be 'Nothing'.
    to
    A 'Discrete' type is a set X with at least one element, along with two
    functions, @'succ' :: X -> 'Maybe' X@ and @'pred' :: X -> 'Maybe' X@,
    such that all inhabitants of the set X can be constructed given at least
    a single element of the set and these two functions. The following must hold:
    
    @'pred' '>=>' 'succ' '>=>' 'pred' = 'pred'@
    
    @'succ' '>=>' 'pred' '>=>' 'succ' = 'succ'@
    
    This means that 'Int' is a discrete type, because given any x :: 'Int', one
    can construct any other 'Int' with the following functions:
    
    @'succ' x = if x '==' 'maxBound' then 'Nothing' else 'Just' (x '+' 1)@
    
    @'pred' x = if x '==' 'minBound' then 'Nothing' else 'Just' (x '-' 1)@
    
    This also means that something like 'Double' is /not/ a discrete type, because
    there are no such functions 'succ' and 'pred' that given any value of type 'Double'
    can allow the construction of all values of type 'Double'.
    
    'Discrete' acts as a replacement for 'GHC.Enum.Enum'. The motivation for
    'Discrete' is two-fold: firstly, totality of all typeclass instances, and
    secondly, that 'GHC.Enum.Enum' is a typeclass that does too many things,
    and does them poorly. If 'succ' or 'pred' are called on 'maxBound'
    or 'minBound', respectively, the result will be 'Nothing'.

-r0 (discrete-0.1.0.0-r0) 2018-09-17T17:24:12Z chessai c0682898a7755efeeaf5bcbde0585c8c921698106f9078cada204d6606de8178