general {
    funcon-term: 
      initialise-giving
      initialise-binding
      sequential(
        check-true is-equal(
          match-loosely([],[]), map()),
        check-true is-equal(
          match-loosely([false],[pattern-bind"b"]), 
          {"b"|->false}),
        check-true is-equal(
          match-loosely([false,true],[pattern-bind"a",pattern-bind"b"]), 
          {"a"|->false,"b"|->true}),
        check-true is-equal(
          match-loosely({"a"|->false},map()), map()),
        check-true is-equal(
          match-loosely({"a"|->false,"b"|->true},{"b"|->pattern-bind"d"}), 
          {"d"|->true}),
        check-true is-equal(
          match-loosely(true,true), map()),
        else(
          effect match-loosely([],[false]),
          effect match-loosely([false],[false,false]), 
          effect match-loosely([false,true],[pattern-bind"a",pattern-bind"a"]), 
          effect match-loosely(map(),{"a"|->true}),
          effect match-loosely({"a"|->true},{"a"|->false}),
          effect match-loosely({"b"|->true},{"b"|->pattern-any,"c"|->pattern-any}), 
          effect match-loosely(false,true),
          print"OK"))
        ;
}

tests {
    result-term: null-value;
    standard-out: ["OK"];
}
