A Reverse Polish Lisp language implemented in Ruby
Find a file
2022-10-04 16:47:48 +02:00
bin File.expand_path is way more useful than File.absolute_path 2022-10-04 16:47:48 +02:00
lib File.expand_path is way more useful than File.absolute_path 2022-10-04 16:47:48 +02:00
spec test logarithm words (only 'e' for the moment) 2022-10-04 14:12:48 +02:00
.gitignore Initial commit 2021-10-30 17:44:38 +02:00
LICENSE Initial commit 2021-10-30 17:44:38 +02:00
Rakefile replace Makefile with equivalent Rakefile 2022-02-22 16:53:28 +01:00
README.md todo and revamp README.md 2022-10-04 14:39:53 +02:00
rpl.gemspec forgot to update in-language version, bump to 0.9.1 2022-10-04 14:22:55 +02:00

rpl.rb

Reverse-Polish-Lisp inspired language in ruby

To run REPL locally: rake run

To run the test suite: rake test

To build gem: rake gem

known bugs

TODO-list

  • REPL:
    • autosave/autoload stack and vars from /.rplenv on start/exit . autoload is just « '/.rplenv' feval » . autosave on exit overwrites
  • Language:
    • pseudo filesystem: subdir/namespace for variables . 'a dir' crdir 'a dir' cd vars
  • SDL-based graphic environment/API

Not yet implemented

$ grep "# @dictionary.add_word" ./lib/rpl/words/*.rb
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['ln'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['lnp1'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['exp'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['expm'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['log10'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['alog10'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['log2'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['alog2'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['sinh'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['asinh'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['cosh'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['acosh'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['tanh'],
./lib/rpl/words/logarithm.rb:        # @dictionary.add_word( ['atanh'],
./lib/rpl/words/mode.rb:        # @dictionary.add_word( ['std'],
./lib/rpl/words/mode.rb:        # @dictionary.add_word( ['fix'],
./lib/rpl/words/mode.rb:        # @dictionary.add_word( ['sci'],
./lib/rpl/words/mode.rb:        # @dictionary.add_word( ['round'],
./lib/rpl/words/operations-complexes.rb:        # @dictionary.add_word( ['p→r', 'p->r'],
./lib/rpl/words/operations-complexes.rb:        # @dictionary.add_word( ['r→p', 'r->p'],

No implementation planned

  • use IFT, IFTE instead of . if . then . else . end
  • use LOOP, TIMES instead of . start . for . next . step . do . until . while . repeat
  • use LSTO instead of . ->, →

inspirations and references