cairo-native 0.9.0-rc.4

A compiler to convert Cairo's IR Sierra code to MLIR and execute it.
#[derive(Drop, Copy, PartialEq)]
enum ArrayItem {
    Span: Span<u8>,
    Recursive: Span<ArrayItem>
}

fn recursion(input: Span<u8>) -> Span<ArrayItem> {
    let mut output: Array<ArrayItem> = Default::default();

    let index = (*input.at(0));
    if index < 5 {
        output.append(ArrayItem::Span(input));
    } else {
        let res = recursion(input.slice(1, input.len() - 1));
        output.append(ArrayItem::Recursive(res));
    }

    return output.span();
}

fn run_test() -> Span<ArrayItem> {
    let arr = array![10, 9, 8, 7, 6, 4];
    recursion(arr.span())
}