In addition to a built-in Prolog and also optional type checker it also uses pattern-matching like other modern functional programming languages. This is unlike Clojure which to my mind wrongly downgrades pattern-matching to simply an optional library. (Apparently Rich Hickey isn't keen on pattern-matching).
Shen is certainly worth investigating if you have an interest in Lisp.
Do you have a source for this? The closest I could find was this[1]:
> Appropriating other people's work by copying the code and changing the license is IMO immoral.
If this is indeed the source material, then I think your characterization isn't _necessarily_ correct. Saying it's immoral isn't the same as making a claim about law.
The link provided[2] does indicate that de Raadt thinks it is a violation of copyright law however. Finally, I question whether there is actually a consensus on this matter at all. If you relicense BSD code as GPL, then consumers needn't abide by the GPL; they can simply opt to use the original license. Does that really mean a relicensing has occurred? Of course, in non-trivial cases, there's likely additional code that has been intermixed with the original code, which would make it impossible to separate. But the release of the GPL code would still technically need to comply with the BSD license itself. Even at that point, it doesn't feel like "relicense" is actually correct.
(Note that I picked up on this because I firmly believe that such relicensing is indeed unethical, while simultaneously not knowing whether such relicensing is definitely a violation of copyright law or not, while also believing that copyright law shouldn't exist at all.)
[1] - http://www.marktarver.com/fsf.html
[2] - http://undeadly.org/cgi?action=article&sid=20070913014315
[1] https://github.com/doublec/shen-wasp
[2] https://bluishcoder.co.nz/2013/05/09/building-wasp-lisp-and-mosref-for-android.html[1] https://github.com/otabat/shen-c
diff --git a/Makefile b/Makefile
index 3ae5a55..458200d 100644
--- a/Makefile
+++ b/Makefile
@@ -26,5 +26,6 @@ ${TARGET}: ${SRC_OBJS}
# cc -g -O3 -std=c99 -lgc -lprofiler -Wl,-no_pie -o $@ $^
- cc -O3 -std=c99 -lgc -o $@ $^
+# cc -O3 -std=c99 -lgc -o $@ $^
# gcc-6 -g -O3 -std=c99 -L /usr/local/lib -lgc -lprofiler -Wl,-no_pie -o $@ $^
# gcc-6 -O3 -std=c99 -L /usr/local/lib -lgc -o $@ $^
+ gcc -O3 -o $@ $^ -lgc
@@ -34,5 +35,6 @@ ${OBJ_ROOT}/%.o: $(SRC_ROOT)/%.c
# cc -O2 -std=c99 -fno-optimize-sibling-calls -c -o $@ $<
- cc -O3 -std=c99 -fno-optimize-sibling-calls -c -o $@ $<
+# cc -O3 -std=c99 -fno-optimize-sibling-calls -c -o $@ $<
# gcc-6 -g -O3 -std=c99 -fno-optimize-sibling-calls -Wall -I /usr/local/include/gc -c -o $@ $<
# gcc-6 -O3 -std=c99 -fno-optimize-sibling-calls -Wall -I /usr/local/include/gc -c -o $@ $<
+ gcc -O3 -fno-optimize-sibling-calls -c -o $@ $<