Red is a programming language and environment that is designed to be simple, flexible, and efficient. It is influenced by Rebol, a language created by Carl Sassenrath in the 1990s. Red is known for its concise syntax, powerful data manipulation features, and cross-platform support.
Red variables can store a variety of data types, including integer, decimal, string, binary, and block. Variables are assigned using the :
operator.
; Integer variable
x: 42
; Decimal variable
pi: 3.14
; String variable
name: "Alice"
; Binary variable
flags: #{01010101}
; Block variable
numbers: [1 2 3 4 5]
Red has a small number of built-in functions for common tasks such as string manipulation, file I/O, and GUI programming. Functions are called using a word followed by arguments in parentheses.
; String manipulation
name: "Alice"
length? name ; Returns 5
; File I/O
read %input.txt
; GUI programming
view [
button "Click me" [print "Hello, world!"]
]
Red has several types of loops, including for
, foreach
, while
, and until
. The for
and foreach
loops are used to iterate over a range of values or a block, while the while
and until
loops are used to repeat a block of code while a condition is true or false.
; For loop
for i 1 10 1 [
print i
]
; Foreach loop
numbers: [1 2 3 4 5]
foreach num numbers [
print num
]
; While loop
i: 1
while i <= 10 [
print i
i: i + 1
]
; Until loop
i: 1
until i > 10 [
print i
i: i + 1
]
Red has several conditional statements, including if
, either
, and switch
. These statements are used to control the flow of a program based on certain conditions.
; If statement
age: 30
if age >= 18 [
print "You are an adult"
]
; Either statement
age: 15
either age >= 18 [
print "You are an adult"
][
print "You are a minor"
]
; Switch statement
fruit: "apple"
switch fruit [
"apple" [print "It's an apple"]
"banana" [print "It's a banana"]
[print "It's something else"]
]
Red provides several functions for manipulating files, including read
, write
, rename
, and delete
.
; Read file
data: read %data.txt
; Write file
write %data_new.txt data
; Rename file
rename %data.txt %data_old.txt
; Delete file
delete %data_old.txt