Skip to content

seojuncha/lisp-for-hackers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Common Lisp for Low-Level Hackers

  • Basic CLisp Programming
  • Develop Environment
  • Project Management
  • Useful System Projects

[Draft] Requirement

sudo apt update

sudo apt install -y \
  sbcl \
  rlwrap \
  git \
  build-essential \
  clang \
  cmake \
  pkg-config \
  libssl-dev
curl -O https://beta.quicklisp.org/quicklisp.lisp

sbcl --load quicklisp.lisp
* (quicklisp-quickstart:install)
* (ql:add-to-init-file)
sbcl
* (ql:quickload :alexandria)
;;;; Quicklisp
(load "~/.quicklisp/setup.lisp")

;;;; Better REPL
(require 'sb-posix)

;;;; Debugging
(setf *debugger-hook*
      (lambda (c h)
        (declare (ignore h))
        (format *error-output* "~&[LISP ERROR] ~A~%" c)
        (sb-ext:exit :code 1)))

;;;; Performance
(declaim (optimize (speed 3) (safety 1) (debug 1)))

[Draft] Project Configure

Use ASDF

myproj/
 ├─ myproj.asd
 └─ src/
     └─ main.lisp

myproj.asd

(asdf:defsystem "myproj"
  :description "Low-level Lisp project"
  :author "Seojun Cha"
  :license "MIT"
  :depends-on (:alexandria :cffi)
  :serial t
  :components
  ((:module "src"
    :components
    ((:file "main")))))

src/main.lisp

(defpackage :myproj
  (:use :cl))

(in-package :myproj)

(defun main ()
  (format t "Hello Lisp~%"))

Run sbcl

sbcl
(asdf:load-system :myproj)
(myproj:main)

SBCL References

About

Learn about Common Lisp programming.

Topics

Resources

Stars

Watchers

Forks

Contributors