aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-02-11Implement `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-11Implement a "take" function to read subsequences of a listAryadev Chavali
Basically a wrapper over subseq but for when using `->>` as the list is the last parameter.
2025-02-11Implement `$` operator, second class version of the applicative operatorAryadev 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-11functions -> forms in lib.macrosAryadev Chavali
2025-02-11Introduce lib.functions which includes helper functionsAryadev 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-11Extract parsing logic from read-integers into parse-integersAryadev Chavali
2025-02-11Re-implement all functions in main via fn macro.Aryadev Chavali
2025-02-11Add type alias for function and macro for defining functions with type specifierAryadev 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-11Implement a program that reads some integers then prints their sumAryadev Chavali
Allows junk, and doesn't crash horribly.
2025-02-11Implement a `while' macro.Aryadev Chavali
2025-02-11Rewrite entrypoint to prompt for a name, then print itAryadev Chavali
2025-02-11Implement threading macros and make package lib.macros to hold them.Aryadev Chavali
2025-02-11Initial 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`.