This project’s main repository is on Codeberg.org, if you are viewing this anywhere else, it is just a mirror, please use the Codeberg.org repository for pull requests and issues, Thank you.
A set of Guile Scheme modules to increase speed and efficiency when writing code.
Guile is a powerful Scheme variant that is very well integrated with the GNU/Linux ecosystem. That said Scheme, to my understanding, was designed in the 70’s to prove a set of particular (academic) points and understand certain aspects of programming, which it did very well as can be seen from the persistence and the adoption of many of its ideas in other places.
I use Guile mainly for Linux based programming, in most other settings, I use Clojure or a variant, which in my view has a more practical design for getting things done quickly. Gust is an attempt to bring that practical design philosophy to Guile (cf. Paul Graham’s Being popular and 5 questions about language design) in a simple way, and ease my switching back and forth, without compromising on Guile’s powerful attributes.
This is not a Clojure clone nor is it trying to be, for something closer to that on Guile, see Lokke.
- Download/Clone the repo and place the folder(s) contained in ‘./src’ either to the somewhere on Guile’s ‘%load-path’ or extend the ‘%load-path’ (using the environment variable ‘GUILE_LOAD_PATH’) to include folder(s).
- add
(use-modules (gust gust) (gust repl))to your ~/.guile file. (gust gust) exports procedures from core.scm, io.scm, math.scm, coll.scm, obj.scm and os/gos.scm. - add (gust gust) (or other modules) to your production code to use it there as well
- (gust os cmd) - OS command helpers and (gust os files) - OS file helpers, as needed.
- Fast startup - Keep Guile’s near instant start up
- Full Guile compatibility
- Ease of installation - the main functions can be imported from (gust gust) or from the individual modules as needed. It should always be just a folder (or two) of scheme code to add to Guile’s ‘%load-path’ without needing any complex procedures.
- Simplicity
- Intuitive
- Brevity
- Clojure compatibility
- defc - define + case-lambda(+ *) (similar to defn in Clojure)
- letv - a sequential destructuring let (i.e let* with destructuring built in, similar to that of Clojure)
- Language on Guile - This is a goal as long as it is possible to still use modules written in Guile from Gust and vice versa and it remains “just a couple of folders” on the ‘%load-path’.
- ns - an improved Clojure like modules system (swapping :require with :use and mapped unto the underlying define-module system, maybe adding module documentation) for the language above .
- A “Namespace isolated”/”qualified symbols” macro definition facility (similar to Clojure’s)
Pull requests are welcome.
If you would like to support my work, please donate. (with a message containing the project name you would like to support)
42s4DCgjk2sguR8x1H4Svx7sBuysvrRHGCK3pfQTcEerNBUGhT43gMy6noctiGeVeo61aFzsQfGwVTxNmruy3dqb8PAyYZM
bc1quymsg5tvyvqkcn35zzujfdrdwgxnakqaptqc5k
ltc1q8ese8e8rl9c80emqgvek24gylz32u3d76v2e9q
Please use, <My username> at gmx dot com
Copyright © 2025 Kyuvi
This program is published under version 3 of the GNU General Public license.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.