summaryrefslogtreecommitdiffhomepage
path: root/red.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'red.html.markdown')
-rw-r--r--red.html.markdown88
1 files changed, 44 insertions, 44 deletions
diff --git a/red.html.markdown b/red.html.markdown
index f33060c4..05da3c3f 100644
--- a/red.html.markdown
+++ b/red.html.markdown
@@ -8,31 +8,31 @@ contributors:
---
-Red was created out of the need to get work done, and the tool the author wanted to use, the language of REBOL, had a couple of drawbacks.
+Red was created out of the need to get work done, and the tool the author wanted to use, the language of REBOL, had a couple of drawbacks.
It was not Open Sourced at that time and it is an interpreted language, what means that it is on average slow compared to a compiled language.
Red, together with its C-level dialect Red/System, provides a language that covers the entire programming space you ever need to program something in.
-Red is a language heavily based on the language of REBOL. Where Red itself reproduces the flexibility of the REBOL language, the underlying language Red will be built upon,
-Red/System, covers the more basic needs of programming like C can, being closer to the metal.
+Red is a language heavily based on the language of REBOL. Where Red itself reproduces the flexibility of the REBOL language, the underlying language Red will be built upon,
+Red/System, covers the more basic needs of programming like C can, being closer to the metal.
-Red will be the world's first Full Stack Programming Language. This means that it will be an effective tool to do (almost) any programming task on every level
-from the metal to the meta without the aid of other stack tools.
-Furthermore Red will be able to cross-compile Red source code without using any GCC like toolchain
+Red will be the world's first Full Stack Programming Language. This means that it will be an effective tool to do (almost) any programming task on every level
+from the metal to the meta without the aid of other stack tools.
+Furthermore Red will be able to cross-compile Red source code without using any GCC like toolchain
from any platform to any other platform. And it will do this all from a binary executable that is supposed to stay under 1 MB.
Ready to learn your first Red?
```
-All text before the header will be treated as comment, as long as you avoid using the
-word "red" starting with a capital "R" in this pre-header text. This is a temporary
-shortcoming of the used lexer but most of the time you start your script or program
-with the header itself.
-The header of a red script is the capitalized word "red" followed by a
+All text before the header will be treated as comment, as long as you avoid using the
+word "red" starting with a capital "R" in this pre-header text. This is a temporary
+shortcoming of the used lexer but most of the time you start your script or program
+with the header itself.
+The header of a red script is the capitalized word "red" followed by a
whitespace character followed by a block of square brackets [].
-The block of brackets can be filled with useful information about this script or
+The block of brackets can be filled with useful information about this script or
program: the author's name, the filename, the version, the license, a summary of
what the program does or any other files it needs.
-The red/System header is just like the red header, only saying "red/System" and
+The red/System header is just like the red header, only saying "red/System" and
not "red".
Red []
@@ -49,21 +49,21 @@ comment {
; Your program's entry point is the first executable code that is found
; no need to restrict this to a 'main' function.
-; Valid variable names start with a letter and can contain numbers,
-; variables containing only capital A thru F and numbers and ending with 'h' are
-; forbidden, because that is how hexadecimal numbers are expressed in Red and
+; Valid variable names start with a letter and can contain numbers,
+; variables containing only capital A thru F and numbers and ending with 'h' are
+; forbidden, because that is how hexadecimal numbers are expressed in Red and
; Red/System.
; assign a value to a variable using a colon ":"
my-name: "Red"
-reason-for-using-the-colon: {Assigning values using the colon makes
- the equality sign "=" exclusively usable for comparisons purposes,
- exactly what "=" was intended for in the first place!
+reason-for-using-the-colon: {Assigning values using the colon makes
+ the equality sign "=" exclusively usable for comparisons purposes,
+ exactly what "=" was intended for in the first place!
Remember this y = x + 1 and x = 1 => y = 2 stuff from school?
}
is-this-name-valid?: true
-; print output using print, or prin for printing without a newline or linefeed at the
+; print output using print, or prin for printing without a newline or linefeed at the
; end of the printed text.
prin " My name is " print my-name
@@ -77,20 +77,20 @@ My name is Red
;
; Datatypes
;
-; If you know Rebol, you probably have noticed it has lots of datatypes. Red
-; does not have yet all those types, but as Red want to be close to Rebol it
+; If you know Rebol, you probably have noticed it has lots of datatypes. Red
+; does not have yet all those types, but as Red want to be close to Rebol it
; will have a lot of datatypes.
-; You can recognize types by the exclamation sign at the end. But beware
-; names ending with an exclamation sign are allowed.
-; Some of the available types are integer! string! block!
-
-; Declaring variables before using them?
-; Red knows by itself what variable is best to use for the data you want to use it
-; for.
-; A variable declaration is not always necessary.
+; You can recognize types by the exclamation sign at the end. But beware
+; names ending with an exclamation sign are allowed.
+; Some of the available types are integer! string! block!
+
+; Declaring variables before using them?
+; Red knows by itself what variable is best to use for the data you want to use it
+; for.
+; A variable declaration is not always necessary.
; It is considered good coding practise to declare your variables,
; but it is not forced upon you by Red.
-; You can declare a variable and specify its type. a variable's type determines its
+; You can declare a variable and specify its type. a variable's type determines its
; size in bytes.
; Variables of integer! type are usually 4 bytes or 32 bits
@@ -101,7 +101,7 @@ my-integer: 0
type? my-integer
integer!
-; A variable can be initialized using another variable that gets initialized
+; A variable can be initialized using another variable that gets initialized
; at the same time.
i2: 1 + i1: 1
@@ -111,9 +111,9 @@ i2 - i1 ; result 1
i2 * i1 ; result 2
i1 / i2 ; result 0 (0.5, but truncated towards 0)
-; Comparison operators are probably familiar, and unlike in other languages you
+; Comparison operators are probably familiar, and unlike in other languages you
; only need a single '=' sign for comparison.
-; There is a boolean like type in Red. It has values true and false, but also the
+; There is a boolean like type in Red. It has values true and false, but also the
; values on/off or yes/no can be used
3 = 2 ; result false
@@ -125,15 +125,15 @@ i1 / i2 ; result 0 (0.5, but truncated towards 0)
;
; Control Structures
-;
+;
; if
-; Evaluate a block of code if a given condition is true. IF does not return any value,
+; Evaluate a block of code if a given condition is true. IF does not return any value,
; so cannot be used in an expression.
if a < 0 [print "a is negative"]
; either
-; Evaluate a block of code if a given condition is true, else evaluate an alternative
-; block of code. If the last expressions in both blocks have the same type, EITHER can
+; Evaluate a block of code if a given condition is true, else evaluate an alternative
+; block of code. If the last expressions in both blocks have the same type, EITHER can
; be used inside an expression.
either a < 0 [
either a = 0 [
@@ -147,7 +147,7 @@ either a < 0 [
print ["a is " msg lf]
-; There is an alternative way to write this
+; There is an alternative way to write this
; (Which is allowed because all code paths return a value of the same type):
msg: either a < 0 [
@@ -162,7 +162,7 @@ msg: either a < 0 [
print ["a is " msg lf]
; until
-; Loop over a block of code until the condition at end of block, is met.
+; Loop over a block of code until the condition at end of block, is met.
; UNTIL does not return any value, so it cannot be used in an expression.
c: 5
until [
@@ -172,11 +172,11 @@ until [
]
; will output:
ooooo
-; Note that the loop will always be evaluated at least once, even if the condition is
+; Note that the loop will always be evaluated at least once, even if the condition is
; not met from the beginning.
; while
-; While a given condition is met, evaluate a block of code.
+; While a given condition is met, evaluate a block of code.
; WHILE does not return any value, so it cannot be used in an expression.
c: 5
while [c > 0][
@@ -206,7 +206,7 @@ print twice b ; will output 6.
## Further Reading
-The main source for information about Red is the [Red language homepage](http://www.red-lang.org).
+The main source for information about Red is the [Red language homepage](http://www.red-lang.org).
The source can be found on [github](https://github.com/red/red).
@@ -218,4 +218,4 @@ Browse or ask questions on [Stack Overflow](stackoverflow.com/questions/tagged/r
Maybe you want to try Red right away? That is possible on the [try Rebol and Red site](http://tryrebol.esperconsultancy.nl).
-You can also learn Red by learning some [Rebol](http://www.rebol.com/docs.html).
+You can also learn Red by learning some [Rebol](http://www.rebol.com/docs.html).