You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: pass.rs
    path of file: ./repos/gluon/check/tests
    
    the code of the file until where you have to start completion: #[macro_use]
extern crate pretty_assertions;
#[macro_use]
extern crate collect_mac;

extern crate gluo
    
fn partial_function_unify() {
    let _ = env_logger::try_init();

    let text = r"
type Monad m = {
    (>>=) : m a -> (a -> m b) -> m b,
    return : a -> m a
} in
type State s a = s -> { value: a, state: s }
in
#[infix(left, 1)]
let (>>=) m f: State s a -> (a -> State s b) -> State s b =
    \state ->
        let { value, state } = m state
        let m2 = f value
        in m2 state
in
let return value: a -> State s a = \state -> { value, state }
in
let monad_State: Monad (State s) = { (>>=), return }
in { monad_State }
";
    let result = support::typecheck(text);

    assert_pass!(result);
}