The Racket Programming Language
Previously known as Scheme, Racket (https://racket-lang.org/) belongs to the LISP family of programming languages. Seen from a non-programmer’s perspective, Racket’s syntax is simple and consistent. If you think about a language as a tool in order to communicate your thoughts, you would naturally think that first and foremost it needs verbs and nouns. In this way, the first thing to learn about Racket is its functional verbs and their arguments (i.e. nouns).
> (do laundry)
> (wash 10-clothes)
> (+ 1 2)
> (+ (- 4 5) (* 2 1))
(+ 1 2) is an expression, just like the expression "do laundry". And you may notice its structure: it starts with a verb, followed by objects (nouns) that will be put under the action of the verb.
Another philosophy of the functional programming paradigm in general is that you need to separate two things: symbol and value. Value (semantic information, or meaning) does not materially exist: a vision inside an artist's mind may be vibrant but it remains a mere vision. Without the equipment to read their mind directly, they have to write down their vision in languages (the languages of mathematics, music, painting, etc.). In other words, they have to express their idea into symbols. Fortunately, we live in a universe that makes it possible to write down information (the value) in symbols (see more on this discussion in this video). We develop writing as a tool to archive, transport, and refer to information for the sake of accumulating knowledge.
In this fashion, a Racket function will always input and return a value. A symbol that does not hold a value (i.e. it has not yet been assigned a value) will be denied processing. Racket will throw an exception (i.e. an error), as it would claim you to be guilty of breaking a contract with Racket. Racket will help your logical thinking, because once entering Racket, you implicitly sign many contracts of consistency.
The third key aspect of Racket is that it is a language of languages. It can be used to develop more specific languages. This is the philosophy of its creator. The analog that is used by Mathias Fellensen is that there is a common English we all speak, but different experts (with different domain specific knowledge) speak different specialized versions of English. For example, a physicist speaks a variant of English that is sufficiently different from a social scientist. This philosophy is indeed reflected in the annual RacketCon. In the conference, you may find a poet describing his Racket program for writing haikus, a lawyer, a theater worker, a student, etc; the common ground is that they speak about the program they create with love. In this way, Racket is not just a programming language, it is a tool to help you think consistently and recursively.
Are you sure you don't want to upload any files?
Fast tutor response requires as much info as possible.