Since an alternative statement succeeds if one of its alternatives succeeds, it can be used to express disjunction ( or connection), whereas the members of a statement sequence express conjunction ( and connection). Alternative statements can be nested. For example,
'rule' HandleType (Type): (| (| where(Type -> array(N, T)) || where(Type -> record(List) |) HandleStructuredType(Type) || HandleSimpleType(Type) |)HandleStructuredType is invoked if Type matches array(N,T) or record(List). Otherwise HandleSimpleType is invoked.