summaryrefslogtreecommitdiffstats
path: root/sbcl
diff options
context:
space:
mode:
authorGravatar Tom Willemse2013-11-03 22:13:10 +0100
committerGravatar Tom Willemse2013-11-03 22:13:10 +0100
commit564cdf1c84c02a9607f2be912b4e42d50eea0729 (patch)
tree9342b334adfe9d2f601a228625df9696453804c3 /sbcl
parent4a8808166859d7fb1cc29130ca79e98c5a27b87c (diff)
downloaddotfiles-564cdf1c84c02a9607f2be912b4e42d50eea0729.tar.gz
dotfiles-564cdf1c84c02a9607f2be912b4e42d50eea0729.zip
Update sbcl config
Diffstat (limited to 'sbcl')
-rw-r--r--sbcl/.gitignore1
-rw-r--r--sbcl/.sbclrc69
2 files changed, 69 insertions, 1 deletions
diff --git a/sbcl/.gitignore b/sbcl/.gitignore
deleted file mode 100644
index bb16faa..0000000
--- a/sbcl/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.sbclrc
diff --git a/sbcl/.sbclrc b/sbcl/.sbclrc
new file mode 100644
index 0000000..867959c
--- /dev/null
+++ b/sbcl/.sbclrc
@@ -0,0 +1,69 @@
+;; -*- mode: lisp; -*-
+
+;;; The following lines added by ql:add-to-init-file:
+#-quicklisp
+(let ((quicklisp-init (merge-pathnames ".local/share/quicklisp/setup.lisp"
+ (user-homedir-pathname))))
+ (when (probe-file quicklisp-init)
+ (load quicklisp-init)))
+
+(defun primep (number)
+ (unless (= number 1)
+ (let ((max (floor (sqrt number))))
+ (or (= number 2)
+ (and (not (evenp number))
+ (= (length (loop for i from 3 upto max by 2
+ if (integerp (/ number i))
+ if (< 1 i number)
+ do (return-from primep nil)
+ else
+ collect i))
+ 0))))))
+
+(defun next-prime (number)
+ (loop for i from (1+ number)
+ if (primep i)
+ return i))
+
+(defun previous-prime (number)
+ (loop for i from (1- number) downto 0
+ if (primep i)
+ return i))
+
+(defun primes (number)
+ (do ((prime 2 (next-prime prime))
+ (primes (list)))
+ ((> prime number) (reverse primes))
+ (setf primes (cons prime primes))))
+
+(defun prime-factors (number)
+ (do ((i 1 (1+ i)))
+ ((> i (/ number 2)) (list number))
+ (let ((d (/ number i)))
+ (if (and (integerp d) (primep i))
+ (return (cons i (prime-factors d)))))))
+
+(defun largest-prime-factor (number)
+ (apply #'max (prime-factors number)))
+
+(defun start-local-server ()
+ (ql:quickload "usocket")
+ (usocket:socket-server
+ "localhost" 4006
+ (lambda (stream)
+ (handler-case
+ (let ((*standard-input* stream)
+ (*standard-output* stream)
+ (type (read stream)))
+ (case type
+ (:eval
+ (princ (eval (read)))
+ (force-output))
+ (:shell
+ (loop
+ (fresh-line)
+ (princ "CL> " stream)
+ (force-output)
+ (print (eval (read)))))))
+ (end-of-file () nil)))
+ () :in-new-thread t :multi-threading t))