# Crate nock [−] [src]

Implementation of the Nock virtual machine.

The Nock spec:

``````A noun is an atom or a cell.
An atom is a natural number.
A cell is an ordered pair of nouns.

nock(a)          *a
[a b c]          [a [b c]]

?[a b]           0
?a               1
+[a b]           +[a b]
+a               1 + a
=[a a]           0
=[a b]           1
=a               =a

/[1 a]           a
/[2 a b]         a
/[3 a b]         b
/[(a + a) b]     /[2 /[a b]]
/[(a + a + 1) b] /[3 /[a b]]
/a               /a

*[a [b c] d]     [*[a b c] *[a d]]

*[a 0 b]         /[b a]
*[a 1 b]         b
*[a 2 b c]       *[*[a b] *[a c]]
*[a 3 b]         ?*[a b]
*[a 4 b]         +*[a b]
*[a 5 b]         =*[a b]

*[a 6 b c d]     *[a 2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b]
*[a 7 b c]       *[a 2 b 1 c]
*[a 8 b c]       *[a 7 [[7 [0 1] b] 0 1] c]
*[a 9 b c]       *[a 7 c 2 [0 1] 0 b]
*[a 10 [b c] d]  *[a 8 c 7 [0 3] d]
*[a 10 b c]      *[a c]

*a               *a
``````

## Structs

 NockError Noun A Nock noun, the basic unit of representation. ParseError

## Enums

 Shape A wrapper for referencing Noun-like patterns.

## Traits

 DigitSlice Types that can be interpreted as arbitrary-length little-endian base-256 integers. FromDigits Types that can be constructed from base-256 integers. FromNoun A trait for types that can be instantiated from a Nock noun. Nock Interface for a virtual machine for Nock code. ToNoun Trait for types that can convert themselves to a noun.

## Functions

 get_axis Evaluate nock `/[axis subject]` msb Return the bit position of the most significant bit.

## Type Definitions

 NockResult NounShape