I have never used Swift, but I can confirm that writing a Lisp is a lot of fun in something like C or Go. I especially like the fact that you can build in so much raw power by implementing Lisp macros for example.
Yeah! Even more so if you have first-class macros (fexprs) like say Kernel does. I had a lot of fun building a fexpr-based lisp-1 with quasiquote (which Kernel eschews) and also with a first-class apply that works on both functions and macros. Not even Kernel can do that.
$ git clone https://github.com/akkartik/wart
$ cd wart
$ ./wart
ready! type in an expression, then hit enter twice. ctrl-d exits.
mac (foo x)
`(+ ,x 1)
=> (object function {sig, body})
(foo 3)
=> 4
(foo @(list 3)) # apply analogous to the ,@ splice operator
=> 4
(foo @'(3))
=> 4
Take it a step lower and do one in assembly and it is even more fun. I almost have enough code together to say that I'm doing one in RISC-V assembly. At this point I have already accidentally picked up a more intuitive understanding of how a lisp compiler works.
A similar project I've considered: write an Algol compiler in assembly. Algol is another elegant, influential language originally implemented in assembly.