Bonum Certa Men Certa

How To Write fig Programs

By figosdev

Young programmer



Summary: This is the second in a two-part series on fig

This is the second in a two-part series on fig, an educational language that I use for other practical purposes.



Because I designed fig for computerphobes, you may decide it has a few odd qualities. One example is that it uses a "plus" command instead of + and a "minus" command instead of -. It also has an inline Python feature, which can be used to import Python functions into fig programs, as well as allow more traditional expressions to be evaluated, if you prefer:

python
    import math
    evaluated = math.sqrt(p ** int(s / 2.5))
    fig


Fig has its own function definition command, which you can use to create functions with Python-like scope:

function greet whom
    now = "Hello, " plus whom ; print
    fig


Fig is the standard command that in Python would be unindenting, and it is named for "return to fig programming" after inline Python. In most instances, you can use "next" if you prefer:

function greet whom
    now = "Hello, " plus whom ; print
    next


You can use this as a wrapper around a python feature like this:

function pi
python
    from math import pi as ppi ; return ppi
    fig
    fig   



r = 50 circumference = pi times 2 times r ; print


In fig, the only mandatory punctuation in syntax is "quotes for strings" and # hashes for comments. Decimal points work the same way they do in Python.

These characters are optional, and for the most part can be freely used to help visually organise your code: = ( ) | ; : ,

The vertical bar can be used to introduce students to Bash. With the exception of a few commands that start on their own line -- such as for, next, forin, ifmore, ifless, iftrue, ifequal, else, break, while, wend -- nearly all fig commands share a line with a variable on the far left:

height = 60 ; plus 5 ; str ; len ; print


height is 60, it adds 5 to become 65, is converted to a string: "65" then the length is found, and 2 is printed to the screen.

As in Python, there are a few ways to create arrays:

titles = "" ; arr ; times 100


This will create an array of 100 string items. you can add items like this:

titles plus "A History of Red Hat: From Cottage Industry to Corporation"


Each time a variable is used on the left, it is set to 0-- arrays are the exception:

now 5 print # prints 5
now print # prints 0
now 5 arr 
now print # prints [5]


You can create an array using split:

ingredients = "milk eggs sugar flour water" ; split ingredients " "


Unlike Python, split and join both put the variable to split or join first -- then the thing to split or join it with:

ingredients = "milk eggs sugar flour water" ; split ingredients " "
ingredients = join ingredients " " ; print


