[][src]Trait sonata::Cons

pub trait Cons<A, D> {
    fn car(self) -> A;
fn cdr(self) -> D; }

Cons - ((A)ddress . (D)ecrement)

(1 2 3) means -> (cons 1 (cons 2 (cons 3 nil)))

Example

use sonata::stcc::Cons;
 
fn test_cons() {
    let stream = b"(: > !)";
    assert_eq!(b": > !", stream.car());          // [0]
    assert_eq!(b":", stream.car().car());        // [0, 0]
    assert_eq!(b"> !", stream.car().cdr());      // [0, 1]
    assert_eq!(b">", stream.car().cdr().car());  // [0, 1, 0]
    assert_eq!(b"!", stream.car().cdr().cdr());  // [0, 1, 1]
    // ...
}

Required methods

fn car(self) -> A

fn cdr(self) -> D

Loading content...

Implementors

impl ConsTrait<&'static [u8], &'static [u8]> for &'static [u8][src]

impl<A, D> ConsTrait<A, D> for (A, D)[src]

Loading content...