lens-4.19.2: Lenses, Folds and Traversals

Copyright (C) 2017 Edward Kmett BSD-style (see the file LICENSE) Edward Kmett provisional portable None Haskell2010

Numeric.Natural.Lens

Description

Useful tools for Gödel numbering.

Synopsis

# Documentation

The natural numbers are isomorphic to the product of the natural numbers with itself.

N = N*N

The natural numbers are isomorphic to disjoint sums of natural numbers embedded as evens or odds.

N = 2*N

The natural numbers are isomorphic to lists of natural numbers

pattern Pair :: Natural -> Natural -> Natural Source #

interleaves the bits of two natural numbers

pattern Sum :: Either Natural Natural -> Natural Source #

Sum (Left q) = 2*q
Sum (Right q) = 2*q+1


pattern Naturals :: [Natural] -> Natural Source #

Naturals [] = 0
Naturals (h:t) = 1 + Pair h (Naturals t)