general {
    funcon-term: 
      initialise-giving
      initialise-binding
      sequential(
        check-true is-equal(match(false,pattern-type booleans), map()),
        check-true is-equal(match([42],pattern-type lists(integers)), map()),
        check-true is-equal(match(abstraction null-value,pattern-type abstractions(values=>values)), map()),
        check-true is-equal(match(list(true),pattern-type lists(booleans)), map()),
        check-true is-equal(match(tuple(42,true),pattern-type tuples(integers,booleans)), map()),
        effect else(
          match(true,pattern-type integers),
          match([42],pattern-type lists(booleans)),
          match(abstraction null-value,pattern-type atoms),
          match(list(true),pattern-type lists(integers)),
          match(tuple(42,true),pattern-type tuples(booleans,integers)),
          print"OK"))
        ;
}

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