summaryrefslogtreecommitdiff
path: root/doc/sly.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sly.texi')
-rw-r--r--doc/sly.texi60
1 files changed, 27 insertions, 33 deletions
diff --git a/doc/sly.texi b/doc/sly.texi
index 8eaeb71..71a84cd 100644
--- a/doc/sly.texi
+++ b/doc/sly.texi
@@ -65,40 +65,34 @@ Scheme programming language. With the help of Guile, Sly provides all
of the essential building blocks for making video games, such as:
window management, input even handling, rendering, linear algebra, and
powerful scripting capabilities. Sly differentiates itself from
-traditional game engines by providing a dynamic live coding
-environment, functional reactive programming, and a declarative scene
-graph.
-
-Live coding is the practice of improvised interactive programming.
-Sly provides a suitable environment for live coding by leveraging
-Emacs, Geiser, and Guile's cooperative REPL server. With these tools,
-programmers may evaluate arbitrary code and see the effects of their
-modifications in real time. This tight feedback loop allows for
-faster prototyping, greater productivity, and most importantly, more
-fun.
+traditional game engines by providing a dynamic live codinng
+environment and a functional API.
+
+For those unfamiliar with the term, ``live coding'' is the practice of
+improvised interactive programming. Sly provides a suitable
+environment for live coding by leveraging Guile's cooperative REPL
+server. When used with a powerful editing tool such as Emacs (with
+the fantastic Geiser extension), programmers may evaluate arbitrary
+code and see the effects of their modifications in real time. This
+tight feedback loop allows for faster prototyping, greater
+productivity, and most importantly, more fun.
Functional reactive programming (FRP) is a technique used to model
time-varying values with pure functions. A pure function is a
-function that produces no side-effects, such as calling 'set!' on a
-variable or writing to the contents of an array. Sly encapsulates
-time-varying values in ``signals'', a high-level data structure for
-controlling the flow of events. Unlike imperative event callbacks,
-signals can easily be composed to form new signals. By modeling game
-state with pure functions and immutable data, a game can be seen as a
-function of time, in the mathematical sense. Constructing a game this
-way allows for deterministic behavior that is easier to reason about
-than the accumulation of side-effects seen in traditional game
-engines.
-
-A scene graph is a data structure for positioning renderable objects
-relative to one another. Child nodes inherit the transformations
-applied to their parent, making it easy to move a large amount of
-objects around as a group rather than individually. Sly's implements
-a declarative scene graph API, which means that the programmer
-describes @emph{what} to render, rather than @emph{how} to render it.
-
-These three major components form a powerful, high-level environment
-for building video games.
+function whose return value depends solely upon its arguments. They
+also produce no side-effects, such as calling 'set!' on a variable or
+writing to a file on disk. Sly encapsulates time-varying values in
+``signals'', a high-level data structure for controlling the flow of
+events. Unlike imperative event callbacks, signals can easily be
+composed to form new signals. By modeling game state with pure
+functions and immutable data, a game can be seen as a function of
+time. To play the game is to ``fold'' (accumulate a result) over
+time. Constructing a game this way allows for deterministic behavior
+that is easier to reason about and test than the accumulation of
+side-effects seen in traditional game engines. The signal interface
+is also declarative, meaning that the programmer describes @emph{what}
+the state of the world should be like at any given time, rather than
+@emph{how} to get there.
@node Installation
@chapter Installation
@@ -195,8 +189,8 @@ grow! Please get in touch with us on @code{#sly} on the Freenode IRC
network. We welcome ideas, bug reports, patches, and anything that
may be helpful to the project.
-The git source code repository can be found on Gitorious at
-@url{https://gitorious.org/sly/sly}.
+The git source code repository can be found at
+@url{https://git.dthompson.us/sly.git}.
@node Copying This Manual
@appendix Copying This Manual