1937 lines
49 KiB
HTML
1937 lines
49 KiB
HTML
|
|
||
|
<!DOCTYPE HTML>
|
||
|
<html lang="" >
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
||
|
<title>Functions and Macros · Learn Lisp The Hard Way</title>
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
|
<meta name="description" content="">
|
||
|
<meta name="generator" content="GitBook 3.2.3">
|
||
|
<meta name="author" content=""the Phoeron" Colin J.E. Lupton">
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/style.css">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-folding-chapters/folding-chapters.css">
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<meta name="HandheldFriendly" content="true"/>
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
||
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||
|
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
|
||
|
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
|
||
|
|
||
|
|
||
|
<link rel="next" href="1-11-0-text-adventure.html" />
|
||
|
|
||
|
|
||
|
<link rel="prev" href="1-09-0-closures.html" />
|
||
|
|
||
|
|
||
|
</head>
|
||
|
<body>
|
||
|
|
||
|
<div class="book">
|
||
|
<div class="book-summary">
|
||
|
|
||
|
|
||
|
<div id="book-search-input" role="search">
|
||
|
<input type="text" placeholder="Type to search" />
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<nav role="navigation">
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="summary">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="header">LEARN LISP THE HARD WAY</li>
|
||
|
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="1.1" data-path="./">
|
||
|
|
||
|
<a href="index.html">
|
||
|
|
||
|
|
||
|
Second Draft (in-progress)
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="1.2" data-path="CHANGELOG.html">
|
||
|
|
||
|
<a href="CHANGELOG.html">
|
||
|
|
||
|
|
||
|
CHANGELOG
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="1.3" data-path="TODO.html">
|
||
|
|
||
|
<a href="TODO.html">
|
||
|
|
||
|
|
||
|
TODO
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="header">PREFACE</li>
|
||
|
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="2.1" data-path="preface.html">
|
||
|
|
||
|
<a href="preface.html">
|
||
|
|
||
|
|
||
|
TANSTAAFL
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="2.2" data-path="preface-part-two.html">
|
||
|
|
||
|
<a href="preface-part-two.html">
|
||
|
|
||
|
|
||
|
The Hard Way is Easier
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="2.3" data-path="preface-part-three.html">
|
||
|
|
||
|
<a href="preface-part-three.html">
|
||
|
|
||
|
|
||
|
Who Is This Book For?
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="2.4" data-path="introduction.html">
|
||
|
|
||
|
<a href="introduction.html">
|
||
|
|
||
|
|
||
|
Lisp: A Future History
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="2.5" data-path="acknowledgements.html">
|
||
|
|
||
|
<a href="acknowledgements.html">
|
||
|
|
||
|
|
||
|
Acknowledgements
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="header">PART ONE</li>
|
||
|
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="3.1" data-path="1-0-0-overview.html">
|
||
|
|
||
|
<a href="1-0-0-overview.html">
|
||
|
|
||
|
|
||
|
Grokking Lisp
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1" data-path="1-01-00-lisp-bootcamp.html">
|
||
|
|
||
|
<a href="1-01-00-lisp-bootcamp.html">
|
||
|
|
||
|
|
||
|
Common Lisp Bootcamp
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.1" data-path="1-01-01-syntax-overview.html">
|
||
|
|
||
|
<a href="1-01-01-syntax-overview.html">
|
||
|
|
||
|
|
||
|
Syntax Overview in 5 Minutes
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.2" data-path="1-01-02-repl.html">
|
||
|
|
||
|
<a href="1-01-02-repl.html">
|
||
|
|
||
|
|
||
|
The REPL
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.3" data-path="1-01-03-expressions.html">
|
||
|
|
||
|
<a href="1-01-03-expressions.html">
|
||
|
|
||
|
|
||
|
Expressions, Parentheses, and Return Values
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.4" data-path="1-01-04-lists-cons-cells.html">
|
||
|
|
||
|
<a href="1-01-04-lists-cons-cells.html">
|
||
|
|
||
|
|
||
|
Lists, Cons-Cells, and Memory
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.5" data-path="1-01-05-symbols.html">
|
||
|
|
||
|
<a href="1-01-05-symbols.html">
|
||
|
|
||
|
|
||
|
Symbols and Namespaces
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.6" data-path="1-01-06-prefix-notation.html">
|
||
|
|
||
|
<a href="1-01-06-prefix-notation.html">
|
||
|
|
||
|
|
||
|
Prefix Notation
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.7" data-path="1-01-07-style-guide.html">
|
||
|
|
||
|
<a href="1-01-07-style-guide.html">
|
||
|
|
||
|
|
||
|
Common Lisp Style Guide
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.1.8" data-path="1-01-08-configuration.html">
|
||
|
|
||
|
<a href="1-01-08-configuration.html">
|
||
|
|
||
|
|
||
|
Configuring Your Development Environment
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2" data-path="1-02-00-input-output.html">
|
||
|
|
||
|
<a href="1-02-00-input-output.html">
|
||
|
|
||
|
|
||
|
Printing, Streams, and Strings
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.1" data-path="1-02-01-strings.html">
|
||
|
|
||
|
<a href="1-02-01-strings.html">
|
||
|
|
||
|
|
||
|
Strings
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.2" data-path="1-02-02-more-strings.html">
|
||
|
|
||
|
<a href="1-02-02-more-strings.html">
|
||
|
|
||
|
|
||
|
More Strings
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.3" data-path="1-02-03-unicode.html">
|
||
|
|
||
|
<a href="1-02-03-unicode.html">
|
||
|
|
||
|
|
||
|
Unicode and Strings
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.4" data-path="1-02-04-chars.html">
|
||
|
|
||
|
<a href="1-02-04-chars.html">
|
||
|
|
||
|
|
||
|
Characters
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.5" data-path="1-02-05-more-chars.html">
|
||
|
|
||
|
<a href="1-02-05-more-chars.html">
|
||
|
|
||
|
|
||
|
More Characters
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.6" data-path="1-02-06-char-codes.html">
|
||
|
|
||
|
<a href="1-02-06-char-codes.html">
|
||
|
|
||
|
|
||
|
Character Codes
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.7" data-path="1-02-07-strings-from-chars.html">
|
||
|
|
||
|
<a href="1-02-07-strings-from-chars.html">
|
||
|
|
||
|
|
||
|
Strings from Chars
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.8" data-path="1-02-08-printing.html">
|
||
|
|
||
|
<a href="1-02-08-printing.html">
|
||
|
|
||
|
|
||
|
Printing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.9" data-path="1-02-09-more-printing.html">
|
||
|
|
||
|
<a href="1-02-09-more-printing.html">
|
||
|
|
||
|
|
||
|
More Printing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.10" data-path="1-02-10-prin1.html">
|
||
|
|
||
|
<a href="1-02-10-prin1.html">
|
||
|
|
||
|
|
||
|
Printing With prin1
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.11" data-path="1-02-11-princ.html">
|
||
|
|
||
|
<a href="1-02-11-princ.html">
|
||
|
|
||
|
|
||
|
Printing With princ
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.12" data-path="1-02-12-format.html">
|
||
|
|
||
|
<a href="1-02-12-format.html">
|
||
|
|
||
|
|
||
|
A Brief Introduction to Format
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.13" data-path="1-02-13-more-format.html">
|
||
|
|
||
|
<a href="1-02-13-more-format.html">
|
||
|
|
||
|
|
||
|
A Little Bit More on Format
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.14" data-path="1-02-14-pathnames.html">
|
||
|
|
||
|
<a href="1-02-14-pathnames.html">
|
||
|
|
||
|
|
||
|
Pathnames
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.15" data-path="1-02-15-streams.html">
|
||
|
|
||
|
<a href="1-02-15-streams.html">
|
||
|
|
||
|
|
||
|
Streams
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.16" data-path="1-02-16-file-streams.html">
|
||
|
|
||
|
<a href="1-02-16-file-streams.html">
|
||
|
|
||
|
|
||
|
File Streams
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.17" data-path="1-02-17-binary-streams.html">
|
||
|
|
||
|
<a href="1-02-17-binary-streams.html">
|
||
|
|
||
|
|
||
|
Binary Streams
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.18" data-path="1-02-18-prompting-users.html">
|
||
|
|
||
|
<a href="1-02-18-prompting-users.html">
|
||
|
|
||
|
|
||
|
Prompting Users
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.2.19" data-path="1-02-19-pretty-printing.html">
|
||
|
|
||
|
<a href="1-02-19-pretty-printing.html">
|
||
|
|
||
|
|
||
|
Pretty-Printing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.3" data-path="1-03-0-getting-input-from-users.html">
|
||
|
|
||
|
<a href="1-03-0-getting-input-from-users.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Getting Input from Users
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.4" data-path="1-04-0-lists.html">
|
||
|
|
||
|
<a href="1-04-0-lists.html">
|
||
|
|
||
|
|
||
|
Lists and List-Operations
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.5" data-path="1-05-0-lookups-trees.html">
|
||
|
|
||
|
<a href="1-05-0-lookups-trees.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Look-up Lists and Trees
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6" data-path="1-06-0-math.html">
|
||
|
|
||
|
<a href="1-06-0-math.html">
|
||
|
|
||
|
|
||
|
Numbers and Math
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.1" data-path="1-06-01-integers.html">
|
||
|
|
||
|
<a href="1-06-01-integers.html">
|
||
|
|
||
|
|
||
|
Integers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.2" data-path="1-06-02-more-integers.html">
|
||
|
|
||
|
<a href="1-06-02-more-integers.html">
|
||
|
|
||
|
|
||
|
More Integers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.3" data-path="1-06-03-hexadecimal-notation.html">
|
||
|
|
||
|
<a href="1-06-03-hexadecimal-notation.html">
|
||
|
|
||
|
|
||
|
Hexadecimal Integer Notation
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.4" data-path="1-06-04-octal-notation.html">
|
||
|
|
||
|
<a href="1-06-04-octal-notation.html">
|
||
|
|
||
|
|
||
|
Octal Integer Notation
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.5" data-path="1-06-05-binary-notation.html">
|
||
|
|
||
|
<a href="1-06-05-binary-notation.html">
|
||
|
|
||
|
|
||
|
Binary Integer Notation
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.6" data-path="1-06-06-ratios.html">
|
||
|
|
||
|
<a href="1-06-06-ratios.html">
|
||
|
|
||
|
|
||
|
Ratios and Rational Numbers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.7" data-path="1-06-07-floating-point.html">
|
||
|
|
||
|
<a href="1-06-07-floating-point.html">
|
||
|
|
||
|
|
||
|
Floating-point Numbers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.8" data-path="1-06-08-constants.html">
|
||
|
|
||
|
<a href="1-06-08-constants.html">
|
||
|
|
||
|
|
||
|
Numeric Constants
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.9" data-path="1-06-09-complex-numbers.html">
|
||
|
|
||
|
<a href="1-06-09-complex-numbers.html">
|
||
|
|
||
|
|
||
|
Complex Numbers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.10" data-path="1-06-10-arithmetic.html">
|
||
|
|
||
|
<a href="1-06-10-arithmetic.html">
|
||
|
|
||
|
|
||
|
Arithmetic
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.11" data-path="1-06-11-more-arithmetic.html">
|
||
|
|
||
|
<a href="1-06-11-more-arithmetic.html">
|
||
|
|
||
|
|
||
|
More Arithmetic
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.12" data-path="1-06-12-even-more-arithmetic.html">
|
||
|
|
||
|
<a href="1-06-12-even-more-arithmetic.html">
|
||
|
|
||
|
|
||
|
Even More Arithmetic
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.13" data-path="1-06-13-exponents.html">
|
||
|
|
||
|
<a href="1-06-13-exponents.html">
|
||
|
|
||
|
|
||
|
Exponents
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.14" data-path="1-06-14-logarithms.html">
|
||
|
|
||
|
<a href="1-06-14-logarithms.html">
|
||
|
|
||
|
|
||
|
Logarithms
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.15" data-path="1-06-15-trigonometry.html">
|
||
|
|
||
|
<a href="1-06-15-trigonometry.html">
|
||
|
|
||
|
|
||
|
Trigonometry
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.6.16" data-path="1-06-16-psuedorandom-numbers.html">
|
||
|
|
||
|
<a href="1-06-16-psuedorandom-numbers.html">
|
||
|
|
||
|
|
||
|
Pseudo-Random Numbers
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.7" data-path="1-07-0-arrays.html">
|
||
|
|
||
|
<a href="1-07-0-arrays.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Arrays and Vectors
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.8" data-path="1-08-0-variables.html">
|
||
|
|
||
|
<a href="1-08-0-variables.html">
|
||
|
|
||
|
|
||
|
Variables, Parameters, and Constants
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.9" data-path="1-09-0-closures.html">
|
||
|
|
||
|
<a href="1-09-0-closures.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Closures
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter active" data-level="3.1.10" data-path="1-10-0-functions.html">
|
||
|
|
||
|
<a href="1-10-0-functions.html">
|
||
|
|
||
|
|
||
|
Functions and Macros
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.11" data-path="1-11-0-text-adventure.html">
|
||
|
|
||
|
<a href="1-11-0-text-adventure.html">
|
||
|
|
||
|
|
||
|
Extra Credit: A Simple Text Adventure
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.12" data-path="1-12-0-namespaces.html">
|
||
|
|
||
|
<a href="1-12-0-namespaces.html">
|
||
|
|
||
|
|
||
|
Namespaces, Symbols, Packages, and Systems
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.13" data-path="1-13-0-simple-web-app.html">
|
||
|
|
||
|
<a href="1-13-0-simple-web-app.html">
|
||
|
|
||
|
|
||
|
Extra Credit: A Simple Web Application
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.14" data-path="1-14-0-conditionals.html">
|
||
|
|
||
|
<a href="1-14-0-conditionals.html">
|
||
|
|
||
|
|
||
|
Conditionals
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.15" data-path="1-15-0-command-line-utility.html">
|
||
|
|
||
|
<a href="1-15-0-command-line-utility.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Command-Line Utilities
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.16" data-path="1-16-0-map-loop.html">
|
||
|
|
||
|
<a href="1-16-0-map-loop.html">
|
||
|
|
||
|
|
||
|
Mapping and Looping
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.17" data-path="1-17-0-iterate.html">
|
||
|
|
||
|
<a href="1-17-0-iterate.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Revisiting Loops with Iterate
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.18" data-path="1-18-0-format.html">
|
||
|
|
||
|
<a href="1-18-0-format.html">
|
||
|
|
||
|
|
||
|
Format Strings
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.19" data-path="1-19-0-dsl.html">
|
||
|
|
||
|
<a href="1-19-0-dsl.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Domain Specific Languages
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="3.1.20" data-path="1-20-0-review.html">
|
||
|
|
||
|
<a href="1-20-0-review.html">
|
||
|
|
||
|
|
||
|
Part One in Review
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="header">PART TWO</li>
|
||
|
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="4.1" data-path="2-0-0-overview.html">
|
||
|
|
||
|
<a href="2-0-0-overview.html">
|
||
|
|
||
|
|
||
|
The Suffusion of Blue
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="4.1.1" data-path="2-01-0-programming-paradigms.html">
|
||
|
|
||
|
<a href="2-01-0-programming-paradigms.html">
|
||
|
|
||
|
|
||
|
Programming Paradigms
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.2" data-path="2-02-0-regex.html">
|
||
|
|
||
|
<a href="2-02-0-regex.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Regular Expressions
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.3" data-path="2-03-0-objects-control.html">
|
||
|
|
||
|
<a href="2-03-0-objects-control.html">
|
||
|
|
||
|
|
||
|
Objects and Control Structures
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.4" data-path="2-04-0-data-persistence.html">
|
||
|
|
||
|
<a href="2-04-0-data-persistence.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Persistence and Databases
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.5" data-path="2-05-0-extended-types.html">
|
||
|
|
||
|
<a href="2-05-0-extended-types.html">
|
||
|
|
||
|
|
||
|
Extended Types
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.6" data-path="2-06-0-threads-memos-parallel.html">
|
||
|
|
||
|
<a href="2-06-0-threads-memos-parallel.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Concurrency and Memoization
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.7" data-path="2-07-0-logic-and-more-math.html">
|
||
|
|
||
|
<a href="2-07-0-logic-and-more-math.html">
|
||
|
|
||
|
|
||
|
Logic and Advanced Math
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.8" data-path="2-08-0-number-theory.html">
|
||
|
|
||
|
<a href="2-08-0-number-theory.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Number Theory
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.9" data-path="2-09-0-binary-octets-bits.html">
|
||
|
|
||
|
<a href="2-09-0-binary-octets-bits.html">
|
||
|
|
||
|
|
||
|
Binary Streams, Octet-Vectors, and Bit-Vectors
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.10" data-path="2-10-0-improved-text-adventure-engine.html">
|
||
|
|
||
|
<a href="2-10-0-improved-text-adventure-engine.html">
|
||
|
|
||
|
|
||
|
Extra Credit: An Improved Text Adventure Engine
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.11" data-path="2-11-0-conditions.html">
|
||
|
|
||
|
<a href="2-11-0-conditions.html">
|
||
|
|
||
|
|
||
|
Conditions and Error Handling
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.12" data-path="2-12-0-2d-game.html">
|
||
|
|
||
|
<a href="2-12-0-2d-game.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Write a 2D Game
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.13" data-path="2-13-0-compiler.html">
|
||
|
|
||
|
<a href="2-13-0-compiler.html">
|
||
|
|
||
|
|
||
|
The Compiler
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.14" data-path="2-14-0-tree-shaker.html">
|
||
|
|
||
|
<a href="2-14-0-tree-shaker.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Write a Tree-Shaker
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.15" data-path="2-15-0-docs-and-inspection.html">
|
||
|
|
||
|
<a href="2-15-0-docs-and-inspection.html">
|
||
|
|
||
|
|
||
|
Documentation and Inspection
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.16" data-path="2-16-0-foreign-libs.html">
|
||
|
|
||
|
<a href="2-16-0-foreign-libs.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Foreign Libraries in Lisp
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.17" data-path="2-17-0-debugging-testing.html">
|
||
|
|
||
|
<a href="2-17-0-debugging-testing.html">
|
||
|
|
||
|
|
||
|
Debugging and Unit Testing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.18" data-path="2-18-0-ffi.html">
|
||
|
|
||
|
<a href="2-18-0-ffi.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Write a Foreign Function Interface
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.19" data-path="2-19-0-essential-libs.html">
|
||
|
|
||
|
<a href="2-19-0-essential-libs.html">
|
||
|
|
||
|
|
||
|
Essential Lisp Libraries
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.20" data-path="2-20-0-packaging-libs.html">
|
||
|
|
||
|
<a href="2-20-0-packaging-libs.html">
|
||
|
|
||
|
|
||
|
Extra Credit: Packaging Lisp Libraries
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="4.1.21" data-path="2-21-0-review.html">
|
||
|
|
||
|
<a href="2-21-0-review.html">
|
||
|
|
||
|
|
||
|
Detailed Syntax Review
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="header">PART THREE</li>
|
||
|
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="5.1" data-path="3-00-00-overview.html">
|
||
|
|
||
|
<a href="3-00-00-overview.html">
|
||
|
|
||
|
|
||
|
Lisp So(u)rcery
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="articles">
|
||
|
|
||
|
|
||
|
<li class="chapter " data-level="5.1.1" data-path="3-01-00-web-apps.html">
|
||
|
|
||
|
<a href="3-01-00-web-apps.html">
|
||
|
|
||
|
|
||
|
Real-world Web Apps
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.2" data-path="3-02-00-typesetting.html">
|
||
|
|
||
|
<a href="3-02-00-typesetting.html">
|
||
|
|
||
|
|
||
|
Typesetting
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.3" data-path="3-03-00-mobile.html">
|
||
|
|
||
|
<a href="3-03-00-mobile.html">
|
||
|
|
||
|
|
||
|
Native Mobile Applications
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.4" data-path="3-04-00-gui.html">
|
||
|
|
||
|
<a href="3-04-00-gui.html">
|
||
|
|
||
|
|
||
|
Cross-platform Desktop Applications
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.5" data-path="3-05-00-system-utils.html">
|
||
|
|
||
|
<a href="3-05-00-system-utils.html">
|
||
|
|
||
|
|
||
|
Drivers, Daemons, and System-Utilities
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.6" data-path="3-06-00-reverse-engineering.html">
|
||
|
|
||
|
<a href="3-06-00-reverse-engineering.html">
|
||
|
|
||
|
|
||
|
Reverse Engineering
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.7" data-path="3-07-00-graphics.html">
|
||
|
|
||
|
<a href="3-07-00-graphics.html">
|
||
|
|
||
|
|
||
|
Graphics Rendering
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.8" data-path="3-08-00-gaming.html">
|
||
|
|
||
|
<a href="3-08-00-gaming.html">
|
||
|
|
||
|
|
||
|
OpenGL, SDL, and 3D Game Development
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.9" data-path="3-09-00-audio.html">
|
||
|
|
||
|
<a href="3-09-00-audio.html">
|
||
|
|
||
|
|
||
|
Audio Generation and Manipulation
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.10" data-path="3-10-00-data.html">
|
||
|
|
||
|
<a href="3-10-00-data.html">
|
||
|
|
||
|
|
||
|
Data Aggregation and Analysis
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.11" data-path="3-11-00-cryptosec.html">
|
||
|
|
||
|
<a href="3-11-00-cryptosec.html">
|
||
|
|
||
|
|
||
|
Cryptography and Security
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.12" data-path="3-12-00-fintech.html">
|
||
|
|
||
|
<a href="3-12-00-fintech.html">
|
||
|
|
||
|
|
||
|
Financial Software and Crypto-Currencies
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.13" data-path="3-13-00-scientific-computing.html">
|
||
|
|
||
|
<a href="3-13-00-scientific-computing.html">
|
||
|
|
||
|
|
||
|
Scientific Computing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.14" data-path="3-14-00-computational-physics.html">
|
||
|
|
||
|
<a href="3-14-00-computational-physics.html">
|
||
|
|
||
|
|
||
|
Computational Physics
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.15" data-path="3-15-00-quantum-computing.html">
|
||
|
|
||
|
<a href="3-15-00-quantum-computing.html">
|
||
|
|
||
|
|
||
|
Quantum Computing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.16" data-path="3-16-00-nlp.html">
|
||
|
|
||
|
<a href="3-16-00-nlp.html">
|
||
|
|
||
|
|
||
|
Natural Language Processing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.17" data-path="3-17-00-ai.html">
|
||
|
|
||
|
<a href="3-17-00-ai.html">
|
||
|
|
||
|
|
||
|
Artificial Intelligence
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.18" data-path="3-18-00-robotics.html">
|
||
|
|
||
|
<a href="3-18-00-robotics.html">
|
||
|
|
||
|
|
||
|
Robotics
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.19" data-path="3-19-00-space-tech.html">
|
||
|
|
||
|
<a href="3-19-00-space-tech.html">
|
||
|
|
||
|
|
||
|
Space Tech
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.20" data-path="3-20-00-neurotech.html">
|
||
|
|
||
|
<a href="3-20-00-neurotech.html">
|
||
|
|
||
|
|
||
|
Neuroscience and Thought-Controlled Computing
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.21" data-path="3-21-00-lispos.html">
|
||
|
|
||
|
<a href="3-21-00-lispos.html">
|
||
|
|
||
|
|
||
|
A Simple LispOS
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.22" data-path="3-22-00-lisp-machine.html">
|
||
|
|
||
|
<a href="3-22-00-lisp-machine.html">
|
||
|
|
||
|
|
||
|
Build Your Own Lisp Machine
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="chapter " data-level="5.1.23" data-path="3-23-00-gov-mil.html">
|
||
|
|
||
|
<a href="3-23-00-gov-mil.html">
|
||
|
|
||
|
|
||
|
Government and Military Grade Systems
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="divider"></li>
|
||
|
|
||
|
<li>
|
||
|
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
|
||
|
Published with GitBook
|
||
|
</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
|
||
|
</nav>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<div class="book-body">
|
||
|
|
||
|
<div class="body-inner">
|
||
|
|
||
|
|
||
|
|
||
|
<div class="book-header" role="navigation">
|
||
|
|
||
|
|
||
|
<!-- Title -->
|
||
|
<h1>
|
||
|
<i class="fa fa-circle-o-notch fa-spin"></i>
|
||
|
<a href="index.html" >Functions and Macros</a>
|
||
|
</h1>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<div class="page-wrapper" tabindex="-1" role="main">
|
||
|
<div class="page-inner">
|
||
|
|
||
|
<div id="book-search-results">
|
||
|
<div class="search-noresults">
|
||
|
|
||
|
<section class="normal markdown-section">
|
||
|
|
||
|
<h1 id="chapter-110">Chapter 1.10</h1>
|
||
|
<h2 id="functions-and-macros">Functions and Macros</h2>
|
||
|
<blockquote>
|
||
|
<p>"The greatest productive force is human selfishness."</p>
|
||
|
<footer>Robert A. Heinlein, <em>Time Enough For Love</em></footer>
|
||
|
|
||
|
</blockquote>
|
||
|
<p>At the end of the day, most of the Lisp code you write will probably be Function or Macro definitions; after all, not only will they finally enable you to start doing some interesting programming, they are---arguably---the core of Lambda Calculus, Functional Programming, and the Lisp-family of programming languages. Even if you choose to favor Object-Oriented Programming as your go-to paradigm, you'll be using what you've learned here in this chapter.</p>
|
||
|
<p>You've already seen some functions and macros in action; other than the low-level <em>special forms</em>, most of the Lisp language as defined in the ANSI Standard is actually implemented in Common Lisp as functions in the <code>COMMON-LISP</code> package---in other words, Common Lisp is primarily a self-defined language, built on top of a small set of primitives. When working at the REPL, these functions are all imported for you into your own personal namespace, <code>CL-USER</code>. But some of the Common Lisp language is also implemented as Macros---remember <code>with-open-file</code>? That is a common use of Macros as used in the Common Lisp language itself, <code>with-...</code> forms. But also, every definition form, even <code>defun</code> and <code>defmacro</code>, are <em>also</em> macros themselves.</p>
|
||
|
<p>You can think of Functions as lexically closed blocks of code. You write functions to extend the vocabulary of Lisp.</p>
|
||
|
<p>Macros are, at least on the surface, very similar to functions; however, they also allow the programmer to use <em>backtick syntax</em>, a highly expressive notation for marking-up code transformation. Due to the expressive power of macros in Common Lisp, you can say that Lisp macros not only allow you to extend the vocabulary, but also modify the syntax of Lisp to your heart's desire. Macros are often used to reduce repetitive, predictable code to a single line; combine related functionality into a simple call that expands into Lisp procedurally based on input; and for writing Domain-Specific Languages, a topic we will cover exclusively in Chapter 1.19.</p>
|
||
|
<p>For now, we will focus on the core of writing anonymous and named functions with dynamic and lexical scope, writing recursive functions, tail-call optimization, and writing your first macros to keep your code tidy and expressive.</p>
|
||
|
<p>This chapter will contain exercises on:</p>
|
||
|
<ul>
|
||
|
<li>LAMBDA: Anonymous Functions</li>
|
||
|
<li>Global Functions/top-level forms</li>
|
||
|
<li>Local Functions/lexical forms</li>
|
||
|
<li>Recursive Functions</li>
|
||
|
<li>Tail-Call Optimization</li>
|
||
|
<li>Defining Macros</li>
|
||
|
<li>Backtick syntax</li>
|
||
|
</ul>
|
||
|
<h3 id="exercise-1101">Exercise 1.10.1</h3>
|
||
|
<p><strong>LAMBDA: Anonymous Functions</strong></p>
|
||
|
<pre><code class="lang-lisp">(<span class="hljs-name">lambda</span> (<span class="hljs-name">x</span>) (<span class="hljs-name">+</span> x x))
|
||
|
|
||
|
((<span class="hljs-name">lambda</span> (<span class="hljs-name">x</span>) (<span class="hljs-name">+</span> x x)) <span class="hljs-number">2</span>)
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1102">Exercise 1.10.2</h3>
|
||
|
<p><strong>More LAMBDA</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1103">Exercise 1.10.3</h3>
|
||
|
<p><strong>Even More Lambda</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1104">Exercise 1.10.4</h3>
|
||
|
<p><strong>DEFUN: Function Definitions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1105">Exercise 1.10.5</h3>
|
||
|
<p><strong>More DEFUN</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1106">Exercise 1.10.6</h3>
|
||
|
<p><strong>Even More DEFUN</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1107">Exercise 1.10.7</h3>
|
||
|
<p><strong>FLET: Lexical Function Definitions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1108">Exercise 1.10.8</h3>
|
||
|
<p><strong>Recursive Functions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-1109">Exercise 1.10.9</h3>
|
||
|
<p><strong>More Recursive Functions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11010">Exercise 1.10.10</h3>
|
||
|
<p><strong>The Y-Combinator: Recursive Anonymous Functions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11011">Exercise 1.10.11</h3>
|
||
|
<p><strong>Tail-Call Optimization</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11012">Exercise 1.10.12</h3>
|
||
|
<p><strong>Defining Macros</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11013">Exercise 1.10.13</h3>
|
||
|
<p><strong>Macro Expansion</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11014">Exercise 1.10.14</h3>
|
||
|
<p><strong>Backtick Syntax</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11015">Exercise 1.10.15</h3>
|
||
|
<p><strong>Unquoting</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11016">Exercise 1.10.16</h3>
|
||
|
<p><strong>Splicing</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-11017">Exercise 1.10.17</h3>
|
||
|
<p><strong>Nested Expansions</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
|
||
|
|
||
|
</section>
|
||
|
|
||
|
</div>
|
||
|
<div class="search-results">
|
||
|
<div class="has-results">
|
||
|
|
||
|
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
|
||
|
<ul class="search-results-list"></ul>
|
||
|
|
||
|
</div>
|
||
|
<div class="no-results">
|
||
|
|
||
|
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
<a href="1-09-0-closures.html" class="navigation navigation-prev " aria-label="Previous page: Extra Credit: Closures">
|
||
|
<i class="fa fa-angle-left"></i>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
<a href="1-11-0-text-adventure.html" class="navigation navigation-next " aria-label="Next page: Extra Credit: A Simple Text Adventure">
|
||
|
<i class="fa fa-angle-right"></i>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
var gitbook = gitbook || [];
|
||
|
gitbook.push(function() {
|
||
|
gitbook.page.hasChanged({"page":{"title":"Functions and Macros","level":"3.1.10","depth":2,"next":{"title":"Extra Credit: A Simple Text Adventure","level":"3.1.11","depth":2,"path":"1-11-0-text-adventure.md","ref":"./1-11-0-text-adventure.md","articles":[]},"previous":{"title":"Extra Credit: Closures","level":"3.1.9","depth":2,"path":"1-09-0-closures.md","ref":"./1-09-0-closures.md","articles":[]},"dir":"ltr"},"config":{"plugins":["hints","folding-chapters"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"folding-chapters":{},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"\"the Phoeron\" Colin J.E. Lupton","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"index.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Learn Lisp The Hard Way","gitbook":"*"},"file":{"path":"1-10-0-functions.md","mtime":"2022-08-22T22:47:49.767Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2022-08-24T16:15:01.957Z"},"basePath":".","book":{"language":""}});
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook.js"></script>
|
||
|
<script src="gitbook/theme.js"></script>
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-folding-chapters/folding-chapters.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-search/search.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|
||
|
|