Under declarative memory resides semantic and episodic memory. Imperative sentences sometimes use different syntax than declarative or other types of clauses. This order governs both declarative and interrogative statements. The hippocampal areas are important to semantic memory's involvement with declarative memory. Turing completeness in declarative SQL is implemented through recursive common table expressions. The counterpart to declarative or explicit memory is nondeclarative memory or implicit memory. However, optional plugins allow users to develop using declarative syntax. Mercury is a purely declarative logic programming language. PSDL addresses these issues by introducing control abstractions that include declarative timing constraints. Functional programming is a subset of declarative programming. Procedural programming could be considered a step toward declarative programming. Data manipulation languages are divided into two types, procedural programming and declarative programming. Two broad categories of declarative languages are functional languages and logical languages. The makefile language is similar to declarative programming. This makes Datalog a fully declarative language.