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
- Dogfood dogfood dogfood.
- Ideally I only want to have one skill
- Every time I practice that one skill
- I get better at all of my just one skill.
- I hate solving the same problem the same way the month after I did it last time.
- 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.
- I would like knowledge of the problem to proactively solve future manifestations of the same problem.
2. Harsh Realities being faced here and now
- Setup a new software individual
- Freeform knowledge representation i.e. dynamic typing
- 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
- Creating
crek
the new groceries-kb knowledgebase loadk
ing it I guesssetk
ing it as activecrefil
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
- Fruit are a type of thing
- 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.
- Add the fruit thingtype entity to the green-groceries entityfile contents allowing us to have entities of the new type, fruit as defined here.
- 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.