An abstract algebraic structure is something that is fully defined by a set of laws. Abstract algebraic structures have their roots in category theory, a branch of mathematics dedicated to studying them.
The "abstractness" of the topic has two consequences for us. First, we need to get into a specific state of mind and talk about things in general as opposed to the concrete implementations that we were discussing up until now. Second, the structures we'll be looking at, the semigroup, monoid, group, and foldable, are applicable to a wide spectrum of cases, and each case can lead to the implementation of the abstract concept at hand. If this sounds too theoretical, don't worry; we'll get practical in a moment with Semigroup.