Re: No and yes [Was: HTML-only calculator?]
Maybe a sensible definition of what is a programming language or not is whether it is Turing complete.
Turing-completeness is certainly often appealed to when attempting to define "programming language" (or at least when arguing over whether some specific language is or isn't one). And it might be sensible to look to it if you want a formal definition of a programming language.
Many people, however, will be far more interested in practical arguments for whether some language should be considered a programming language. And a great many things are Turing-complete without even vaguely resembling programming languages.
Untyped lambda calculus is Turing-complete. Now, to some, ULC might look something like a bare-bones functional programming language, but it's not what most practicing programmers would consider a practical example of one.
The esoteric language Unlambda has no lambda (abstraction) operator; it makes do with the S and K combinators. That's a very alien sort of programming language. But it's Turing-complete.
XSLT is Turing-complete. The video game Dwarf Fortress is Turing-complete. Rule 110 is Turing-complete: a TC machine which can be specified in its entirety by a couple of sentences and the decimal number 110.
If it does not allow you to write loops, I doubt it is.
You doubt it is Turing-complete, or you doubt it's a programming language?
"Write loops" is under-specified. Many TC languages provide "loops" solely by recursion. YAML has a reference mechanism; I haven't looked to see if circular references are specifically disallowed, but if not that's a trivial recursion mechanism. And for that matter YAML may well have a simpler iteration mechanism - I've never looked at the YAML spec.
Minimally, I believe you can't have a TC language if it doesn't offer an unbounded iteration mechanism of some sort. That might appear as primitive abstraction and application operations (e.g. lambda calculus) or a simple conditional branch (e.g. subtract-and-branch-if-zero) or perhaps something else. But yes, you could lump those all into "some way to write loops", provided your understanding of "loop" is sufficiently broad.