diff --git a/CHANGELOG.md b/CHANGELOG.md index 9722aae..9e847e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,50 @@ # Changelog -## 0.1.0 (2020-01-18) +## v0.2.2 (2020-02-21) -Initial public release. +* Add type init through Type.Invoke() method +* Remove GoFunc in favor of Fn + +## v0.2.1 (2020-02-19) + +* Add slang tests using lisp files (#8) +* Added tests for function definitions +* Improve function call reflection logic to handle error returns + +## v0.2.0 (2020-02-18) + +* Add evaluation error with positional info +* Add position info to Set, List, Vector, Symbol +* Add slang runtime package, add generic repl package +* Add support for variadic functions + +## v0.1.3 (2020-02-04) + +* Add Values type and Seq types +* Add let and throw special forms +* Add support for multi-arity functions +* Convert List, Set, Vector, Symbol types to struct +* Modify List, Set, Vector types to embed Values type +* Move special form functions into sabre root package +* Add parent method to scope and modify def to apply at root scope + +## v0.1.2 (2020-01-23) + +* Add working clojure style quote system +* Move SpecialFn to sabre root package as GoFunc +* remove redundant strictFn type + +## v0.1.1 (2020-01-20) + +* Add error function and type functions +* Add experimental Set implementation +* Add special Nil type, add not & do core functions +* Add type check and type init functions for all types +* Add unit tests for all string and eval methods +* Fix nested lambda binding issue +* Split builtin functions into core package + +## v0.1.0 (2020-01-18) * Fully working LISP reader. * Working Evaluation logic with no automatic type conversion. diff --git a/repl/repl.go b/repl/repl.go index 54963b1..79d6da7 100644 --- a/repl/repl.go +++ b/repl/repl.go @@ -1,3 +1,5 @@ +// Package repl provides a REPL implementation and options to expose Sabre +// features through a read-eval-print-loop. package repl import ( diff --git a/sabre.go b/sabre.go index 6692274..1001034 100644 --- a/sabre.go +++ b/sabre.go @@ -1,3 +1,5 @@ +// Package sabre provides data structures, reader for reading LISP source +// into data structures and functions for evluating forms against a context. package sabre import ( diff --git a/slang/core.go b/slang/core.go index b9365b4..c5ded35 100644 --- a/slang/core.go +++ b/slang/core.go @@ -27,7 +27,7 @@ func Concat(s1, s2 sabre.Seq) sabre.Seq { return vals } -// Realize realizes a sequence by continuosly calling First() and Next() +// Realize realizes a sequence by continuously calling First() and Next() // until the sequence becomes nil. func Realize(seq sabre.Seq) *sabre.List { var vals []sabre.Value diff --git a/slang/slang.go b/slang/slang.go index 3a2ba10..6966ce8 100644 --- a/slang/slang.go +++ b/slang/slang.go @@ -1,3 +1,6 @@ +// Package slang (short for Sabre lang) provides a tiny LISP dialect built +// using factilities provided by Sabre. See New() for initializing Slang +// and using it. package slang import ( @@ -92,7 +95,7 @@ func (slang *Slang) Resolve(symbol string) (sabre.Value, error) { return slang.resolveAny(symbol, *nsSym, nsSym.WithNS("core")) } -// BindGo is similar to Bind but handles convertion of Go value 'v' to +// BindGo is similar to Bind but handles conversion of Go value 'v' to // sabre Value type. func (slang *Slang) BindGo(symbol string, v interface{}) error { return slang.Bind(symbol, sabre.ValueOf(v))