1900 lines
51 KiB
HTML
1900 lines
51 KiB
HTML
|
|
||
|
<!DOCTYPE HTML>
|
||
|
<html lang="" >
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
||
|
<title>Real-world Web Apps · 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="3-02-00-typesetting.html" />
|
||
|
|
||
|
|
||
|
<link rel="prev" href="3-00-00-overview.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 " 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 active" 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" >Real-world Web Apps</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-31">Chapter 3.1</h1>
|
||
|
<h2 id="real-world-web-applications">Real-World Web Applications</h2>
|
||
|
<blockquote>
|
||
|
<p>"Free will is a golden thread running through the frozen matrix of fixed events."</p>
|
||
|
<footer>Robert A. Heinlein, <em>The Rolling Stones</em></footer>
|
||
|
|
||
|
</blockquote>
|
||
|
<p>There is no other problem-domain more complicated than the Web. To be a successful web developer these days, you have to wear a lot of hats---you need to be a programmer, a graphic designer, a system administrator, a DBA, a security expert, you have to know the quirks of every platform and browser, mobile or desktop, you have to keep abreast of the cutting edge. It's an endless journey, and you'll always find the need to be better than you are.</p>
|
||
|
<p>One of the biggest problems with the Web is just how many languages you need to know to create a straightforward web application. It's not just HTML, CSS, a splattering of JavaScript, and your choice of PHP, Python, or Perl anymore. Now you need to learn a web framework, the language it's written in to write the server-side logic, an arbitrary templating language to create your interfaces, and new protocols like Comet or Websockets for real-time two-way communication between the server and client.</p>
|
||
|
<p>Lisp solves all these issues, and will give you an edge over the competition. You only need to know Lisp, and you can run a web server on any platform, generate your HTML, CSS, JavaScript front-end interfaces, JSON or XML data feeds, and communicate with your clients over AJAX, Comet, REST, or Websockets. Using a sensible front-end library, you can also ensure a graceful experience for all your users on every platform. And never have to write a single line of any other language.</p>
|
||
|
<hr>
|
||
|
<p>Extend upon the material covered earlier for building simple web apps; cover the feature and security requirements of web applications, REST endpoints, websockets, etc.</p>
|
||
|
<p>Review web frameworks in Lisp: Weblocks, RESTAS, Clack/Caveman, Anti-Web, REDSHIFTNET; refresher on underlying servers, Hunchentoot, Wookie, IOLib, teepeedee2, etc., database libraries, crane, postmodern, etc., and other web-related libraries, cl-who, cl-css, parenscript, etc.</p>
|
||
|
<p>Web app should be a live-updating feed, pulling from some standard data source in JSON.</p>
|
||
|
<p>Focus on 100% Lisp to generate/parse web languages.</p>
|
||
|
<p>Also, include an exercise that shows how to set up a secure load-balanced cloud lisp web application.</p>
|
||
|
<h3 id="exercise-311">Exercise 3.1.1</h3>
|
||
|
<p><strong>Full Featured Web Apps</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-312">Exercise 3.1.2</h3>
|
||
|
<p><strong>Clack and Caveman</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-313">Exercise 3.1.3</h3>
|
||
|
<p><strong>Wookie</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-314">Exercise 3.1.4</h3>
|
||
|
<p><strong>CL-ASYNC</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-315">Exercise 3.1.5</h3>
|
||
|
<p><strong>IOLib</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-316">Exercise 3.1.6</h3>
|
||
|
<p><strong>IOLib</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-317">Exercise 3.1.7</h3>
|
||
|
<p><strong>Websockets</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-318">Exercise 3.1.8</h3>
|
||
|
<p><strong>Databases and ORMs for the Web</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-319">Exercise 3.1.9</h3>
|
||
|
<p><strong>Serializing Data to JSON</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="project-3110">Project 3.1.10</h3>
|
||
|
<p><strong>An All-in-One Asynchronous Web Framework</strong></p>
|
||
|
<pre><code class="lang-lisp">
|
||
|
|
||
|
</code></pre>
|
||
|
<h3 id="exercise-3111">Exercise 3.1.11</h3>
|
||
|
<p><strong>Deploying a Secure, Distributed Lisp Web Application in the Cloud</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="3-00-00-overview.html" class="navigation navigation-prev " aria-label="Previous page: Lisp So(u)rcery">
|
||
|
<i class="fa fa-angle-left"></i>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
<a href="3-02-00-typesetting.html" class="navigation navigation-next " aria-label="Next page: Typesetting">
|
||
|
<i class="fa fa-angle-right"></i>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
var gitbook = gitbook || [];
|
||
|
gitbook.push(function() {
|
||
|
gitbook.page.hasChanged({"page":{"title":"Real-world Web Apps","level":"5.1.1","depth":2,"next":{"title":"Typesetting","level":"5.1.2","depth":2,"path":"3-02-00-typesetting.md","ref":"./3-02-00-typesetting.md","articles":[]},"previous":{"title":"Lisp So(u)rcery","level":"5.1","depth":1,"path":"3-00-00-overview.md","ref":"3-00-00-overview.md","articles":[{"title":"Real-world Web Apps","level":"5.1.1","depth":2,"path":"3-01-00-web-apps.md","ref":"./3-01-00-web-apps.md","articles":[]},{"title":"Typesetting","level":"5.1.2","depth":2,"path":"3-02-00-typesetting.md","ref":"./3-02-00-typesetting.md","articles":[]},{"title":"Native Mobile Applications","level":"5.1.3","depth":2,"path":"3-03-00-mobile.md","ref":"./3-03-00-mobile.md","articles":[]},{"title":"Cross-platform Desktop Applications","level":"5.1.4","depth":2,"path":"3-04-00-gui.md","ref":"./3-04-00-gui.md","articles":[]},{"title":"Drivers, Daemons, and System-Utilities","level":"5.1.5","depth":2,"path":"3-05-00-system-utils.md","ref":"./3-05-00-system-utils.md","articles":[]},{"title":"Reverse Engineering","level":"5.1.6","depth":2,"path":"3-06-00-reverse-engineering.md","ref":"./3-06-00-reverse-engineering.md","articles":[]},{"title":"Graphics Rendering","level":"5.1.7","depth":2,"path":"3-07-00-graphics.md","ref":"./3-07-00-graphics.md","articles":[]},{"title":"OpenGL, SDL, and 3D Game Development","level":"5.1.8","depth":2,"path":"3-08-00-gaming.md","ref":"./3-08-00-gaming.md","articles":[]},{"title":"Audio Generation and Manipulation","level":"5.1.9","depth":2,"path":"3-09-00-audio.md","ref":"./3-09-00-audio.md","articles":[]},{"title":"Data Aggregation and Analysis","level":"5.1.10","depth":2,"path":"3-10-00-data.md","ref":"./3-10-00-data.md","articles":[]},{"title":"Cryptography and Security","level":"5.1.11","depth":2,"path":"3-11-00-cryptosec.md","ref":"./3-11-00-cryptosec.md","articles":[]},{"title":"Financial Software and Crypto-Currencies","level":"5.1.12","depth":2,"path":"3-12-00-fintech.md","ref":"./3-12-00-fintech.md","articles":[]},{"title":"Scientific Computing","level":"5.1.13","depth":2,"path":"3-13-00-scientific-computing.md","ref":"./3-13-00-scientific-computing.md","articles":[]},{"title":"Computational Physics","level":"5.1.14","depth":2,"path":"3-14-00-computational-physics.md","ref":"./3-14-00-computational-physics.md","articles":[]},{"title":"Quantum Computing","level":"5.1.15","depth":2,"path":"3-15-00-quantum-computing.md","ref":"./3-15-00-quantum-computing.md","articles":[]},{"title":"Natural Language Processing","level":"5.1.16","depth":2,"path":"3-16-00-nlp.md","ref":"./3-16-00-nlp.md","articles":[]},{"title":"Artificial Intelligence","level":"5.1.17","depth":2,"path":"3-17-00-ai.md","ref":"./3-17-00-ai.md","articles":[]},{"title":"Robotics","level":"5.1.18","depth":2,"path":"3-18-00-robotics.md","ref":"./3-18-00-robotics.md","articles":[]},{"title":"Space Tech","level":"5.1.19","depth":2,"path":"3-19-00-space-tech.md","ref":"./3-19-00-space-tech.md","articles":[]},{"title":"Neuroscience and Thought-Controlled Computing","level":"5.1.20","depth":2,"path":"3-20-00-neurotech.md","ref":"./3-20-00-neurotech.md","articles":[]},{"title":"A Simple LispOS","level":"5.1.21","depth":2,"path":"3-21-00-lispos.md","ref":"./3-21-00-lispos.md","articles":[]},{"title":"Build Your Own Lisp Machine","level":"5.1.22","depth":2,"path":"3-22-00-lisp-machine.md","ref":"./3-22-00-lisp-machine.md","articles":[]},{"title":"Government and Military Grade Systems","level":"5.1.23","depth":2,"path":"3-23-00-gov-mil.md","ref":"./3-23-00-gov-mil.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":{"
|
||
|
});
|
||
|
</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>
|
||
|
|