buttercup)データとプログラムのどちらも同じ方法で表現する。どちらも、単語や数やリストを空白で区切って括弧で囲んだリストである。クオートと呼び、リストの直前にこれを付けると、そのリストに関しては何もせずに字面どおりに扱うことをLispに指示する。↓これまで単語と呼んできたものをアトム(atoms)と呼ぶ。リストでは、アトムを空白で区切る。アトムは、括弧のすぐ隣にあってもよい。リストは、たった1個のアトムを含むだけでも、まったく含まなくてもよい。空リストは、それ以外のものとは異なり、アトムであると同時にリストでもある。↓リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなる。↓リストの直前にクオートがあるかどうかを調べる。クオートがあれば、リストを返すだけ。クオートがなければ、インタープリタはリストの先頭要素を調べ、それに関数定義があるかどうかを調べる。関数定義があれば、インタープリタはその関数定義内の命令列を実行する。なければ、インタープリタはエラーメッセージを出力する。変数リストに加えて、クオートもせず括弧で囲まれてもいないシンボルを評価できる変数(variable)としてのシンボルの値を決定しようとするスペシャルフォーム特殊な関数があり、これらは普通の方式のように動作しない。関数の定義などの特殊なことを行うものであり、それらの個数は多くはない。Lispインタープリタはリストの内側にリストがあるかどうかを調べる。内側にリストがあれば、Lispインタープリタは内側のリストを処理してから、外側のリストを処理する。関数に渡すデータの型は、関数が使用する情報の種類に応じて決まる。+のような関数への引数は数値である必要がある。引数は、評価したときに値を返すシンボルでもよい。BUTTERCUP)さらに、setqは、複数の異なる変数に異なる値を代入するためにも使える。↓シンボルには、関数として呼ばれたときにコンピュータが実行するコードが結び付けられている。form)と呼ばれる。第1要素がifであるリストの第2要素と第3要素のそれぞれに、判定条件と真の場合の動作を指定する。偽の場合の動作である。Perl5.008008。