Module

# Data.Lazy

Package
purescript-lazy
Repository
purescript/purescript-lazy

### #LazySource

``data Lazy :: Type -> Type``

`Lazy a` represents lazily-computed values of type `a`.

A lazy value is computed at most once - the result is saved after the first computation, and subsequent attempts to read the value simply return the saved value.

`Lazy` values can be created with `defer`, or by using the provided type class instances.

`Lazy` values can be evaluated by using the `force` function.

#### Instances

• `(Semiring a) => Semiring (Lazy a)`
• `(Ring a) => Ring (Lazy a)`
• `(CommutativeRing a) => CommutativeRing (Lazy a)`
• `(EuclideanRing a) => EuclideanRing (Lazy a)`
• `(Field a) => Field (Lazy a)`
• `(Eq a) => Eq (Lazy a)`
• `(Ord a) => Ord (Lazy a)`
• `(Bounded a) => Bounded (Lazy a)`
• `(Semigroup a) => Semigroup (Lazy a)`
• `(Monoid a) => Monoid (Lazy a)`
• `(HeytingAlgebra a) => HeytingAlgebra (Lazy a)`
• `(BooleanAlgebra a) => BooleanAlgebra (Lazy a)`
• `Functor Lazy`
• `Invariant Lazy`
• `Apply Lazy`
• `Applicative Lazy`
• `Bind Lazy`
• `Monad Lazy`
• `Extend Lazy`
• `Comonad Lazy`
• `(Show a) => Show (Lazy a)`
• `Lazy (Lazy a)`

### #deferSource

``defer :: forall a. (Unit -> a) -> Lazy a``

Defer a computation, creating a `Lazy` value.

### #forceSource

``force :: forall a. Lazy a -> a``

Force evaluation of a `Lazy` value.

Modules
Data.Lazy