yap-examples-0.1: examples of the algebraic classes in the yap package
Copyright(c) Ross Paterson 2021
LicenseBSD-style (see the file LICENSE)
MaintainerR.Paterson@city.ac.uk
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.YAP.Peano

Description

An example instance of the algebraic classes: lazy Peano numerals.

Synopsis

Documentation

data Peano Source #

Lazy Peano numerals: a unary representation of the natural numbers, which is very inefficient, but does offer lazy semantics.

Constructors

Zero 
Succ Peano 

Instances

Instances details
Read Peano Source # 
Instance details

Defined in Data.YAP.Peano

Show Peano Source # 
Instance details

Defined in Data.YAP.Peano

Methods

showsPrec :: Int -> Peano -> ShowS #

show :: Peano -> String #

showList :: [Peano] -> ShowS #

Eq Peano Source # 
Instance details

Defined in Data.YAP.Peano

Methods

(==) :: Peano -> Peano -> Bool #

(/=) :: Peano -> Peano -> Bool #

Ord Peano Source # 
Instance details

Defined in Data.YAP.Peano

Methods

compare :: Peano -> Peano -> Ordering #

(<) :: Peano -> Peano -> Bool #

(<=) :: Peano -> Peano -> Bool #

(>) :: Peano -> Peano -> Bool #

(>=) :: Peano -> Peano -> Bool #

max :: Peano -> Peano -> Peano #

min :: Peano -> Peano -> Peano #

AdditiveMonoid Peano Source #

(+) is lazy in the second argument

Instance details

Defined in Data.YAP.Peano

Methods

(+) :: Peano -> Peano -> Peano #

zero :: Peano #

atimes :: ToInteger b => b -> Peano -> Peano #

Euclidean Peano Source # 
Instance details

Defined in Data.YAP.Peano

Semiring Peano Source # 
Instance details

Defined in Data.YAP.Peano

StandardAssociate Peano Source #

The only unit is one. stdAssociate is the identity.

Instance details

Defined in Data.YAP.Peano

ToInteger Peano Source # 
Instance details

Defined in Data.YAP.Peano

Methods

toInteger :: Peano -> Integer #

ToRational Peano Source # 
Instance details

Defined in Data.YAP.Peano

Methods

toRational :: Peano -> Rational #

peano :: a -> (a -> a) -> Peano -> a Source #

Eliminator for Peano numerals: peano z s replaces Zero with z and Succ with s.

maybeMinus :: Peano -> Peano -> Maybe Peano Source #

Partial subtraction