Skip to content
/ idm Public

It doesn't matter: A toy implementation of an APL-like interpreter

License

Notifications You must be signed in to change notification settings

santiaago/idm

Repository files navigation

idm

idm (it doesn't matter) is a toy implementation of an APL interpreter.

I want to build a toy implementation on an APL-like interpreter. I got this idea after watching this video from Rob Pike.

can do:

numbers

./idm
    1
1
      -1
-1
    - 1
SYNTAX ERROR
    1 + 1
2
      -1 + 1
0
    1 - 1
0
    1 + 2 + 3 - 10
-4
	  1 + -1
0
  	7 ** 3
343
  	7 max 3
3
  	7 min 3
3

variables

    a = 2
2
    a
2
    a + 1
3
      1 + a
3
      a + a + a + a
8
    b = 1
1
    a + b
3
    a = b
1
    a + b + 10
12

vectors

    1 2 3 4
1 2 3 4
  	1 2 3 4 + 1 2 3 4
2 4 6 8
  	1 2 3 4 - 1 2 3 4
0 0 0 0
      1 -1
1 -1
      -1 -1 -1 + 1 1 1
0 0 0
  	1 2 3 4 * 1 2 3 4
1 4 9 16
    1 2 3 4 ** 2 2 2 2
1 4 9 16
      1 2 3 4 max 3 4 1 5
3 4 3 5
      1 2 3 4 min 3 4 1 5
1 2 1 4
    +/ 1 2 3
6
    +\ 1 2 3
1 3 6
    */ 1 2 3
6
    *\ 1 2 3
1 2 6

##todo:

./idm
    2 ** -1
0.25
a = 1 2 3 4
1 2 3 4
1 1 0 1 and 1 0 1 1
1 0 0 1
  	1 1 0 1 or 1 0 1 1
1 1 1 1
  	iota 5
1 2 3 4 5
  	y = 2 x iota 5
2 4 6 8 10
  	or/ 1 0 1 1
1
and/ 1 0 0 0
0
max/ 1 2 4 2
4
min/ 1 2 4 3
0
y[2]
6
dim y
5
y[:2]
2 4
y[2:]
6 8 10
  	y[-1]
10
y[-2:]
2 4 6
  	3 shape 1
1 1 1
  	m = 5 5 shape 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
  	m + m
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
  	dim m
5 5
functions...
...
...

Ressources

About

It doesn't matter: A toy implementation of an APL-like interpreter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages