Skip to content

MatthewMcDade13/smack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smack

A lisp dialect, inspired by Clojure, hosted in Go.

  • Interpreted / REPL development/scripting flow
  • Transpiles to Go
  • Native Go concurrency primitives
  • easy Go interop

TODO

  • Macros
  • Transpile to Go
  • Golang standard lib interop
  • Golang channel type in Smack
  • File/IO
  • Option/Result types
  • Compound Data Structures (struct)
  • Traits/Behaviors/Protocols
  • Namespaces/Modules
  • AST Optimization
  • Ref (mutable) types
  • Basic Standard Lib (Currently not fully implemented)

Tentative Syntax Example

(def add (fn (a b) (+ a b)))
(def sub (fn (a b) (- a b)))
(def not (fn (a) if a false true))

(let (x 54 y 46) (add x y))

(def a 100)
(def b 200)

(println (do (
    (let (res 5) (>= res 50))
)))


(def table {:a 12 :b "bee"})

(def array [1 2 3])

(println "Ayyye this really something!!!")

Sources

  • This repo is my solutions for Make a Lisp (MAL). I have added additional features on top of the challenge set.

About

A lisp dialect, inspired by Clojure, hosted in Go.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published