<feed xmlns='http://www.w3.org/2005/Atom'>
<title>aup/examples/tasks.aup, branch master</title>
<subtitle>Declarative systems language and compiler targeting verified Pure modules.
</subtitle>
<id>http://git.yeowoo.org/aup/atom?h=master</id>
<link rel='self' href='http://git.yeowoo.org/aup/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/'/>
<updated>2026-09-30T14:23:30Z</updated>
<entry>
<title>Give aup a bool: true and false, and conditions that take one</title>
<updated>2026-09-30T14:23:30Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-30T14:23:30Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=b8e3faaf1a3766591d31e6c5411c9e4fcc59a7a4'/>
<id>urn:sha1:b8e3faaf1a3766591d31e6c5411c9e4fcc59a7a4</id>
<content type='text'>
A condition was any number, non-zero being true: done was a number field,
a view showed 1 for true, and done + 1 was no type error. Now bool is its
own type (Pure 016, module format v6):

- true and false; comparisons, text comparisons, has and ! &amp;&amp; || give a
  bool. Bools are equal or not; they are no numbers and have no order.
- if, conditional expressions, require, where (folds, walks, filtered
  tables) take a bool. Given a number, the diagnostic says how to make
  one: "if takes a bool, not a number: compare it, as in n != 0".
- Bool states (state on = false), record fields (done = false), message,
  output and argument fields (ok: bool), lets, views and columns.
  Interpolation writes true or false. A list is not keyed by a bool.
- The examples' flags are bools (charge's holding, toggle's visible,
  tasks' done).

Checks: 20 bool diagnostics, a form using bools everywhere, an app whose
every output shows true and false (states, items, views, columns, text)
and whose replacement turns a number into a bool and back. Models hold
bools and compare them strictly: Python's True == 1 no longer hides a 1
where a true belongs. Generated programs are typed, numbers and bools.
</content>
</entry>
<entry>
<title>Add fns and libraries</title>
<updated>2026-09-25T14:14:08Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-25T14:14:08Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=c298c2eec0b7ec0fcdacb8f661a9da3c184d2960'/>
<id>urn:sha1:c298c2eec0b7ec0fcdacb8f661a9da3c184d2960</id>
<content type='text'>
fn name(params) = value declares one expression, inlined where it is
called: arguments are computed once onto the stack and the body reads them
with PICK, so a fn costs no runtime call and keeps Pure's bound on work.
Parameters take any kind of value; recursion is a compile error.

use name reads name.aup beside the source or from AUP_PATH. A library
declares only fns and uses, sees only its parameters, and is called as
name.fn(...). Diagnostics now carry the file they are in, and the
compiler takes a loader so that sources come from the host.

examples/words.aup is such a library; examples/tasks.aup uses it and still
matches its reference model.

</content>
</entry>
<entry>
<title>Add conditional expressions and table views</title>
<updated>2026-09-25T14:05:58Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-25T14:05:58Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=91aa0afcd34cff345f1f7293d82fec7d00082d8b'/>
<id>urn:sha1:91aa0afcd34cff345f1f7293d82fec7d00082d8b</id>
<content type='text'>
if c { a } else { b }, with else-if chains, is an expression anywhere a
value goes. Only the chosen branch runs, every branch gives the same type,
and nesting that would pass Pure's limit of 8 value-carrying joins is a
compile error.

view name = each row in list { column = value ... } declares a table with
a row per item; columns read their row as an index of the list. An index
now reads and writes its item's fields directly (at.title, at.done = 1),
so 'position' cannot name a record field.

examples/tasks.aup gains conditional views and a board table and still
matches its reference model; a new check confirms the unchosen branch is
never computed.

</content>
</entry>
<entry>
<title>Add records, lists and indices</title>
<updated>2026-09-25T12:34:43Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-25T12:34:43Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=a459632cbb93b46c013556465a9e69b0baad745a'/>
<id>urn:sha1:a459632cbb93b46c013556465a9e69b0baad745a</id>
<content type='text'>
A record declares named number and text fields with defaults. A list of a
record is runtime-owned state, and an index of a list always names one of
its items: it follows its item across inserts and removes and stops at the
ends. Items are read and changed by field (tasks[at].title), appended or
inserted as record values whose missing fields take defaults, and removed
by index. Using an index of another list is a compile error.

examples/tasks.aup matches a Python reference model over 4,800 random steps,
including events that fail on an empty list. Replacing it with a module
whose record gained and reordered fields keeps every item.

</content>
</entry>
</feed>
