Rebuilt docs.
This commit is contained in:
parent
c4cdbb0ef3
commit
b7954a39a2
|
|
@ -125,7 +125,7 @@ of these:</p>
|
|||
</ul>
|
||||
<h3>Definitions</h3>
|
||||
<p>Thun can be extended by adding new definitions to the
|
||||
<a href="https://git.sr.ht/~sforman/Thun/tree/trunk/item/implementations/defs.txt">defs.txt</a>
|
||||
<a href="https://ariadne.systems/gogs/sforman/Thun/src/trunk/implementations/defs.txt">defs.txt</a>
|
||||
file and rebuilding the binaries. Each line in the file is a definition
|
||||
consisting of the new symbol name followed by an expression for the body
|
||||
of the function.</p>
|
||||
|
|
|
|||
|
|
@ -20,26 +20,26 @@ programming language created by Manfred von Thun that is easy to use and
|
|||
understand and has many other nice properties. <strong>Thun</strong> is a dialect of
|
||||
Joy that attempts to stay very close to the spirit of Joy but does not
|
||||
precisely match the behaviour of the original version written in C. It
|
||||
started as a Python project called "Joypy", but after someone claimed that
|
||||
name on PyPI before me I renamed it to Thun in honor of Manfred Von Thun.
|
||||
Now there are interpreters implemented in several additional languages
|
||||
(C, Nim, Prolog, Rust).</p>
|
||||
started as a Python project called "Joypy", but after someone claimed
|
||||
that name on PyPI before me I renamed it to Thun in honor of Manfred Von
|
||||
Thun. Now there are interpreters implemented in several additional
|
||||
languages (C, Elm, Nim, OCaml, Prolog, and Scheme).</p>
|
||||
<p>Joy is:</p>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Purely_functional_programming">Purely Functional</a></li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Stack-oriented_programming_language">Stack-based</a></li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Concatenative_programming_language">Concatinative</a>
|
||||
(See also <a href="http://www.concatenative.org/wiki/view/Concatenative%20language">concatenative.org</a>)</li>
|
||||
<li><a href="https://joypy.osdn.io/notebooks/Categorical.html">Categorical</a></li>
|
||||
<li><a href="notebooks/Categorical.html">Categorical</a></li>
|
||||
</ul>
|
||||
<p>The best source (no pun intended) for learning about Joy is the
|
||||
information made available at the
|
||||
<a href="http://www.latrobe.edu.au/humanities/research/research-projects/past-projects/joy-programming-language">website of La Trobe University</a>
|
||||
| <a href="https://www.kevinalbrecht.com/code/joy-mirror/">(mirror)</a>
|
||||
which contains source code for the original C interpreter, Joy language source code for various functions,
|
||||
and a great deal of fascinating material mostly written by Von Thun on
|
||||
Joy and its deeper facets as well as how to program in it and several
|
||||
interesting aspects. It's quite a treasure trove.</p>
|
||||
<p>The best source for learning about Joy is the information made available
|
||||
at the <a href="http://www.latrobe.edu.au/humanities/research/research-projects/past-projects/joy-programming-language">website of La Trobe University</a>
|
||||
| <a href="https://www.kevinalbrecht.com/code/joy-mirror/">(mirror)</a> which
|
||||
contains source code for the original C interpreter, Joy language source
|
||||
code for various functions, and a great deal of fascinating material
|
||||
mostly written by Von Thun on Joy and its deeper facets as well as how to
|
||||
program in it and several interesting aspects. It's quite a treasure
|
||||
trove.</p>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Joy_%28programming_language%29">Wikipedia entry for Joy</a></li>
|
||||
<li><a href="http://www.latrobe.edu.au/humanities/research/research-projects/past-projects/joy-programming-language">Homepage at La Trobe University</a>
|
||||
|
|
@ -51,81 +51,37 @@ interesting aspects. It's quite a treasure trove.</p>
|
|||
two integers and increments or decrements one of them such that the new
|
||||
pair of numbers is the next coordinate pair in a square spiral (like the
|
||||
kind used to construct an <a href="https://en.wikipedia.org/wiki/Ulam_spiral">Ulam Spiral</a>).
|
||||
For more information see <a href="/notebooks/Square_Spiral.html">Square Spiral Example Joy Code</a>.</p>
|
||||
<pre><code>square_spiral [_p] [_then] [_else] ifte
|
||||
For more information see <a href="notebooks/Square_Spiral.html">Square Spiral Example Joy Code</a>.</p>
|
||||
<pre><code>square_spiral [p] [then] [else] ifte
|
||||
|
||||
_p [_p0] [_p1] and
|
||||
_p0 [abs] ii <=
|
||||
_p1 [<>] [pop !-] or
|
||||
p [p0] [p1] and
|
||||
p0 [abs] ii <=
|
||||
p1 [<>] [pop !-] or
|
||||
|
||||
_then [ !-] [[++]] [[--]] ifte dip
|
||||
_else [pop !-] [--] [++] ifte
|
||||
then [ !-] [[++]] [[--]] ifte dip
|
||||
else [pop !-] [--] [++] ifte
|
||||
</code></pre>
|
||||
<p>It might seem unreadable but with familiarity it becomes as legible as any other notation.</p>
|
||||
<h2>Project Hosted on <a href="https://git.sr.ht/~sforman/Thun">SourceHut</a></h2>
|
||||
<p>It might seem unreadable but with familiarity it becomes as legible as
|
||||
any other notation.</p>
|
||||
<h2>Project Hosted on <a href="https://ariadne.systems/gogs/sforman/Thun">Ariadne Systems</a></h2>
|
||||
<ul>
|
||||
<li><a href="https://git.sr.ht/~sforman/Thun">Source Repository</a>
|
||||
<li><a href="https://ariadne.systems/gogs/sforman/Thun">Source Repository</a>
|
||||
(<a href="https://github.com/calroc/Thun">mirror</a>)</li>
|
||||
<li><a href="https://todo.sr.ht/~sforman/thun-der">Bug tracker</a>
|
||||
<li><a href="https://ariadne.systems/gogs/sforman/Thun/issues">Bug tracker</a>
|
||||
(<a href="https://osdn.net/projects/joypy/ticket/">old tracker</a>)</li>
|
||||
<li><a href="https://osdn.net/projects/joypy/forums/">Forums</a></li>
|
||||
<li><a href="https://osdn.net/projects/joypy/lists/">Mailing list</a></li>
|
||||
</ul>
|
||||
<h2>Documentation</h2>
|
||||
<p>This document describes Joy in a general way below, however most of the
|
||||
documentation is in the form of <a href="/notebooks/index.html">Jupyter Notebooks</a>
|
||||
<p>The <a href="Thun.html">Thun specification</a> document describes the Thun dialect,
|
||||
however most of the
|
||||
documentation is in the form of <a href="notebooks/index.html">Jupyter Notebooks</a>
|
||||
that go into more detail.</p>
|
||||
<p><strong><a href="/notebooks/index.html">Jupyter Notebooks</a></strong></p>
|
||||
<p>There's also a <a href="/FuncRef.html">Function Reference</a> that lists each
|
||||
<p><strong><a href="notebooks/index.html">Jupyter Notebooks</a></strong></p>
|
||||
<p>There's also a <a href="FuncRef.html">Function Reference</a> that lists each
|
||||
function and combinator by name and gives a brief description. (It's
|
||||
usually out of date, I'm working on it.)</p>
|
||||
<p><strong><a href="/FuncRef.html">Function Reference</a></strong></p>
|
||||
<h3>Building the Docs</h3>
|
||||
<p>Run <code>make</code> in the <code>docs</code> directory. (This is a lie, it's more complex than
|
||||
that. Really you need to run (GNU) make in the <code>docs/notebooks</code> and
|
||||
<code>docs/reference</code> dirs first, <em>then</em> run <code>make</code> in the <code>docs</code> directory.)</p>
|
||||
<h2>Directory structure</h2>
|
||||
<pre><code>Thun
|
||||
|-- LICENSE - GPLv3
|
||||
|-- README.md - this file
|
||||
|
|
||||
|-- archive
|
||||
| |-- Joy-Programming.zip
|
||||
| `-- README
|
||||
|
|
||||
|-- docs
|
||||
| |-- dep-graphs - Generated dependency graphs.
|
||||
| |-- html - Generated HTML docs.
|
||||
| |-- notebooks - Jupyter Notebooks and supporting modules
|
||||
| `-- reference - Docs for each function.
|
||||
|
|
||||
|-- implementations
|
||||
| |-- defs.txt - common Joy definitions for all interpreters
|
||||
| |-- C - interpreter
|
||||
| |-- GNUProlog - interpreter
|
||||
| | type inference
|
||||
| | work-in-progress compiler
|
||||
| |
|
||||
| |-- Nim - interpreter
|
||||
| |-- Ocaml - work-in-progress interpreter
|
||||
| `-- Python - interpreter
|
||||
|
|
||||
`-- joy_code - Source code written in Joy.
|
||||
`-- bigints
|
||||
`-- bigints.joy
|
||||
</code></pre>
|
||||
<h2>Installation</h2>
|
||||
<p>Clone the repo and follow the instructions in the individual
|
||||
<code>implementations</code> directories. There isn't really any installation. You
|
||||
can put the binaries in your <code>PATH</code>.</p>
|
||||
<p>(I had the Python package set up to upload to PyPI as "Thun", but the
|
||||
whole Python distribution story seems unsettled at the moment (2023) so
|
||||
I've gone back to the <em>old ways</em>: there is a single script <code>joy.py</code>
|
||||
that gets modified (<code>defs.txt</code> is inserted) to create a <code>joy</code> script
|
||||
that uses the "shebang" trick to pretend to be a binary. In other words,
|
||||
run <code>make</code> and put the resulting <code>joy</code> script in your PATH, if that's
|
||||
what you want to do. In a year or two the Python folks will have sorted
|
||||
things out and we can go back to <code>pip install Thun</code> or whatever.)</p>
|
||||
<p><strong><a href="FuncRef.html">Function Reference</a></strong></p>
|
||||
<h2>Basics of Joy</h2>
|
||||
<p>The original Joy has several datatypes (such as strings and sets)
|
||||
but the Thun dialect currently only uses four:</p>
|
||||
|
|
|
|||
Loading…
Reference in New Issue