1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#[macro_export]
macro_rules! deferred {
    ( $s:expr, [$($v:expr),*] ) => {
        crate::Deferred::new($s, vec![$($v,)*])
    };
    ( $s:expr ) => {
        crate::Deferred::new($s, vec![])
    };
}

#[macro_export]
macro_rules! state {
    ( $s:expr ) => {
        crate::Context::State($s)
    };
}

#[macro_export]
macro_rules! subdeferred {
    ( $s:expr, [$($v:expr),*] ) => {
        crate::Context::Deferred(Box::new(crate::Deferred::new($s, vec![$($v,)*])))
    };
    ( $s:expr ) => {
        crate::Context::Deferred(Box::new(crate::Deferred::new($s, vec![])))
    };
}

#[macro_export]
macro_rules! value {
    ( $v:expr ) => {
        crate::value::Value::new(Box::new($v))
    };
}