| Jaspers Personal webpage | |
| Home Blog Projects Various smaller projects About me | ProjectsThis is current/more significant projects, see small projects for the rest.General Interface Language/Library (Gil)GIL is currently the main part of the lisp-editor project (i have to update that website, git-repo), which lead me to want to make lisp tools, but in making autodocumentation, i wanted multiple outputs, leading to me making an library/language to do so. (Originally i used LML2.)Note that i deliberately call it library/language and language/library interchangably, it really is meant to be both. The idea is that, more strongly than code=data, it is 'code as in function usage' = data. I wrote this file in Gil, and this file is data-like, whereas i also use Gil in autodoc, and its use there is library-like. Gil currently outputs html, used to also output plaintext and Latex, but made changes that broke them. Currently it is more like a general markdown library/language though, it might be that it might not be able to live up to the tile 'interface' gracefully. (then it would have to output scripts to specify rather arbitrary gui behavior.) The word 'interface' might be too ambigious too.. Parts of the lisp-editor project were tools to get data from the code, and autodocument: Expression hookBasically it re-evaluates all the macros and allows you to look at all the expressions of them via a function you set. (Unlike lisps macrohook, which only looks at the macros.)Expression scanUses above hook to gather information about functions, macros, variables.AutodocAutomatically generates documentation from that data. Can work on packages, 'load-files'(lisp files saying (load "..") and asdf systems. Likely the expression scan could still provide more and autodoc could still use more useful information.RinseMy attempt on improving upon current Lisps. Originally, even less originally, called Lang-lisp. (That website desparately needs updating).It takes the ideas of Lisp(For one, must have closures), of course, and adds:
ProgressMy main project is currently GIL and surrounding, but progress has been made on this project aswel.
DenestActually a small macro, but put it here anyway. It is realization that lisp tends to get to nested, and you need to denest it. It comes with some extra utility macros outside this role, to fill a similar role to not only LOOP and iterate, but also things like bind, and let-starThe simplest complete description of denest: (defmacro denest (&rest args)
(if (null (cdr args))
(car args) `(,@(car args) (denest ,@(cdr args)))))
Its principal advantage is that it uses other macros, rather than have a more closed system. Denest is, by the way, hardly the first iteration of messing with macros to change how i do things. I felt a little silly 'inventing' it, as it is a little obvious. It used to be here where also earlier messing around with macros is located. but now i just put it in the Gil project for convenience. It is also in the 'small projects' tarball. |