From 427c6cf1b26b46dae95b158a6f62bee843dc7162 Mon Sep 17 00:00:00 2001 From: Macoy Madson Date: Sun, 7 Nov 2021 13:01:19 -0500 Subject: [PATCH] Add learning more section --- doc/Tutorial_Basics.org | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doc/Tutorial_Basics.org b/doc/Tutorial_Basics.org index c739448..f526bab 100644 --- a/doc/Tutorial_Basics.org +++ b/doc/Tutorial_Basics.org @@ -630,6 +630,7 @@ There are a number of different things you could do with this: - Commands could optionally provide a help string - /Code modification/ could be used to read all functions rather than requiring the use of ~defcommand~ - Support for arguments could be added + * You made it! If you are feeling overwhelmed, it's okay. Most languages do not expose you to these types of features. @@ -644,3 +645,29 @@ It can take some time to appreciate the power that compile-time code generation - [[https://github.com/makuto/cakelisp/blob/master/runtime/HotReloadingCodeModifier.cake][HotReloadingCodeModifier.cake]] converts module-local and global variables into heap-allocated variables automatically, which is an essential step to making hot-reloadable code possible You can see that this one feature makes possible many things which would be very cumbersome to do without it. + +* Learning more +** Reading documentation +The ~doc/~ folder contains many files of interest, especially [[file:Cakelisp.org][Cakelisp.org]]. There you will find much more detailed documentation than this tutorial provides. + +** Cakelisp self-documentation +Cakelisp provides some features to inspect its built-in generators. From the command line: + +#+BEGIN_SRC sh + ./bin/cakelisp --list-built-ins +#+END_SRC + +...lists all the possible generators built in to Cakelisp. This is especially useful when you forget the exact name of a built-in. + +#+BEGIN_SRC sh + ./bin/cakelisp --list-built-ins-details +#+END_SRC + +This version will list all built-ins as well as provide details for them. + +** Reading code +The best way to learn Cakelisp is to read existing code. + +There are examples in ~test/~ and ~runtime/~. You can find extensive real-world usage of Cakelisp on [[https://macoy.me/code/macoy][macoy.me]]. + +[[https://macoy.me/code/macoy/gamelib][GameLib]] is the closest thing to a package manager you will find in Cakelisp land. It provides powerful features as well as easy importing for a number of 3rd-party C and C++ libraries.