Lisp Learning Pt. 1
In my free time (which I have very little), I’m learning the Lisp programming language. After doing some search, I decided to go with Common Lisp and installed SBCL.
I’m using a GNU/Linux machine. Following command helped me to install the SBCL on my computer.
sudo apt install sbclAfter installation, check for the version and you can confirm the installation.
sbcl --versionWrite only sbcl in the Terminal and it’ll open the true REPL for you. In order to quit or exit the REPL you need to write (quit).
$ sbcl
This is SBCL 2.2.9.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* * is the prompt. You can type the Lisp code now.
You can directly write 10 or "hello, world" (use double quotes) as these are the literal values.
* 10
10
* "hello, world"
"hello, world"If you try to write 10 as (10) or "hello, world" as ("hello, world") you’ll get errors. For example,
* (10)
; in: 10
; (10)
;
; caught ERROR:
; illegal function call
;
; compilation unit finished
; caught 1 ERROR condition
debugger invoked on a SB-INT:COMPILED-PROGRAM-ERROR in thread
#<THREAD "main thread" RUNNING {1001348003}>:
Execution of a form compiled with errors.
Form:
(10)
Compile-time error:
illegal function call
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
((LAMBDA ()))
source: (10)You’re now in true REPL mode. For now, to exit, type 0 and press Enter.
You got the error because, in simple terms, after open paren, Lisp expects to have something that can execute. For example, (+ 3 4) works as + will execute on 3 and 4 values.
* (+ 3 4)
7Here is the hello, world in Common Lisp.
* (format t "hello, world")
hello, world
NILHere, format print on terminal or t (actually it is standard output) "hello, world" string. You can write code within a file that should have .lisp extension as hello.lisp.
; hello.lisp
(format t "hello, world")Yes, ; is used to write comment in Lisp.
You can run the hello.lisp program using following command.
sbcl --script hello.lisp
hello, worldOr open sbcl REPL and load the file.
sbcl
* (load "hello.lisp")
hello, world
T