Giter Club home page Giter Club logo

clorth's Introduction

Clorth

A Forth implementation in Clojure. Currently implementing a limited subset of the standard library but already provided with interop to call into Clojure standard library. Clone the project, start the repl with lein repl and then type @clorth to start the interpreter. An extended introduction is also available in these slides.

Your first Forth program

Start the REPL with clj and then type @clorth to start the Clorth interpreter. The following is a small Forth program coming from the first chapter of Starting Forth. Please type every line at the prompt and hit the key. The following are all words definitions and they start with ":" and end with ";":

: star 42 emit;
: stars 0 do star loop;
: margin cr 30 spaces;
: dot margin star;
: line margin 5 stars;

We just created a small "fun" language:

line dot line dot dot cr
                             *****
                             *
                             *****
                             *
                             *

Let's create one last word so we can just type the single letter "F":

: F line dot line dot dot cr
F
                             *****
                             *
                             *****
                             *
                             *

Interop

Clorth allows deep integration with Clojure. To call a function in the Clojure standard library, you need to use the _ (underscore) operator. By default, what follows _ is resolved in the clorth.core namespace and invoked on the first element on the stack:

1 2 3 _ inc .
> 4

clorth's People

Contributors

reborg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.