Arrays are 1-based (apologies purists, it's an educational language) and for loops are started with count-variable, start-var, stop-var, step-var:

ingredients = "milk eggs sugar flour water" ; split ingredients " "
howmany = ingredients ; len
for each, 1, howmany, 1
    now = each ; print
    next


Forin loops are started with value-tracking-variable, array:

ingredients = "milk eggs sugar flour water" ; split ingredients " "
forin each, ingredients
    now = each ; print
    next


(nextin can be used instead of next)

Files can be opened with arropen, and webpages with arrcurl:

urls = arropen "urls.txt"
buffer = arr ; mid 1 0 # zero-length array
newline = 10 ; chr 



forin each urls iftrue each geteach arrcurl each ; join geteach newline buffer plus geteach fig nextin


Failed downloads create an error, so add error trapping (no, this is not how you should do this in python -- it is just a simple introduction to error trapping)

try
        geteach arrcurl each ; join geteach newline
        buffer plus geteach
except
        geteach ""
        resume


Finally, you can open geany using fig:

openleafpad = "leafpad &" shell


Or get the output of shell commands into an array:

textfiles = "ls *.txt" arrshell


To compile your fig program, give it a .fig extension and run it this way:

$ fig46.py program.fig



$ ./program.fig.py


To get help on a command, type part of it into the help feature:

$ fig46.py help
print


It will return all commands containing "print" in the name. hit enter instead to list all commands.

This will not work:

$ fig46.py help print


This will:

$ echo print | fig46.py help


All commands:

$ echo | fig46.py help


Fig is based on Python 2 -- as much as the Python Foundation is trying to kill Python 2, I think it is a much friendlier language than the latest Python.

PyPy is Python 2 compatible, and is the interpreter fig will most likely to be paired with in the future. There are two factors being waited on: PyPy is planning to support Pygame (an optional component for fig that lets it do real graphics) and Python 2 is still supported by many distros, not least of all Debian, Devuan and Refracta.

The Python Foundation will officially drop Python 2 on January 1. If you love it anyway, try PyPy.

To make fig use PyPy instead, change the two lines that contain the string "env python2" to "env pypy" and that should do it. You can download fig 4.6 here.

Happy Coding!

Licence: Creative Commons cc0 1.0 (public domain)

Recent Techrights' Posts

The Legacy of Gerstner (Rapid Destruction) Continues at IBM
They say IBM never recovered from Gerstner, who instead of saving the companies (IBM and others he claims credit for) set up a collision course of rapid shrinkage
'Cancel Culture' Isn't About Empathy, It's About Making Good People Homeless
Seeing what they did to RMS, remember that those "concern trolls" are about everything other than ethics and morals
Daniel Pocock in The Nerve
Lots of publicity owning to the enrollment
SLAPP Censorship - Part 148 Out of 200: The Manosphere
Those people don't just threaten our national sovereignty, press, democracy etc. They also endanger women everywhere.
 
Links 14/08/2026: Slop 'Music' Causing Problems, Slop Data Centre Contractor Unpaid (Massive Debt), and The Cyber Show Says We're "Colonised By Wankers"
Links for the day
Fake Growth of Social Control Media is Misleading
nowadays people look for alternatives - ones not controlled by MElon, CPC, and Kapo-Berg
statCounter: Windows Down to All-Time Low of 25%, Android Leads the Pack, GNU/Linux About to Leapfrog Apple, Overtaking MacOS
The situation was very different in past years
Microsoft's Mass Layoffs (Including 'Voluntary' Secret Layoffs) Take Their Toll on Seattle
How much longer can they hide their crises?
Planet Fedora ("Fedora People") is Just IBM Staff, Former IBM Staff, and LLM Slop
this is what Fedora boils down to now
Explanation of What Will Happen to Red Hat (and Other Acquired Companies) After August
In short, a lot will be scuttled; history shows it happens over and over again
SLAPP Censorship - Part 149 Out of 200: It Took a Long Time to Show What Jason Arday (at Cambridge) and Harvey Weinstein (in Hollywood) Really Were
Really bad when society endures abuse because the abusers silence their exposers
Gemini Links 14/08/2026: 32-bit RISC-V and BlackBerry
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Thursday, August 13, 2026
IRC logs for Thursday, August 13, 2026
'Voluntary' Layoffs (a Form of Silent Layoffs): Microsoft Global Voluntary Separation Agreement (GVSA) in August 2026 and September 2026
Today and yesterday
Microsoft Sees Windows on Fire, Pours Gasoline Over It
The latest move from Microsoft defies logic
Racing Towards "Woman Zero"
They don't seem to value women
Counters in Clacton Commence in 3 Hours at Clacton Leisure Centre
Even a few hundreds of votes for Pocock would be considered a great success
Swiss army to attack 2,900 domain name owners? Cult of ETH Zurich & Debian
Reprinted with permission from Daniel Pocock
IBM's Bluewashing of Confluent Carries on, More Layoffs Coming, Same Likely Applicable to Red Hat
September 30 is a day before this next phase of bluewashing at Red Hat
Headlines About Microsoft and Ransomware, But They're "SPONSORED FEATURES" at The Register MS
The Register MS habitually publishes LLM slop too
Links 13/08/2026: K-pop Suicide Due to Social Control Media, Legal Problems for Facebook Over Safety
Links for the day
Why Support Daniel Pocock
Our readers who come from IBM and the EPO are certainly familiar with the tactics of censorship and what that sort of censorship leads to
Gemini Links 13/08/2026: Health, Partial Eclipse Sketches, and Guilelessness
Links for the day
GNU/Linux Reaches 10% "Market Share" in statCounter
As of this morning
15% of IBM Marked for Potential Termination, PIPs are the "New Layoffs" (or RAs) at IBM
IBM is a dying company, but it does not want the press to say this or for people to understand that
Links 13/08/2026: "The Rise of the Measles-Industrial Complex" and Spotify Curbs Slop
Links for the day
Daniel Pocock on Australia's 9News (Nine Entertainment)
This gives visibility to software and technology issues
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, August 12, 2026
IRC logs for Wednesday, August 12, 2026
Gemini Links 12/08/2026: Losing a Child, "The OpenWeb Needs Diversity", and Gmail Woes
Links for the day
Voluntary' Layoffs and 'Proper' Layoffs at IBM This Year
When will IBM management confess that 15% of staff is already marked for potential removal?
Links 12/08/2026: Trouble in Proprietary Chaffbot Company 'Open' 'AI' and Slop "Investors Are Suddenly Quaking in Their Boots"
Links for the day
Daniel Pocock in National News in Australia the Day of the Election
"Posted 20m ago" (Thursday in Australia), it's timed nicely to help illuminate Pocock and give him last-minute exposure
The Register MS Has Just Published Slop Spam for NVIDIA and HP, It Says "AI" 43 Times
As usual, The Register MS ought to be ashamed of itself for participating in it
The Slop Debt (Trillions of Dollars, Money That Does Not Exist) is Causing the Collapse of GAFAM et al
This slop hype will end up like "metaverse", except "metaverse" never ended up justifying trillions of dollars in "investment"
Simpler Means More Reliable
The simple old way of local storage and local backups is still the best
Clownflare and statCounter See GNU/Linux at ~8% in Norway
Norway has long championed GNU/Linux compared to the rest of Europe
Social Control Media is the Opposite of Information
That says a lot about social control media
Clacton manifesto: Reform UK hacking, leaks, raw sewage & 8GB Swiss Archive
Reprinted with permission from Daniel Pocock
statCounter Today: ChromeOS + GNU/Linux Measured at 10.98% Globally (Desktops and Laptops)
Clownflare does not quite refute this
The Register MS Has Just Published Fake Article About Replacing Linux With Proprietary Google System, "Sponsored by ASUS."
All of those things are proprietary GAFAMware
Links 12/08/2026: "X’s Advertising Business Continues to Tank", "Stop Feeding the Billionaires"
Links for the day
Lack of Empathy Rampant in the Sector
Sociopaths are sociopaths. They cannot help themselves
Before the "Big Tech" (That Almost Everybody is Forced to Use) Was Controlled by Men Who Hate Women
Such rejection and even hatred of women qualifies/enshrines oneself as an "incel"- a dangerous and violent online cult
In Defence of Hoarding CDs, More So When Digital Restrictions (DRM) Come to More 'Content' and Even Offline/Physical Media Won't Work When Some Remote Server Says "No" (or Goes Offline)
made to serve and entertain owners, not to allow companies like Sony and Microsoft subjugate owners
Clownflare: In Finland, Birthplace of Linux Kernel, GNU/Linux Now Bigger Than Apple's MacOS
It's not just in Finland where we see such trends
More Mass Layoffs Due to Monumental Debt Excused as "Investment" (in Slop)
They're maxing up the private debt and their country is already insolvent
METRO Interviews Daniel Pocock a Day Before Election
The article is behind a wall that blocks people who block ads
Enshittification More Than a Century Ago
Is enshittification more than a century old?
GNU in 1991 (35 Years Ago): Compiler and Lots More Ready, Linux Now Becoming 'Vibe Heap' (Slop Replaces Real Code)
Without curbs in place, many Linux developers will flee
Company-Wide 'Reorg' ('Redundancies') at IBM, Mark October 1st 2026 in the Calendar
Is Oct 1 the new Apr 1?
SLAPP Censorship - Part 147 Out of 200: The SLAPP Series is 'Slow' Because Timing Matters
It is important to stress that after this series is finished there will be many more series, with some of them showing raw evidence of what we've been illuminating and telling
Even ZDNet Accepts That "Market Share" of GNU/Linux May Have Doubled on Desktops and Laptops
GNU/Linux is definitely growing, and quite quickly in fact
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, August 11, 2026
IRC logs for Tuesday, August 11, 2026
Microsoft Layoffs and Shutdowns Continue This August, Morale Low, Employees Set Up Giant Inflatable Rat to Protest Against CEO
nothing demonstrates their anger better than what they did to the CEO
Gemini Links 12/08/2026: Sophomore Slump, Mandatory Phone Addiction, and Vintage Web Game Gallery
Links for the day