union Option {
    Some { value: Int }
    None
}

: is-some? ( Option -- Bool )
    match
        Some { >value } -> drop true
        None -> false
    end
;

: is-none? ( Option -- Bool )
    match
        Some { >value } -> drop false
        None -> true
    end
;

: test-some ( -- )
    100 Make-Some is-some?
    test.assert
;

: test-none ( -- )
    Make-None is-none?
    test.assert
;

: test-some-not-none ( -- )
    42 Make-Some is-none?
    not test.assert
;
