The collectors Module

collecting Statement Macro

Collect values into a named or unnamed collector. A collector may be, for example, a <collection>, a number into which values are accumulated, etc.

Macro Call:

collecting ([name] [as type])
  [ body ]
end [ collecting ]

Parameters:
  • name – A Dylan variable-name BNF. If omitted, the collection is returned from the collecting macro call. If supplied, the caller is responsible for calling collected(name) to retrieve the collection before the call to collecting terminates.

  • type – A Dylan type. The default value is <list>.

  • body – A Dylan body BNF.

Discussion:

Binds name (or a default variable name if name is not supplied) to a collector that can efficiently collect new values into the collection when collect or the related collect-* macros are called.

Example:
collecting () collect(1); collect(2) end;
// => #(1, 2)

collecting () collect(1); collect-first(2) end;
// => #(2, 1)

collecting (as <integer>) collect(1); collect(2) end;
// => 3

collecting (a, b, c)
  collect-into(a, 1);
  collect-into(b, 2);
  collect-into(c, 3);
  values(collected(a), collected(b), collected(c))
end;
// => #(1), #(2), #(3)
collect Macro
Discussion:

Collect a value at the end of the unnamed collector: collect(100) May only be used when collecting () ... end was called with no arguments.

See also:

collecting

collect-first Macro
Discussion:

Collect a value at the beginning of the unnamed collector: collect-first(100) May only be used when collecting () ... end was called with no arguments.

See also:

collecting

collect-last Macro
Discussion:

Collect a value at the end of the unnamed collector: collect-last(100) May only be used when collecting () ... end was called with no arguments.

See also:

collecting

collect-into Macro
Discussion:

Collect a value at the end of a named collector: collect-into(c, 100) May only be used when collecting (c) ... end was called with arguments.

See also:

collecting

collect-first-into Macro
Discussion:

Collect a value at the beginning of a named collector: collect-first-into(c, 100) May only be used when collecting (c) ... end was called with arguments.

See also:

collecting

collect-last-into Macro
Discussion:

Collect a value at the end of a named collector: collect-last-into(c, 100) May only be used when collecting (c) ... end was called with arguments.

See also:

collecting

collected Macro
Discussion:

Retrieve the value of the collection associated with a collector.

Example:
collecting () ...; do(f, collected()); ... end

collecting (a, b) ...; do(f1, collected(a)); do(f2, collected(b)); ... end
See also:

collecting

collector-protocol Open Generic function
Signature:

collector-protocol class => new-collector add-first add-last add-sequence-first add-sequence-last collection

Parameters:
Values:
  • new-collector – An instance of <object>.

  • add-first – A <function> that accepts the collection and a value and adds the value to the beginning of the collection.

  • add-last – A <function> that accepts the collection and a value and adds the value to the end of the collection.

  • add-sequence-first – An instance of <function>. Not yet implemented.

  • add-sequence-last – An instance of <function>. Not yet implemented.

  • collection – A <function> that receives the collector and returns the collection.

See also:

collecting