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

IBM Falls Below $200, Expect $199 or Less Today (Panic Threshold)
Will this be enough to topple the managers?
Links 23/07/2026: RIP John C. Dvorak, Organisation Weaponised Against J.K. Rowling
Links for the day
IBM's Press Release About Results Mentions "AI" 10 Times, "Quantum" 4 Times
Blah blah blah AI"
 
Gemini Links 23/07/2026: Databases, TLGS, and RSS Feeds
Links for the day
Links 23/07/2026: Science, Censorship, and Territorial Overreach by China
Links for the day
The State of Google Security: Blocking competition
GMail is the best!
What Happens When Windows Becomes as 'Niche' as GNU/Linux on Desktops and Laptops
Android enjoys a near-monopoly and GNU/Linux isn't far behind Windows.
IBM Cash "Down $6.3 Billion From Year-end 2025." Total Debt/Equity 188.97%. (Debt Can Exceed the Company's Real Value)
the CEO alone can make well over $0.7 billion in 5 years of salaries and bonuses
Wave of PIPs Allegedly Coming to Microsoft, Managers Trained to Terminate Employees Without Paying Severance (and Without Calling it Layoffs)
They count and cut the losses
This Looks Like the End of XBox, the Console
Sharma has become the "fall man" of Microsoft
European Patent Office (EPO) Series: A Consummate Master of the "Rigged Game"
"single-candidate shortlist"
Attempts to Change Focus and Change the Subject as IBM Shares Dwindle. Buying Revenue to Mask the Rapid Decline One More Time.
IBM used to be good at engineering, not financial engineering
Down 848% Year-on-year, Negative Cash Flow, Growing Debt (Richest Man on the Planet or Shrewd Scammer?)
The latest for Tesla is more of the same
Gemini Links 23/07/2026: SharePoint Rants and “Junk DNA” in Commented-Out Code
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, July 22, 2026
IRC logs for Wednesday, July 22, 2026
Freexian & Debian: antitrust, unfair competition against joint authors and volunteers
Reprinted with permission from Daniel Pocock
IBM in the Red After Bad Results (Shares Down in After Hours)
Will the CEO step down, retire, of what else?
Gemini Links 22/07/2026: Fault Lines, the Dark Web and Beyond, and Why Substack is Awful
Links for the day
Insult and Injury: Getting Banned, Not Just Sacked, by Microsoft
A former insider spoke about this in public 5 hours ago
Links 22/07/2026: "Dumb Phones" Not Enough to Tackle Harmful Addition, "MPEG-4 Visual's Road to Being [Software] Patent-Free"
Links for the day
Top secret: Cults inquiry submission concealed from public
Reprinted with permission from Daniel Pocock
An Hour Ahead of Alleged 'Results' (Amid Investigation Into Fraud) IBM Falls Back to New Lows
Only cents away from a 52-week low
IBM Headed for Lowest "Value" in 2 Years
In a nutshell, Krishna "can't keep it up" and IBM is now investigated for fraud
Investigation Progressing
There is nothing "funny" about receiving mortal threats for merely reporting information in a civilised country
Things We Could Do More Than Half a Century Ago But Can No Longer Accomplish
Newer is not always better
Anupa Ann Joseph & Debian defamation gang
Reprinted with permission from Daniel Pocock
State of the Invidious Project
Never forget how hostile Google can be towards freedom
Prioritising the Safety of Women is the Best Approach to Foster Diversity in Technical Communities
Debian was never "normative", but that does not mean Debian should have such low standards
IBM Will Report 'Results' Tonight (CET), It's Already Investigated for Securities Fraud
"Five of the biggest US tech giants are carrying $1.65 trillion in debt that does not show up on their balance sheets"
Hardware Has Gotten a Lot Worse, Not Just Far More Expensive
prices go up fast
Amid Claims of Microsoft Bing Layoffs It Seems Like Bing Cannot Even Hold on to Second Place
Yandex is sometimes bigger than Bing
Wikileaks Does Not Publish New Material Anymore, But Wikileaks Still Changes the World
Wikileaks has a legacy that will soon turn 20
Links 22/07/2026: Postal IRCs, PlayStation Kills Discs, Union Action Against Microsoft, "Judge Considers Tossing Databricks Patent Suit Under California anti-SLAPP Law"
Links for the day
Same 'Journalists' Who Published Fake News for IBM (Pump and Dump) Now Write Puff Pieces About the Stock Falling
the media is so compromised
They Called It "Social" and "Media", But It Turned Out to be Slop and Child Porn
Why do any sane people still use social control media?
Age of consent: DebConf26 registered sex offender in Argentina?
Reprinted with permission from Daniel Pocock
European Patent Office (EPO) Series: In the Pole Position Despite a Dismal Track Record
António Campinos is an old hand when it comes to such high-level institutional intrigue
Site a Bit Slower Due to Visitors' Load
We'll try to work out better speeds
Gemini Links 22/07/2026: Emacs, Astrology Clock, Arduino, and Rogallo v1.0.0
Links for the day
After Involvement by the Free Software Foundation (FSF) LibreTech and Quibble Gain More Participants
RMS expressed gratitude for people who worked on Quibble and improved LibreJS after many years of inactivity
The Lessons From the Assange Saga
This will not end well
Linux Foundation an Enemy of the Planet, Proponent of Pollution and Global Heating
"could the "polluters pay" model be extended to the computing environment and used to take on Microsoft and Microsofters?"
Apple Will Increase Surveillance of Customers, Record Verbal Communications Under the Guise of "Hey Hi"
Apple now drinks that same Kool-Aid
Dave Winer, Blogging Pioneer, Sells Out, Spews Out LLM Slop to Readers
Another one bites the dust [...] Now it's a slopfarm of sorts
Not Everything Can be Automated
not a new thing
GNU/Linux OS in ComorOS
Now, as in recent years or the last year, the GNU/Linux "signal" is growing significantly
Microsoft Redefines "Layoffs" to Give Smaller Tallies
It's not just calling them "buyouts" or saying people are merely "leaving" or "retiring"
IBM is Not Done Destroying Red Hat, Wait Till October 1st 2026 (More Layoffs and Bluewashing)
It's not bluewashing 'til it's 100% done
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, July 21, 2026
IRC logs for Tuesday, July 21, 2026
"LF Sex", Nothing to Do With Linux
a lot of explaining to do this week
Gemini Links 21/07/2026: Nostalgia, Shogi, and New Gemlog System
Links for the day
Guyana: GNU/Linux Rises to New High, 7%
Guyana is part of the trend
Oman: GNU/Linux Up to 7%
It was 5% last year
The Solution is Never 'Free Hosting' in Proprietary GitHub (Microsoft), the Solution is Self-Hosting
Third parties never care about your projects as much as you (yourself) care about them
Only a Matter of Time Before IBM Drops to $199 or a Lot Lower Than That
How long can IBM overload empty shells?
From GAFAM's Perspective, Jeremy Bicha Did Nothing Wrong
All is OK as long as he does not criticise monopolists and billionaires
Bluesky Was Such an Utter Failure That After 18 Months Mozilla Goes Hug a Nazi Platform That Produces Child Porn
What compels Mozilla to come back there? The child pornography scandal? The adorable leader?
GNU/Linux at Grenada Measured at 14% This Month
GNU/Linux was stuck at 0% for a long time
In WordPress, Newer is Not Better (Maybe Better Off With No WordPress at All)
To Hell with bloat and feature churn
As Slop Bubble Implodes (Inevitable), the Dishonest, Corrupt, Compromised Media Tries to Blame "China" Again (Like it Did With "DeepSeek" in Past Years)
Here we go again. We've been there before. Same spin, this time not "DeepSeek" though.
Lots of Microsoft Just Loses Money, Not Earning Money
Due to profitability challenges it's hard to believe Microsoft will ever find a buyer for XBox
Red Hat (IBM) Has Long 'Reassigned' (Bluewashed) Red Hat Staff to Ruin Fedora, Now It Does the Same to GNOME
What next from IBM's Krishna?
Links 21/07/2026: Google Stagnating, Slop 'Apps' Are "Flooding Apple’s App Store"
Links for the day
Gemini Links 21/07/2026: OPNSense Upgrade Problems, Zilog Z80 at 50, and Lessons From Terminator
Links for the day
IBM Lawsuits Over Alleged Fraud Are Piling Up
We'll keep an eye on the lawsuits
Arianna Taite on Odds of Australian (Daniel Pocock) Winning Clacton By-Election
His detractors somehow try to twist or frame him (Pocock) as an impediment to women while the exact opposite is true
This Coming Weekend Marks 4 Years Since We Dumped Content Management Systems (CMSs) in Favour of Static Site Generators (SSGs)
the first page dated July 25
Slop's Latest Casualty: The Credibility of Linus Torvalds
If you care about millionaires and billionaires, follow Torvalds (he is already in that "club")
Techrights Will Become More Productive (More Output) Over Time
Big stories about to land
Touch Grass
Happiness involves what humans have evolved to appreciate, not what humans create to sedate the mind (like skinnerboxes)
The Cyber Show on Technology Having Become a Tool of Mass Psychosis, Not Enablement or Emancipation
Technology as mass psychosis
The Rumour Said That a Second Wave of Microsoft Layoffs Would Come This Week (Ahead of Fake 'Results'), Maybe Tomorrow
Let's wait and see how "MSM" unfold
To Wikipedia, "Notability" is Just an Excuse to Hail People Who Serve Billionaires While Marginalising or Defaming the Rest
Wikipedia is an advertising space
Our Series About Solicitors Regulation Authority (SRA) and SLAPPs Will Resume Soon
Originally, in 2025, we gave ourselves 6 years (until 2031) to cover these issues, but we've seen since extended that to 10 years (until 2036) because of the amount of material we have
European Patent Office (EPO) Series: The EPO Transparency Gap
Despite the "European" tag in the organisation's name, the European Union has no jurisdiction over the European Patent Organisation
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Monday, July 20, 2026
IRC logs for Monday, July 20, 2026
Links 20/07/2026: Lashes for Songs in Iran, Kurdish Language at Risk
Links for the day
Gemini Links 21/07/2026: The Boss Baby (2017) and 2026 Old Computer Challenge Epilogue
Links for the day