Thun/docs
Simon Forman e0d8910242 Docs on Start Up Sequence 2019-05-07 23:23:53 -07:00
..
Advent_of_Code_2017_December_3rd_files Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
VUI-docs Docs on Start Up Sequence 2019-05-07 23:23:53 -07:00
dep-graphs Move VUI package/module graph. 2019-05-07 10:00:52 -07:00
jupyter_kernel Initial move of code from git repo. 2018-04-14 18:13:13 -07:00
sphinx_docs I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
with_sympy_files A bunch of docs. 2018-08-24 16:48:15 -07:00
0._This_Implementation_of_Joy_in_Python.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
0._This_Implementation_of_Joy_in_Python.ipynb A bit more docs. 2018-07-14 12:07:49 -07:00
0._This_Implementation_of_Joy_in_Python.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
0._This_Implementation_of_Joy_in_Python.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
1._Basic_Use_of_Joy_in_a_Notebook.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
1._Basic_Use_of_Joy_in_a_Notebook.ipynb A bit more docs. 2018-07-14 12:07:49 -07:00
1._Basic_Use_of_Joy_in_a_Notebook.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
1._Basic_Use_of_Joy_in_a_Notebook.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
2._Library_Examples.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
2._Library_Examples.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
2._Library_Examples.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
2._Library_Examples.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
3._Developing_a_Program.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
3._Developing_a_Program.ipynb The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
3._Developing_a_Program.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
3._Developing_a_Program.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_1st.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_1st.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_1st.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_1st.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_2nd.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_2nd.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_2nd.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_2nd.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_3rd.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_3rd.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_3rd.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_3rd.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_4th.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_4th.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_4th.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_4th.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_5th.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_5th.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_5th.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_5th.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_6th.html Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_6th.ipynb Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_6th.md Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Advent_of_Code_2017_December_6th.rst Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Compiling_Joy.html A bunch of docs. 2018-08-24 16:48:15 -07:00
Compiling_Joy.ipynb A bunch of docs. 2018-08-24 16:48:15 -07:00
Compiling_Joy.md A bunch of docs. 2018-08-24 16:48:15 -07:00
Compiling_Joy.rst A bunch of docs. 2018-08-24 16:48:15 -07:00
Correcet_Programming.html I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
Correcet_Programming.ipynb I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
Correcet_Programming.md I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
Correcet_Programming.rst I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
Derivatives_of_Regular_Expressions.html Make sure we've got all the docs, etc. 2018-07-15 20:43:26 -07:00
Derivatives_of_Regular_Expressions.ipynb A little more bit o' docs. 2018-07-14 12:29:25 -07:00
Derivatives_of_Regular_Expressions.md Make sure we've got all the docs, etc. 2018-07-15 20:43:26 -07:00
Derivatives_of_Regular_Expressions.rst Make sure we've got all the docs, etc. 2018-07-15 20:43:26 -07:00
Document.md Some docs that got swept up in the commotion. 2018-06-06 13:08:04 -07:00
Generator_Programs.html A bit more docs. 2018-07-14 12:07:49 -07:00
Generator_Programs.ipynb A bit more docs. 2018-07-14 12:07:49 -07:00
Generator_Programs.md A bit more docs. 2018-07-14 12:07:49 -07:00
Generator_Programs.rst A bit more docs. 2018-07-14 12:07:49 -07:00
Hylo-,_Ana-,_Cata-,_and_Para-morphisms_-_Recursion_Combinators.html The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Hylo-,_Ana-,_Cata-,_and_Para-morphisms_-_Recursion_Combinators.ipynb The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Hylo-,_Ana-,_Cata-,_and_Para-morphisms_-_Recursion_Combinators.md The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Hylo-,_Ana-,_Cata-,_and_Para-morphisms_-_Recursion_Combinators.rst The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Library_Examples.pdf Make cannot deal with spaces in filenames. 2018-06-06 12:57:12 -07:00
Makefile A little more bit o' docs. 2018-07-14 12:29:25 -07:00
Newton-Raphson.html The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Newton-Raphson.ipynb The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Newton-Raphson.md The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Newton-Raphson.rst The Hylos notebook is not ready for public yet. 2018-06-08 13:05:59 -07:00
Ordered_Binary_Trees.html Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Ordered_Binary_Trees.ipynb The version of Python with Anaconda is lightly newer. 2018-08-24 16:46:18 -07:00
Ordered_Binary_Trees.md Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Ordered_Binary_Trees.rst Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Quadratic.html Bunches of new docs. 2018-06-21 21:13:50 -07:00
Quadratic.ipynb The version of Python with Anaconda is lightly newer. 2018-08-24 16:46:18 -07:00
Quadratic.md Bunches of new docs. 2018-06-21 21:13:50 -07:00
Quadratic.rst Bunches of new docs. 2018-06-21 21:13:50 -07:00
README.md Some docs that got swept up in the commotion. 2018-06-06 13:08:04 -07:00
Recursion_Combinators.html A bit more docs. 2018-07-14 12:07:49 -07:00
Recursion_Combinators.ipynb The version of Python with Anaconda is lightly newer. 2018-08-24 16:46:18 -07:00
Recursion_Combinators.md A bit more docs. 2018-07-14 12:07:49 -07:00
Recursion_Combinators.rst A bit more docs. 2018-07-14 12:07:49 -07:00
Replacing.html Rebuild html. 2018-06-08 13:17:36 -07:00
Replacing.ipynb Rebuild html. 2018-06-08 13:17:36 -07:00
Replacing.md Rebuild html. 2018-06-08 13:17:36 -07:00
Replacing.rst Rebuild html. 2018-06-08 13:17:36 -07:00
The_Four_Operations.html A bit more docs. 2018-07-14 12:07:49 -07:00
The_Four_Operations.ipynb A little more documentation. 2018-07-11 07:13:05 -07:00
The_Four_Operations.md A bit more docs. 2018-07-14 12:07:49 -07:00
The_Four_Operations.rst A bit more docs. 2018-07-14 12:07:49 -07:00
Trees.html Regenerated docs. 2018-06-05 17:41:22 -07:00
Trees.ipynb Working on tree docs. 2018-05-29 11:38:58 -07:00
Trees.md Regenerated docs. 2018-06-05 17:41:22 -07:00
Trees.rst Regenerated docs. 2018-06-05 17:41:22 -07:00
Treestep.html Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Treestep.ipynb Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Treestep.md Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
Treestep.rst Bumped version to 0.2.0; docs edits. 2018-06-06 08:47:26 -07:00
TypeChecking.html A little more documentation. 2018-07-11 07:13:05 -07:00
TypeChecking.ipynb A little more documentation. 2018-07-11 07:13:05 -07:00
TypeChecking.md A little more documentation. 2018-07-11 07:13:05 -07:00
TypeChecking.rst A little more documentation. 2018-07-11 07:13:05 -07:00
Types.html Type inference of Joy expressions. 2018-06-29 13:19:12 -07:00
Types.ipynb The version of Python with Anaconda is lightly newer. 2018-08-24 16:46:18 -07:00
Types.md Type inference of Joy expressions. 2018-06-29 13:19:12 -07:00
Types.rst Type inference of Joy expressions. 2018-06-29 13:19:12 -07:00
Zipper.html Toplevel makefile docs target uses docs makefile. 2018-06-06 13:33:04 -07:00
Zipper.ipynb Toplevel makefile docs target uses docs makefile. 2018-06-06 13:33:04 -07:00
Zipper.md Toplevel makefile docs target uses docs makefile. 2018-06-06 13:33:04 -07:00
Zipper.rst Toplevel makefile docs target uses docs makefile. 2018-06-06 13:33:04 -07:00
fun_with_scan.html A bunch of docs. 2018-08-24 16:48:15 -07:00
fun_with_scan.ipynb A bunch of docs. 2018-08-24 16:48:15 -07:00
fun_with_scan.md A bunch of docs. 2018-08-24 16:48:15 -07:00
fun_with_scan.rst A bunch of docs. 2018-08-24 16:48:15 -07:00
notebook_preamble.py Change project name to Thun. 2018-04-21 21:26:41 -07:00
notebook_preamble.pyc A bunch of docs. 2018-08-24 16:48:15 -07:00
pe1.py Initial move of code from git repo. 2018-04-14 18:13:13 -07:00
pe1.txt Initial move of code from git repo. 2018-04-14 18:13:13 -07:00
repl.py Change project name to Thun. 2018-04-21 21:26:41 -07:00
with_sympy.html A bunch of docs. 2018-08-24 16:48:15 -07:00
with_sympy.ipynb A bunch of docs. 2018-08-24 16:48:15 -07:00
with_sympy.md A bunch of docs. 2018-08-24 16:48:15 -07:00
with_sympy.rst A bunch of docs. 2018-08-24 16:48:15 -07:00

