:- use_module(library(jolog)).

:- use_module(library(tap)).

% simplest possible join clause: one pattern, no guards, trivial process
jolog:parse_join_clause(
    (
        pattern_only &- true
    ),
    [pattern_only],
    [],
    [true]
).

% typical join clause with some of everything
jolog:parse_join_clause(
    (
        foo, bar(X) &-
            guard_one,
            guard_two(X),
            then,
            (   process_one(X)
            &   process_two
            )
    ),
    [foo,bar(X)],
    [guard_one, guard_two(X)],
    [process_one(X), process_two]
).

% join clause with guards but no processes
jolog:parse_join_clause(
    (
        channel &- guard_me, then
    ),
    [channel],
    [guard_me],
    []
).
