Age | Commit message (Collapse) | Author | |
---|---|---|---|
2025-02-14 | cantedraw.lisp -> main.lisp | Aryadev Chavali | |
2025-02-14 | Added a README | Aryadev Chavali | |
2025-02-14 | Use := instead of = so we're not re-interning a symbol in cl-loop | Aryadev Chavali | |
2025-02-14 | Remove dependency on deploy - use ASDF's program-op instead | Aryadev Chavali | |
2025-02-11 | odraw -> cantedraw | Aryadev Chavali | |
Why name it something unique when this is what I'm going to be making at the end of it all? Just makes it more confusing for the end user. | |||
2025-02-11 | Some dir-locals for your (my) convenience. | Aryadev Chavali | |
2025-02-11 | Added build script for terminal use | Aryadev Chavali | |
2025-02-11 | Move parse-integer* | Aryadev Chavali | |
2025-02-11 | main -> odraw | Aryadev Chavali | |
2025-02-11 | Slightly clean up the example program in main | Aryadev Chavali | |
2025-02-11 | Import lib.functions in main | Aryadev Chavali | |
2025-02-11 | Rework rev-map to use ->> and to make LIST `cdrs` rather than CONS | Aryadev Chavali | |
2025-02-11 | Rework `$` operator to work like applicative in Haskell | Aryadev Chavali | |
f $ g $ h -> f(g(h)) whereas previous implementation ($ f g h) was h(g(f)). | |||
2025-02-11 | rev-map function | Aryadev Chavali | |
Given an indicator function (A->B) and a list of items of A, return an association list associating B to the elements that map to it; essentially the inverse map of the indicator. | |||
2025-02-11 | Macro (alist-val) to access the actual value of a key in an alist | Aryadev Chavali | |
2025-02-11 | Reworked build.lisp and load.lisp into bob.lisp | Aryadev Chavali | |
bob.lisp quickloads the dependencies necessary and defines functions which I can just call from my REPL to load or build the project. Better than loading the file over and over again. Affectionately named after "Bob The Builder". | |||
2025-02-11 | Implement `split` function. | Aryadev Chavali | |
Given a list and index into that list, return a cons where the car is all elements up to that index (exclusive) and the cdr is the rest of the list. | |||
2025-02-11 | Implement a "take" function to read subsequences of a list | Aryadev Chavali | |
Basically a wrapper over subseq but for when using `->>` as the list is the last parameter. | |||
2025-02-11 | Implement `$` operator, second class version of the applicative operator | Aryadev Chavali | |
The `$` operator takes a sequence of FORMS and returns a unary function which applies the input through that sequence via the `->>` operator. For example, consider the predicate "not null". `null` is built into Common Lisp but "not null" requires writing a function (lambda (x) (not (null x))). Now, using this operator, you can write ($ not null) which returns the same lambda as above while being more concise. | |||
2025-02-11 | functions -> forms in lib.macros | Aryadev Chavali | |
2025-02-11 | Introduce lib.functions which includes helper functions | Aryadev Chavali | |
Splitting macros and functions into different packages and source code makes it easier to look at. Functions currently implemented: - range: like Python's range - parse-integer*: parse-integer but junk-allowed is set to t. | |||
2025-02-11 | Extract parsing logic from read-integers into parse-integers | Aryadev Chavali | |
2025-02-11 | Re-implement all functions in main via fn macro. | Aryadev Chavali | |
2025-02-11 | Add type alias for function and macro for defining functions with type specifier | Aryadev Chavali | |
`fn' is a convenience macro for defining functions with a type specifier. Only really matters for `sbcl` and other hard-optimising Lisp interpreters which actually take these seriously. | |||
2025-02-11 | Implement a program that reads some integers then prints their sum | Aryadev Chavali | |
Allows junk, and doesn't crash horribly. | |||
2025-02-11 | Implement a `while' macro. | Aryadev Chavali | |
2025-02-11 | Rewrite entrypoint to prompt for a name, then print it | Aryadev Chavali | |
2025-02-11 | Implement threading macros and make package lib.macros to hold them. | Aryadev Chavali | |
2025-02-11 | Initial commit. | Aryadev Chavali | |
Setup boilerplate for system/package management. In particular, setup an entry-point and Shinmera's "deploy" to build executables. Also write some scripts to easily load or build the project without Emacs - just `sbcl --load <x>.lisp`. |