There are a lot of ways to have zsh expand $
variables. man zshexpn for details.
zsh's command-line editor is fully programmable and bindable. You
can write your own functions that manipulate the cursor and the
contents of the command line. zsh also supports emacs, vi command,
and vi insert-style command editing. man zshzle for
details.
You can write your own functionality to zsh and get it added in at
runtime. Various things in zsh, such as completion control, are
implemented as modules. man zshmodules for details.
Unfortunately, I did not have time to complete a section on
programming constructs such as if for while case etc.
This section will be added in the future.