__               
   _____/ /___  ____  ___ 
  / ___/ / __ \/ __ \/ _ \
 (__  ) / /_/ / /_/ /  __/
/____/_/\____/ .___/\___/
            /_/         

slope : a programming language

slope is an s-expression based language loosely modeled after scheme R4RS. It does, however, diverge quite a bit in some areas (especially IO and filesystem related constructs). slope also does not include many standard constructs of scheme, instead favoring a simple subset of features that allow for very regular and expected code without a lot of specialized forms.

The interpreter is implemented in golang and many of the library differences between slope and scheme are based around generalizing the go standard library into a usable base system for a dynamically typed language. A great example of this generalization is that in slope you can use the function write to easily write to a file (including stdout/err), a tcp connection, or a buffer object. slope knows what you are trying to do based on what you pass it, so separate file-write, tcp-conn-write, and string-buf-write functions are not necessary. Even with a runtime panic, slope will also attempt (I will stop short of guarantee) to close any open files or net connections.

The standard library for slope is very capable, without being a full kitchen sink language. What is left leaves slope very useful as a scripting/glue language. A package manager, slp, is also available, allowing for the sharing of slope modules.

The README for each part of the project (package manager, interpreter, syntax highlighter files for various editors, etc) should have all of the info you will need to use them. In the case of slope, that includes _full_ api documentation. As such, there is no separate guide hosted on this website. The best place to start is the git organization slope-lang (see 'resources' below).

Resources

Getting slope


git clone git://sloum.colorfield.space/slope.git && cd slope
sudo make install

The repo comes with a detailed readme that can walk you through just about anything you'd need to get started.