Skip to content

Instantly share code, notes, and snippets.

View lispm's full-sized avatar

Rainer Joswig lispm

  • Germany
View GitHub Profile
@lispm
lispm / basicinterpreter.lisp
Last active January 19, 2022 13:03
Basic Interpreter, sectorlisp example translated to Common Lisp
; source https://github.com/woodrush/sectorlisp-examples/blob/main/lisp/basic.lisp
; Common Lisp translation: joswig@lisp.de, 2022
; https://gist.github.com/lispm/a2f56a1a6dc5599a039eb7134d99cd4a
(defun basic-example ()
(BASICINTERPRETER
(QUOTE (
(10 REM FIND AND PRINT PRIME NUMBERS BELOW N_MAX. )
(20 LET N_MAX = (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) )
(30 LET I = (1 1) )
;;; -*- Syntax: ANSI-Common-Lisp; Package: (LEXICAL-ANALYZER :USE CL) -*-
;; From: https://rosettacode.org/wiki/Compiler/lexical_analyzer#Common_Lisp
;; minor changes by Rainer Joswig, joswig@lisp.de, 2022
#+genera
(cl:require "GRAY-STREAMS")
(cl:defpackage #:lexical-analyzer
@lispm
lispm / aoc2022-05.lisp
Last active December 30, 2022 21:25
Advent of Code, 2022, Day 05, Common Lisp solution by Rainer Joswig
;;; -*- Syntax: ANSI-Common-Lisp; Package: CL-USER -*-
;;; Author: Rainer Joswig, joswig@lisp.de, 2022
;;; This code is written in portable Common Lisp.
; https://adventofcode.com/2022/day/5
(defparameter *file05*
(if (member :lispm *features*)
(pathname "rjmbp:/Users/joswig/Lisp/aoc2022/input-5.txt")
;;; -*- Syntax: ANSI-Common-Lisp; Package: CL-USER -*-
;;; Author: Rainer Joswig, joswig@lisp.de, 2022
;;; This code is written in portable Common Lisp.
; https://adventofcode.com/2022/day/10
;; This solution makes use of multiple dispatch and standard method combinations of CLOS.
(defparameter *input-10*
; Implementing a loop via circular code in Common Lisp.
;
; This code could work with a Lisp interpreter, but not a Lisp compiler.
; #n= is a label for a s-expression
; #n# references a labeled s-expression
; note that we can use SBCL for this, too. We just have to switch to its interpreter.
#+sbcl (setf sb-ext:*evaluator-mode* :interpret)
@lispm
lispm / rlabels.lisp
Last active November 30, 2024 21:15
rlabels : simple labels replacement, expanding to non-recursive code
; Copyright Rainer Joswig, 2023, joswig@lisp.de
; simple LABELS replacement, expanding to non-recursive code
; the goal is to provide a simple LABELS like operator
; which optimizes simple self-tail-recursive code to
; to a stack-less jump.
; limitations: does not detect when a call is NOT in tail position,
; which would require a code walker.