ANN: heavy updates to inca, apl calculator in (overly-)terse C

L

luser droog

The inca interpreter has incorporated strange new features
in the area of programmability and accessibility.
It is available in an online version compiled to javascript
courtesy of Thomas Baruchel http://baruchel.hd.free.fr/apps/apl/inca/
as well as the master repo
https://github.com/luser-dr00g/inca

Essentially, the change over the previous announcement is
the new "command-string" type, and special-syntax functions
to make more use of it.

The new colon special monadic function consumes the remaining
subexpression's code representation in an array. Thus

f<:x+y

Sets f to the function x+y. f may be called as a procedure,
where x and y refer to global variables with the semicolon
(execute operator)

x<2
y<3
;f
5

Or, it may be called functionally, where x and y refer to
local arguments with the double-quote function.

2"f3
5

Or, a monadic function, using only the y argument may be
called with the single-quote function.

g<:y*2
'g3
9

The quote and double-quote functions also accept (as special
syntax) a parenthesized expression in place of the variable
(or other expression yielding the command-string-type array).
This expression may use x and y as arguments as with a
"named" function.

'(y*2)3
9

And this presents enough to define recursive functions,
like Fibonacci:

f<:;(y>1){(<:1);<:('fy-1)+'fy-2

Where the brace { is the "from" function, or [index]array,
and here the index is a Boolean zero or one which indexes
two expressions, :1 and :('fy-1)+'fy-2. These are boxed
with angle-bracket < so they can be combined into a
single array with semicolon ; to be selected from.

The interpreter also defines the variable a to contain
a boxed-array of command-string arrays which represent
the argv strings passed to the program, allowing inca
to access external data files via shell `cat ...` expansion.

The C code is getting pretty gawdoffal, but the language
itself is proving to be lots of fun to play with. YMMV.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,015
Latest member
AmbrosePal

Latest Threads

Top