Pawn-75 Useage As It Begins

Table of Contents

I personally am using my Sandewall's software-individuals just like this right now.

1. Goals

  1. Dogfood dogfood dogfood.
    1. Ideally I only want to have one skill
    2. Every time I practice that one skill
    3. I get better at all of my just one skill.
  2. I hate solving the same problem the same way the month after I did it last time.
  3. It is not acceptable to be able to remember or look up or reverse engineer how it worked out last time. This has the surprising implication that writing a program or package is not very good in that it is a way to do more work in the future, rather than an alleviation thereof.
  4. I would like knowledge of the problem to proactively solve future manifestations of the same problem.

2. Harsh Realities being faced here and now

  1. Setup a new software individual
  2. Freeform knowledge representation i.e. dynamic typing
  3. Do something

3. Living those

3.1. Cloning Pawn-75 and "making an individual"

git clone https://codeberg.org/tfw/pawn-75.git
mkdir -p leocommunity/
cp -r Pawn-75/Pawn-75 leocommunity/Screwlispbot

3.2. Running Screwlispbot

Sandewall's system uses relative paths to figure out what individual's which agent is acting and what they can do.

cd leocommunity/Screwlispbot/demus/Process/main/
clisp -E ISO-8859-1 -modern

demus is the small-demo agent. Now in lisp

(load #p"../../../remus/Startup/cl/acleo.leos")
(cle)

remus is the kernel who enlivens other agents. Now we are in the read-line based executive and probably see the ses.001) prompt.

3.3. Knowledge About Groceries

crek groceries-kb
loadk groceries-kb
setk groceries-kb
crefil green-groceries
  1. Creating crek the new groceries-kb knowledgebase
  2. loadk ing it I guess
  3. setk ing it as active
  4. crefil creating an entityfile for green-groceries

3.3.1. A fruit type

put fruit type thingtype
put fruit attributes {has-colors has-mouthfeel}
addmember (get green-groceries contents) fruit
writefil green-groceries
  1. Fruit are a type of thing
  2. The attributes defined as of interest here for whatever a fruit is are has-colors, implicitly a set, and has-mouthfeel, I guess a symbol.
  3. Add the fruit thingtype entity to the green-groceries entityfile contents allowing us to have entities of the new type, fruit as defined here.
  4. Writing that change

3.3.2. Adding an apple

put apple type fruit
put apple has-colors {green red yellow}
put apple has-mouthfeel crisp
addmember (get green-groceries contents) apple
writefil green-groceries

Hopefully this was self-explanatory with reference to the fruit type we added.

3.3.3. Sequence of actions on a session state variable

Sandewall observes that this is something people often want to see as doable that is basically less useful, but you can do it, so here.

ssv .to-add banana
ssv .colors {yellow, green}
ssv .mouthfeel mushy
soact [put .to-add type fruit] [put .to-add has-colors .colors] [put .to-add has-mouthfeel .mouthfeel]
addmember (get green-groceries contents) .to-add
writefil green-groceries

I ended up writing my own version of script entities, but soact demonstrates the possibility of a script of actions "just like I entered each one in sequence until finished or a failure", as well as using .session-state-variables. Note the ssvs are inlined eagerly.

If you have a way of repeating previous commands easily as I imagine your lisp environment does, this could be used to add pears after bananas just by changing the ssvs. Note I am deliberately avoiding Defining New Actions here.

Notably pressing up probably works for getting previous commands in gnu clisp, which we are using.

3.3.4. green-groceries looks like

---------------------------------------------------------
-- green-groceries

[: type entityfile]
[: latest-written "2025-04-25/07:44.+12"]
[: contents <green-groceries fruit apple banana pear>]
[: changed-since-archived t]
[: nullvalued {has-purpose has-author requires mustload removed-entities leos-extension has-profile overlay-on overlay-types overlay-own leos-use dont-display sections local-ents purpose author latest-archived-entity latest-rearchived}]

---------------------------------------------------------
-- fruit

[: type thingtype]
[: attributes {has-colors has-mouthfeel}]
[: nullvalued {description subsumed-by has-attributes has-categories create-proc registr-proc latest-rearchived}]

---------------------------------------------------------
-- apple

[: type fruit]
[: has-colors {green yellow red}]
[: has-mouthfeel crisp]
[: latest-rearchived nil]

---------------------------------------------------------
-- banana

[: type fruit]
[: has-colors {yellow green}]
[: has-mouthfeel mushy]
[: latest-rearchived nil]

---------------------------------------------------------
-- pear

[: type fruit]
[: has-colors {green brown}]
[: has-mouthfeel rough]
[: latest-rearchived nil]

ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

4. Toodles.

Well, let us leave it there for now. We can persistingly store knowledge in our own software-individual.

Hope to see you at the Lispy Gopher Climate every Wednesday 000UTC on https://anonradio.net:8443/anonradio with livechat in lambda.moo.mud.org. I toot just before the show starts on Mastodon: https://mastodon.sdf.org/@screwtape.

Author: screwlisp

Created: 2025-04-25 Fri 19:49

Validate