• this is using AsTMa! patterns
  • always 'all-quantified', i.e. patterns are applied as many times as possible
  • this means we implicitely generate a sequence of these matches
    forall [ $d is-a document ]
  • constraint based loop
  • every match makes all variables mentioned in the pattern be bound to a value
  • structural variables are bound to 'items', i.e. (c)maplets
  • string variables are bound to ... strings
  • variables for simple things $a are bound only to one value at a time
    forall $a [ * is-a document ] ...
  • variables for list things @s are bound to all values in the match
    forall @a [ * is-a document ]