zeromq3-haskell-0.3.1: Bindings to ZeroMQ 3.x

Portabilitynon-portable
Stabilityexperimental
MaintainerToralf Wittner <tw@dtex.org>
Safe HaskellSafe-Inferred

Data.Restricted

Description

Type-level restricted data. This module allows for type declarations which embed certain restrictions, such as value bounds. E.g. Restricted N0 N1 Int denotes an Int which can only have values [0 .. 1]. When creating such a value, the constructor functions restrict or toRestricted ensure that the restrictions are obeyed. Code that consumes restricted types does not need to check the constraints.

N.B. This module is more or less tailored to be used within ZMQ3. Therefore the provided type level restrictions are limited.

Synopsis

Documentation

data Restricted l u v

Type level restriction.

Instances

Show v => Show (Restricted l u v) 

class Restriction l u v where

A uniform way to restrict values.

Methods

toRestricted :: v -> Maybe (Restricted l u v)

Create a restricted value. Returns Nothing if the given value does not satisfy all restrictions.

restrict :: v -> Restricted l u v

Create a restricted value. If the given value does not satisfy the restrictions, a modified variant is used instead, e.g. if an integer is larger than the upper bound, the upper bound value is used.

rvalue :: Restricted l u v -> v

Get the actual value.

data Nneg1

type level -1

data N0

type-level 0

data N254

type-level 254

data Inf

type-level infinity