Language classification
Certified language nerds only beyond this point, and I will be checking your references! Also, please keep me honest in correctly categorizing the language. The focus is on usefulness more than advancing PLDI, but I'm open to criticism, suggestions, and crazy ideas.
The dt
language is in the concatenative language
family. That means it's a functional programming language (functions are
first-class, values have immutable semantics) with a concatenative
style rather than the traditional applicative style.
The dt
language has an imperative feel in the sense that all "functions"
are linguistically imperative "commands." There is no distinguishing from pure
and impure logic; side-effects are allowed and not managed.
For the adept: The language is point-free with opt-in bindings. Everything is evaluated in strict left-to-right sequence, and all operations can have arbitrary arity both in and out, including runtime-dynamic arity. Typing is dynamic, and the language is homoiconic.
It's inspired by many other tools and languages like Unix-style pipes and
shells, awk
, Forth, Joy, Factor, Haskell, ML, Lisps, Lua, Tcl, Ruby, and
Perl. dt
does not intended to be better or replace any of these, they're all
fantastic and have their place! It's simply meant to be a best tool for
different kinds of jobs.
Linguistically, dt
command definitions follow a convention of using
subject-object-verb (SOV)
grammatical order similar to Japanese, Korean, or Latin. (But with much more
context elision, even more than Japanese!)
See also: