writing lisp programs is odd
Lately I have been messing around with some lisps, not because I need a new language to fill the never ending urge of just "playing around with one more language I promise", but because they have been occupying my mind for quite a while now.
The reason for this is that lisps to me, have been something I both love and adore while actively ignoring. When it comes to making gui's, small scripts, or embedding a project with an extention language, I always reach for a lisp. The reason being that they are easy to write and fairly pleasent, while still being flexible enough to the point u can do bassicly anything in them.
But on the other paw I cannot FATHOM writing large or even reasonably sized project in lisp. I think it might be due to me not knowing how I would even start organizing my code in a lisp but the idea always eluded me. Why use a lisp when languages like ocaml and rust are right there. But I kind of want to change that, or more like I want to explore what I have been avoiding.
After I finished some of the projects I am currently working on I would love to try writing some more lisp code for bigger projects. The reason I want to is so that I can see both if my previous prejudice about lisp is justified or if I just hadn't written enough of it yet. But also since even though I only write lisp for small things, anytime I use lisp I feel pleasantly suprised by how nice practically any lisp API is.
I tried ou hunchtoot, a common-lisp web server library, and yet again I was suprised by how nice and consice the API was to use:
(require :asdf)
(asdf:load-system "hunchentoot")
(defpackage :my-web
(:use :cl :hunchentoot))
(in-package :my-web)
(defvar server-port 8080)
(define-easy-handler (home :uri "/") ()
(uiop:read-file-string "www/index.html"))
(defparameter *server*
(make-instance 'easy-acceptor
:port server-port))
(start *server*)
(write-line (format nil "running server on port ~a" server-port))
;; just infinitelly looping while the server runs
;; otherwise our program will just exit
(loop (sleep 3600))
So yeah, I think I'll try out some lisp for bigger things once I get the time, I already really like lisp for small scripts and GUI's, so why not see if it's worth using elsewhere.