README.md

Some Jupyter Notebooks and other material.

All of the notebooks are also available as HTML and Markdown files (generated using nbconvert) so you can view them without running Jupyter.

In order to run the Jupyter Notebooks you need Jupyter (obviously) and you should install Joypy. Here's an example using virtualenv from the joypy/ directory:

virtualenv --system-site-packages <DIRNAME>
. ./<DIRNAME>/bin/activate
python ./setup.py install

Once that's done you should be able to start Jupyter Notebook server with, e.g.:

python -n notebook

This starts it using the virtualenv version of Python so joy will be available. Navigate to the joypy/docs directory and the notebooks should be able to import the notebook_preamble.py file.

Table of Contents

    1. Basic Use of Joy in a Notebook
    1. Library Examples - Short examples of each word in the dictionary. Various formats.
    1. Developing a Program - Working with the first problem from Project Euler, "Find the sum of all the multiples of 3 or 5 below 1000", several forms of the program are derived.
    1. Replacing Functions in the Dictionary - Shows the basics of defining new "primitive" functions in Python or as definitions and adding them to the dictionary.
  • Factorial Function and Paramorphisms - A basic pattern of recursive control-flow.
  • Generator Programs - Using the x combinator to make generator programs which can be used to create unbounded streams of values.
  • Hylo-, Ana-, Cata-morphisms - Some basic patterns of recursive control-flow structures.
  • Quadratic - Not-so-annoying Quadratic Formula.
  • Trees - Ordered Binary Trees in Joy and more recursion.
  • Zipper - A preliminary examination of the idea of data-structure "zippers" for traversing datastructures.
  • notebook_preamble.py - Imported into notebooks to simplify the preamble code.
  • pe1.py pe1.txt - Set up and execute a Joy program for the first problem from Project Euler. The pe1.txt file is the trace. It's 2.8M uncompressed. Compressed with gzip it becomes just 0.12M.
  • repl.py - Run this script to start a REPL. Useful for e.g. running Joy code in a debugger.

Notes

One of the things that interests me about Joy is how programming becomes less about writing code and more about sound reasoning about simple (almost geometric) programs. Many of the notebooks in this collection consist of several pages of discussion to arrive at a few lines of Joy definitions. I think this is a good thing. This is "literate programming". The "programs" resemble mathematical proofs. You aren't implementing so much as deriving. The structure of Joy seems to force you to think clearly about the task in a way that is reliable but extremely flexible. It feels like a puzzle game, and the puzzles are often simple, and the solutions build on each other.