# FreeMonoid< A > Struct Template Reference
[Algebra, Freemonoid]

Implementation of a free monoid which aggregates its alphabet. More...

Inheritance diagram for FreeMonoid< A >:
[legend]

List of all members.

## Public Types

typedef virtual_types < FreeMonoid< A > >::alphabet_t | alphabet_t
| The type of the alphabet A.
typedef alphabet_t::letter_t | letter_t
| The type of letter hold by the alphabet.
typedef FreeMonoid< A > | self_t
| Exact type of the most derived type in the hierarchy.

## Public Member Functions

| FreeMonoid (const A &a)
| Constructor based on an alphabet, with an adaptative monoid representation.
| FreeMonoid (const A &a, monoid_rep_t mr)
| Constructor based on an alphabet, with a constraint monoid representation.
| FreeMonoid (const FreeMonoid &w)
| Copy constructor (preserve the monoid representation).
const shared_monoid_rep_t | representation () const
| Representation's accessor.
A & | alphabet ()
| Alphabet's accessor.
const A & | alphabet () const
| Alphabet's accessor.
void | set_representation (monoid_rep_t mr)
| This function is here for xml that doesn't know the representation when constructing the monoid.
Element< FreeMonoid< A >, T > | identity (SELECTOR(T)) const
| Returns the identity of the monoid (if mul_kind).
Element< FreeMonoid< A >, T > | zero (SELECTOR(T)) const
| Returns the zero of the monoid (if add_kind).
bool | contains (const Element< FreeMonoid< A >, T > &elt) const
| Check if a given element is compatible with the structural element.
bool | contains (const Element< OtherS, T > &other) const
| Specialization of `contains` that always returns false.
bool | contains (const T &elt_value) const
| Check if an anonymous value is compatible with a structural element.
Element< FreeMonoid< A >, T > | choose (SELECTOR(T)) const
| Choose randomly an element in the structure.
self_t & | self ()
| Accessor to the real type.
const self_t & | self () const
| Accessor to the real type.

## Detailed Description

### template<typename A>
struct vcsn::algebra::FreeMonoid< A >

Implementation of a free monoid which aggregates its alphabet.

Definition at line 40 of file free_monoid.hh.

## Constructor & Destructor Documentation

FreeMonoid | ( | const A & | a | ) |

Constructor based on an alphabet, with an adaptative monoid representation.

Definition at line 31 of file free_monoid.hxx.

FreeMonoid | ( | const A & | a,
|  | monoid_rep_t | mr |
| ) |  |  |

Constructor based on an alphabet, with a constraint monoid representation.

## Member Function Documentation

A & alphabet | ( |  | ) |

Alphabet's accessor.

Bug:
  FIXME: this interface should not exist (s.e. are const once instantiated)

Reimplemented from FreeMonoidBase< FreeMonoid< A > >.

Definition at line 68 of file free_monoid.hxx.

bool contains | ( | const Element< OtherS, T > & | other | ) | const`[inherited]`

Specialization of `contains` that always returns false.

Indeed, elements structured by a particular type are always incompatible with structural elements of another type.

self_t& self | ( |  | ) | `[inherited]`

Accessor to the real type.

To be used by implementations in this class and derived structures to obtain a reference to the structural element with its most derived type.

const self_t& self | ( |  | ) | const`[inherited]`

Accessor to the real type.

To be used by implementations in this class and derived structures to obtain a reference to the structural element with its most derived type.