# Keywords for the Wolfram Language [closed]

For a programming language, certain keywords are reserved; i.e., these tokens can't be used in any other context while programming in that particular language.

Here is a list of C language keywords with some exciting C23 additions coming up.

The name Wolfram Language suggests that it is a language. Can someone please post a link to the keywords for the Wolfram language? I have searched this forum and the docs and I can't find this information.

Can it be called a language, if it doesn't have keywords? For instance, If I can Unprotect[Goto] then that can't be a keyword (or at least that is my understanding). Can someone (ever, sufficiently, convincingly) claim to have learned a language whose keywords are not defined?

On a side note, why is the "wolfram-language" tag not present?

• Are you referring to the symbols defined by the system? Aug 26 '21 at 4:10
• By system, do you mean 'Mathematica'?
– Syed
Aug 26 '21 at 11:09
• You can call it a language because it has keywords... and these keywords can be changed. Aug 26 '21 at 17:00
• At its core, WL is a term rewriting system. Perhaps you are looking for a list of input operator forms? Aug 26 '21 at 17:22
• Also see this. Aug 26 '21 at 17:26

The list of "keywords" in Wolfram Language can only really refer to the list of all of the defined symbols, which you can get by evaluating ?*.

I think this is a somewhat narrow view of the implementation of programming languages. Not all languages have keywords in the sense that C-type languages do, and it's also important to define exactly what you mean by "keywords". An example could be Lisp, which, like Mathematica, doesn't have any reserved words, but defined symbols which can be redefined, and in some cases forms that have special treatment within the interpreter - but the interpreter itself can be modified by the user as well. Other languages worth looking at are things like APL (and other Array Programming languages), Forth, TCL, Smalltalk.

Can it be called a language, if it doesn't have keywords? For instance, If I can Unprotect[Goto] then that can't be a keyword (or at least that is my understanding). Can someone (ever, sufficiently, convincingly) claim to have learned a language whose keywords are not defined?

I think this part of the question is out of scope for this site, but I've written the following now anyway, so:

Consider a normal spoken language like English. Words change meaning - for example, "awesome", which used to mean "terrifying" (Unprotect[Awesome]; Awesome := "terrifying"). There are many, many people who have learned English who may not know what the word "affine" means, for instance, but if they needed to know what it meant, they might look it up in a dictionary. In my opinion, it is essentially the same thing with Wolfram Language - I know how most of the symbols I normally use work, and if I am learning about a new area, I will read the documentation about the symbols defined in that area.

• If ?* is the list of "keywords" for WL then it is nearly identical to Mathematica and Mathematica is not a language. If it were, another one wouldn't be needed. Thanks for the response.
– Syed
Aug 26 '21 at 19:09
• I think you may be confused about the distinction between WL and Mathematica (it's certainly a muddy distinction). WL is the programming language used within the Mathematica package, and is also used by Wolfram Alpha, the wolframscript interpreter, Wolfram Desktop, Wolfram Finance Platform, and presumably others. Each of those interpreters might have slightly different sets of defined symbols. Note that the language was only given a name in 2013, and prior to that, Mathematica was used as the name for the language as well as the Mathematica package. Aug 26 '21 at 19:48
• So WL has no keywords (or no listing of them in one place and no use for them) and yet has ~8000 keywords on Mma alone that morph as needed in space and over time. Not only that, WL morphs from product to product and perhaps from platform to platform. Interesting. And my post has been closed due to the lack of focus and perhaps "confusion" on my part?
– Syed
Aug 27 '21 at 9:52
• You'll note that I and other users have done our best to help you out here. I didn't vote for your question to be closed, although "Can someone claim to have learned a language whose keywords are not defined" is surely out of scope for a Mathematica-specific site. Rohit's responses in the comments and my answer should hopefully be enough to show you that your preconceptions may not apply neatly to WL. I'm not sure that I can help you further but I hope you find an understanding that works for you. Aug 27 '21 at 10:42
• @Syed Most programming languages have a core that has a specification defining syntax, reserved words, basic constructs, etc., and libraries/packages that implement additional functionality e.g. Python numpy. In WL the distinction is not well defined. It is also homoiconic so there is no distinction between code and data. Everything input and every output is an expression and an expression is either an atom or of the form h[exp1, exp2, ... expn] (normal expression) where h is the head and the exp are either atoms or normal expressions. The head can be an atom or a normal expression. Aug 28 '21 at 20:00