8.24 Bit String Comprehensions

Bit string comprehensions are analogous to List Comprehensions. They are used to generate bit strings efficiently and succinctly.

Bit string comprehensions are written with the following syntax:

  1. << BitStringExpr || Qualifier1,...,QualifierN >>

BitStringExpr is an expression that evalutes to a bit string. If BitStringExpr is a function call, it must be enclosed in parentheses. Each Qualifier is either a generator, a bit string generator or a filter.

  • A generator is written as: Pattern <- ListExpr. ListExpr must be an expression that evaluates to a list of terms.
  • A bit string generator is written as: BitstringPattern <= BitStringExpr. BitStringExpr must be an expression that evaluates to a bitstring.
  • A filter is an expression that evaluates to true or false.The variables in the generator patterns, shadow variables in the function clause, surrounding the bit string comprehensions.

A bit string comprehension returns a bit string, which is created by concatenating the results of evaluating BitString for each combination of bit string generator elements, for which all filters are true.

Example:

  1. 1> << << (X*2) >> ||
  2. <<X>> <= << 1,2,3 >> >>.
  3. <<2,4,6>>

More examples are provided in Programming Examples.