Data structured languages are those in which the data structure is a main organizing principle, knowledge representation, model, for data and logic (code, programs) alike, in which both are stored and operated on, i.e., program data and logic are structured and operated on in the same way. They are generally well suited to reflection and introspection, and are generally more consistent in some ways, than many other languages. This makes them easier to learn, and to program in for the set of problems which naturally fits, maps to, that language's data structure, the type of data representation on which the language is based. Where this occurs, some types of programming, or programming some types of problems, becomes simpler, even trivial. For the set of problems which do not naturally fit a language's data structure, programming may be no easier than in other languages. For the set of problems which naturally conflict with a language's data structure, programming may be harder than in other languages. In programs written in some data structured languages, when an instance occurs of the data representation on which the language is based, then such instance is treated as a special case of quoted program. A similar concept based on consistency exists in some object-oriented languages, called "pure", which use a consistent object model: everything in them is treated uniformly as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. Three main classes of data structured languages exist, determined by the type of data structure on which they are based. Array-based: APL, J. List-based: Arc, Joy, Lisp (Logo, Scheme), Dylan, Tcl, TRAC. Stack-based (open stacks): Forth, Poplog, PostScript. Some languages can statically link data inline with instructions. These can be considered data structured, in the most basic, primitive way. Some Assembly languages can do this. On this page, languages are arranged in three groups and levels: 1) Top: unrelated types or classes of languages. 2) Middle: related types or classes of languages. 3) Bottom: specific languages, with their own directory category.