Glossary

Every word in Common (CL), A to Z, with its one form and an example. Generated by the interpreter from its own dictionary.

command

Starts a line and does something

Seventeen words can begin a line. Each one is a complete instruction.

show "Hello"
set price to 4.5
if age is at least 18
value

Gives you something, used inside a line

Every other word. It never stands alone: put it after a command, or in brackets inside text.

set total to count of fruits
show "Today is [today]"
if email contains "@"

The one rule: a line is one command, and everything after its first word is values.

A C D E F G H I L M N O P Q R S T U Y [ ]

The one piece of syntax

[ ] syntax
"text with [a value] inside"

put a value into text. A value is anything you could write after 'set x to': a name, math, count of, query. Write \[ for a real bracket

set name to "Ada"
show "Hello, [name]! You have [count of messages] messages."
  

A

and value
A and B

both must be yes

if name is not empty and age is at least 18
  
ask value
ask database "SQL" with VALUE, ...

run a query; each ? in the SQL takes the next value safely. Gives a list of records

set posts to ask database "select * from posts where slug = ?" with slug
  

C

code after show
show code TEXT

show Common code highlighted, the way a cl-code block does, but from a value

show code example of entry
  
contains value
A contains B

yes if text A has B inside it, or list A has item B

if email contains "@"
  
count value
count of LIST

how many items a list has, or letters in text

show "[count of fruits] fruits"
  

D

date value
date of TEXT

a date like 2026-10-24 written out: 24 October 2026

show "[date of today]"
  
day value
day of TEXT

the day of a date as a number

show "[day of today]"
  
dictionary value
dictionary

every word of the language as records: word, form, meaning, example

for each entry in dictionary
  show "<dt>[word of entry]</dt><dd>[meaning of entry]</dd>"
end
  

E

email value
TEXT is an email

yes if the text is one email address, like ada@example.com. Check a visitor's address with it before you use it

if form "email" is not an email
  set problem to "Please check your email address."
end
  

F

first value
first of LIST / first N of LIST

the first item, or the first N items (or letters of text)

show first of fruits
show "[first 100 of body]…"
  
form value
form "field"

what the visitor typed in a submitted form (POST)

set message to trim of form "message"
  

H

hash value
hash of TEXT

a one-way scramble of a password, safe to store (PBKDF2-HMAC-SHA256)

tell database "insert into users (name, password) values (?, ?)" with name, hash of form "password"
  

I

is value
A is B

equal. Also: is not, is more than, is less than, is at least, is at most, is between A and B, is empty

if colour is "blue"
if age is more than 12
if name is empty
  
item value
item N of LIST

one item by position, counting from 1; or a column by name: item "price" of lamp

show item 2 of fruits
  

L

last value
last of LIST / last N of LIST

the last item, or the last N items (or letters of text)

show last of fruits
for each post in last 3 of posts
  
list value
empty list

a list with nothing in it yet

set names to empty list
  
lowercase value
lowercase of TEXT

the text in small letters

set slug to lowercase of title
  

M

matches value
TEXT matches HASH

yes if the text is the password behind the hash

if form "password" matches password of user
  remember "user" as name
end
  
month value
month of TEXT

the month of a date as a name

show "[month of today]"
  

N

no value
no

the answer no

set done to no
  
not value
not A

flip yes and no

if not done
  
now value
now

the date and time, like 2026-10-24 18:30

tell database "insert into log (at) values (?)" with now
  
number value
number of TEXT

the text as a number, so math works on it

set qty to number of query "qty"
  

O

of value
COLUMN of RECORD

one column of a record, like name of recipe. Any column name works

show "[title of recipe]"
  
or value
A or B

either can be yes

if paid or member
  

P

paragraphs value
paragraphs of TEXT

a list of the paragraphs (separated by blank lines)

for each paragraph in paragraphs of body
  show "<p>[paragraph]</p>"
end
  
path value
path

the URL path, like /about. The visitor typed it, so it is made safe like query

set slug to last of split path by "/"
  

Q

query value
query "name"

what the visitor typed in the URL after ?name=

set name to query "name"
  

R

raw after show
show raw VALUE

show text exactly as it is, with no safety

show raw "<b>bold</b>"
  
record value
set NAME to record then column: VALUE lines, then end

a record of your own, like a row you made up. Read a column with 'price of lamp', change one with 'set price of lamp to 15'

set lamp to record
  name: "Desk lamp"
  price: 19
end
show "[name of lamp] costs $[price of lamp]"
  
remembered value
remembered "name"

a value kept for this visitor, or empty text

if remembered "user" is empty
  go to "/login"
end
  
replace value
replace "a" with "b" in TEXT

the text with every a changed to b

set slug to replace " " with "-" in title
  
reverse value
reverse of LIST

the list back to front

for each post in reverse of posts
  

S

sort value
sort of LIST

the list in order (numbers by size, text A to Z)

for each name in sort of names
  
split value
split TEXT by "/"

a list of the pieces between each separator

set parts to split "2026-10-24" by "-"
  

T

today value
today

the date, like 2026-10-24

show "Today is [today]"
  
trim value
trim of TEXT

the text without spaces at the ends

set name to trim of form "name"
  
try value
try TEXT

run text as Common in a sandbox and give back what it said. No files, database, cookies or redirects; loops stop after 20000 steps and memory at 64 MB. For practice pages

set result to try form "code"
  

U

uppercase value
uppercase of TEXT

the text in capitals

show "[uppercase of name]"
  

Y

year value
year of TEXT

the year of a date as a number

show "[year of today]"
  
yes value
yes

the answer yes

set paid to yes
  

42 words shown. Show all.

This page, more or less
for each entry in dictionary
  show "<h3>[word of entry]</h3>"
  show "<code>[form of entry]</code>"
  show "<p>[meaning of entry]</p>"
  show code example of entry
end

dictionary is a list of records with the columns word, form, meaning, example and command. It is the same table that cl words prints.