fn reference_type_for_partially_bound_statements(statements: &CellRef) -> ReferenceType {
    let mut pos = statements;

    while let SafasCell::List(statement, next) = &**pos {
        // The whole set of statements should be treated as a monad if any one of them is
        if statement.reference_type() == ReferenceType::Monad {
            return ReferenceType::Monad;
        }

        pos = next;
    }

    ReferenceType::Value
}
///
/// Given a partially-bound set of statements, returns if they'll return a monad or a value
/// 
/// We never return ReturnsMonad for a custom syntax, so syntaxes that generate a function can't use
/// this form at the moment: a possible future enhancement might be to return this instead of value
/// if the last statement evaluates this way
///
Given a partially-bound set of statements, returns if they'll return a monad or a value
We never return ReturnsMonad for a custom syntax, so syntaxes that generate a function can't use
this form at the moment: a possible future enhancement might be to return this instead of value
if the last statement evaluates this way
Given a partially - bound set of statements returns if they ' ll return a monad or a value We never return ReturnsMonad for a custom syntax so syntaxes that generate a function can ' t use this form at the moment : a possible future enhancement might be to return this instead of value if the last statement evaluates this way
fn reference_type_for_partially_bound_statements(statements: &CellRef) -> ReferenceType {
    let mut pos = statements;
    while let SafasCell::List(statement, next) = &**pos {
        // The whole set of statements should be treated as a monad if any one of them is
        if statement.reference_type() == ReferenceType::Monad {
            return ReferenceType::Monad;
        }
        pos = next;
    }
    ReferenceType::Value
}
fn reference_type_for_partially_bound_statements ( statements : & CellRef ) -> ReferenceType { let mut pos = statements ; while let SafasCell :: List ( statement , next ) = & * * pos { // The whole set of statements should be treated as a monad if any one of them is if statement . reference_type ( ) == ReferenceType :: Monad { return ReferenceType :: Monad ; } pos = next ; } ReferenceType :: Value }
Given a partially-bound set of statements, returns if they'll return a monad or a value
We never return ReturnsMonad for a custom syntax, so syntaxes that generate a function can't use
this form at the moment: a possible future enhancement might be to return this instead of value
if the last statement evaluates this way
Given a partially - bound set of statements returns if they ' ll return a monad or a value We never return ReturnsMonad for a custom syntax so syntaxes that generate a function can ' t use this form at the moment : a possible future enhancement might be to return this instead of value if the last statement evaluates this way
statements
&CellRef
statements
&CellRef