Guile Awesome List
Table of Contents
- 1. Manuals
- 2. Tutorials / Guides / Books
- 3. Libraries
- 3.1. Async
- 3.2. Browser
- 3.3. Chat
- 3.4. Compression
- 3.5. Computer vision
- 3.6. Configuration
- 3.7. Cryptography
- 3.8. Databases
- 3.9. Data structures
- 3.10. Development environments
- 3.11. Device management
- 3.12. Distributed computing
- 3.13. E-Mail
- 3.14. Event loop
- 3.15. FFI - Foreign Function Interface
- 3.16. File formats
- 3.17. File system
- 3.18. Game development
- 3.19. Games
- 3.20. Genomics
- 3.21. Graphics
- 3.22. GUI development
- 3.23. Language
- 3.24. Logging
- 3.25. Machine Learning
- 3.26. Macros
- 3.27. Message Queues
- 3.28. Network programming
- 3.29. Parallelism
- 3.30. Parsing
- 3.31. Plotting
- 3.32. Protocols
- 3.33. Serialization formats
- 3.34. SRFI (Scheme Request For Implementation) implementations
- 3.35. Strings
- 3.36. Regular expressions
- 3.37. REPL (Read Eval Print Loop)
- 3.38. RPC (Remote Procedure Call)
- 3.39. Scientific computing and mathematics
- 3.40. Search engine
- 3.41. TUI development
- 3.42. Unit Testing
- 3.43. Version control systems
- 3.44. Web Development
- 3.45. Window manager
- 3.46. Working with code
- 3.47. Other
- 4. Projects
- 5. Programming paradigm
- 6. Tools
- 7. Blogs
- 8. Other
- 9. Other lists of Guile software
- 10. Videos / Talks / Presentations
1 Manuals
- There is a huge reference manual for GNU Guile on the GNU website: https://www.gnu.org/software/guile/manual/.
2 Tutorials / Guides / Books
2.1 General GNU Guile / Scheme
- Guile reference manual
- official Guile tutorial
- Structure and Interpretation of Computer Programs (SICP)
- The Little Schemer
- "Learn Scheme in 15 minutes"
- website: https://web-artanis.com/scheme.html
- guile-tutorial
- Guile Hacker Handbook
- website: https://jeko.frama.io/en/index.html
- git repo: https://framagit.org/Jeko/jeko.frama.io
- The Scheme Programming Language
- web version: https://scheme.com/tspl4/
2.2 Macros
- Macros in the GNU Guile reference manual
- Writing Hygienic Macros in Scheme with Syntax-Case
- Community Scheme Wiki about macros
- scheme-faq-macros
- syntax-case
- A Scheme Syntax-Rules Primer
- Macro-by-Example: Deriving Syntactic Transformations from their Specifications
- wikibooks.org about macros
- Advanced Scheme Techniques - Some Naughty Bits
- C2 Wiki Scheme Macro Examples
- JRM's Syntax-rules Primer for the Merely Eccentric
- Scheme Macros I: Modules
- Writing Macros in Continuation-Passing Style
- paper: https://www.semanticscholar.org/paper/Writing-Macros-in-Continuation-Passing-Style-Hilsdale-Friedman/752575dc24b2bb6e74ee6146df71860e10e3aee9#citing-papers (TODO: find a more permanent looking link)
- Low- and high-level macro programming in Scheme
2.2.1 CK macros
- Applicative syntax-rules: macros that compose better
- Chicken Scheme Wiki about ck-macros
2.3 Monads
- A Schemer's Introduction to Monads
- A Schemer’s View of Monads - Partial Draft
- Monadic Programming in Scheme
2.4 FFI - Foreign Function Interface
- GNU Guile standard library FFI
- GNU software reference manual: https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html
3 Libraries
3.1 Async
- 8sync
- git repository at Savannah: https://savannah.gnu.org/projects/8sync
- manual / GNU software manual: https://www.gnu.org/software/8sync/manual/html_node/index.html#Top
- website / GNU software page: https://www.gnu.org/software/8sync/
- tutorial: https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial
3.2 Browser
- Nomad
- git repository at non-GNU Savannah: https://savannah.nongnu.org/projects/nomad/
- website: https://www.nongnu.org/nomad/
3.3 Chat
3.3.1 Chat clients
- IRC
guile-irc
- git repository at GitHub: https://github.com/rekado/guile-irc
- description: "An irc library for GNU guile." (https://github.com/rekado/guile-irc/blob/master/README)
- API reference manual: http://fbs.github.io/guile-irc/
3.3.2 Chat bots
- IRC
- Cunning Bot
description:
Cunning Bot is a command-oriented IRC bot written in Guile Scheme.
(https://github.com/cadrspace/cunning-bot/blob/cadrobot/README)
- git repo: https://github.com/cadrspace/cunning-bot
- Cunning Bot
3.4 Compression
guile-zlib
- git repository at GitHub: https://github.com/davexunit/guile-zlib
3.5 Computer vision
- GNU Guile-CV
- website: https://www.gnu.org/software/guile-cv/
- GNU software reference manual: https://www.gnu.org/software/guile-cv/manual/html_node/index.html
description:
Guile-CV - Image Processing and Analysis in Guile - is a Computer Vision functional programming library for the Guile Scheme language.
Guile-CV is based on Vigra (Vision with Generic Algorithms), enhanced with additional algorithms (Image Textures, Delineate, Reconstruction and many more), all accessible through a nice, clean and easy to use high level API.
Guile-CV is natively multi-threaded, and takes advantage of multiple cores, using high-level and fine grained application-level parallelism constructs available in Guile, based on its support to POSIX threads.
3.6 Configuration
guile-config
- git repository at GitLab: https://gitlab.com/a-sassmannshausen/guile-config
3.7 Cryptography
guile-gcrypt
- git repo: https://notabug.org/cwebber/guile-gcrypt
description:
Guile-Gcrypt provides a Guile 3.x/2.x interface to a subset of the GNU Libgcrypt crytographic library, which is itself used by the GNU Privacy Guard (GPG).
Guile-Gcrypt provides modules for cryptographic hash functions, message authentication codes (MAC), public-key cryptography, strong randomness, and more. It is implemented using the foreign function interface (FFI) of Guile.
3.8 Databases
3.8.1 Generic
- Generic
guile-dbi
- git repository at GitHub: https://github.com/opencog/guile-dbi
- documentation: https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html
- offers MySQL, Postgresql and SQLite3 interfaces
3.8.2 Postgres
guile-squee
- git repository at notabug.org: https://notabug.org/cwebber/guile-squee
- documentation at: ???
guile-dbd-postgresql
- git repository: https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql
- documentation: https://github.com/opencog/guile-dbi/blob/master/guile-dbd-postgresql/README
- description: This is a sub-repository of
guile-dbi
which is used for dealing with the Postgres side of things.
3.8.3 Sqlite
guile-sqlite3
- git repository at notabug.org: https://notabug.org/guile-sqlite3/guile-sqlite3.git
- documentation at: ???
guile-dbd-sqlite3
- git repository at GitHub: https://github.com/opencog/guile-dbi/tree/master/guile-dbd-sqlite3
- documentation: https://github.com/opencog/guile-dbi/blob/master/guile-dbd-sqlite3/README
- description: This is a sub-repository of
guile-dbi
which is used for dealing with the Sqlite3 side of things.
3.8.4 MySQL
guile-dbd-mysql
- git repository at GitHub: https://github.com/opencog/guile-dbi/tree/master/guile-dbd-mysql
- documentation: https://github.com/opencog/guile-dbi/blob/master/guile-dbd-mysql/README
- description: This is a sub-repository of
guile-dbi
which is used for dealing with the MySQL side of things.
3.8.5 Redis
guile-redis
- git repository at GitHub: https://github.com/aconchillo/guile-redis
3.8.6 CouchDB
- CouchDB
guile-couchdb
- git repo: https://github.com/ukulanne/guile-couchdb
- description: CouchDB bindings for Guile
3.8.7 Other
- WiredTiger (http://www.wiredtiger.com/
guile-wiredtiger
- blog post: https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html
- git repository at: ??? (framagit requires login?)
guile-sparql
: https://github.com/roelj/guile-sparqlsparqling-genomics
: https://github.com/UMCUGenetics/sparqling-genomicsnomunofu
- mentioned on: https://hyper.dev/blog/nomunofu.html
- git repo: ???
3.9 Data structures
3.9.1 Purely functional data structures (PDFS)
pdfs
- git repository at GitHub: https://github.com/ijp/pfds
- documentation: ???
fectors
- git repository at GitHub: https://github.com/ijp/fectors
3.9.2 RDF
guile-rdf
- git repository at framagit: https://framagit.org/tyreunom/guile-rdf
3.9.3 Lenses
guile-lens
- git repository at GitLab: https://gitlab.com/a-sassmannshausen/guile-lens
3.9.4 Other
copernic
- git repository at GitHub: https://github.com/amirouche/copernic
scheme-bytestructures
- git repo: https://github.com/TaylanUB/scheme-bytestructures
description:
[…] offers a system imitating the type system of the C programming language, to be used on bytevectors. C's type system works on raw memory, and ours works on bytevectors which are an abstraction over raw memory in Scheme. The system is in fact more powerful than the C type system, elevating types to first-class status.
guile-newra
- git repo: https://github.com/lloda/guile-newra
- description: "A Scheme replacement for Guile's array system" (https://github.com/lloda/guile-newra)
- Treaps
- website: http://okmij.org/ftp/Scheme/#treaps
description:
An ordered dictionary data structure, based on randomized search trees (treaps) by Seidel and Aragon. Compared to red-black trees, treap is simpler and more elegant, and can get by without sentinels.
3.10 Development environments
guile-studio
- git repo: https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=tree
description:
Racket has Dr Racket. Guile has … Emacs? This is Emacs with a few settings that make working with Guile easier for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons to evaluate Guile buffers, support for Guile's very own picture language, code completion, a simple mode line, etc. […]
(https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=blob;f=README.org;hb=HEAD)
3.11 Device management
guile-udev
:- description: "Guile-Udev is a GNU Guile bindings to libudev." (https://github.com/artyom-poptsov/guile-udev/blob/master/README)
- git repo: https://github.com/artyom-poptsov/guile-udev
- documentation: (inside the git repo: https://github.com/artyom-poptsov/guile-udev/blob/master/doc/guile-udev.texi)
- examples: (inside the git repo: https://github.com/artyom-poptsov/guile-udev/tree/master/examples)
3.12 Distributed computing
metabash
- git repository: https://github.com/artyom-poptsov/metabash
- description: "GNU Guile module for running distributed shell pipelines." – https://github.com/artyom-poptsov/metabash/blob/master/README.org
3.13 E-Mail
- GNU Mailutils ??? (https://mailutils.org/)
guile-email
: https://guile-email.systemreboot.net/
3.14 Event loop
guile-a-sync
- git repository at GitHub: https://github.com/ChrisVine/guile-a-sync
- documentation: ?
3.15 FFI - Foreign Function Interface
- GNU Guile standard library FFI
- GNU software reference manual: https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html
ffi-helper
from NYACC- documentation: https://www.nongnu.org/nyacc/ffi-help.html
3.16 File formats
3.16.1 JSON
- JSON
guile-json
- on GitHub: https://github.com/aconchillo/guile-json
- on savannah: http://savannah.nongnu.org/projects/guile-json/
3.16.2 CSV
guile-csv
- git repository at GitLab: https://gitlab.com/NalaGinrut/guile-csv
guile-dsv
- This is more general, but can work with CSV as well.
- git repository at GitHub: https://github.com/artyom-poptsov/guile-dsv
3.16.3 XML
- Guile's standard library SXML implementation
- GNU software manual: https://www.gnu.org/software/guile/manual/html_node/SXML.html
- Basically your templates become functions or macros.
- The structure of your document is kept as Scheme data structures.
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
3.16.4 Markdown
guile-commonmark
- git repository at GitHub: https://github.com/OrangeShark/guile-commonmark
- documentation: ???
3.16.5 Texinfo
- Guile standard library texinfo functionality
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/texinfo.html
3.16.6 JPEG
guile-jpeg
: a library for parsing JPEG files- git repository at GitHub: https://github.com/guildhall/guile-jpeg
*
3.16.7 ICS
guile-ics
- git repository at GitHub: https://github.com/artyom-poptsov/guile-ics
3.16.8 torrent
torrent
- git repository at GitHub: https://github.com/o-nly/torrent
- documentation at: ???
3.16.9 Other
- If the input is not input from users and is trustworthy, one might be able to leverage read/write of s-expressions instead of using other formats.
3.17 File system
sdupes
, duplicate file detection- git repository at GitHub: https://github.com/sph-mn/sdupes
3.18 Game development
- Chickadee
- describes itself as "game development toolkit"
- OpenGL based
- website: https://dthompson.us/projects/chickadee.html
- manual: https://dthompson.us/manuals/chickadee/index.html
3.19 Games
- StayAlive
- git repo: https://github.com/mwitmer/StayAlive
- dryads-wake
- git repo: https://hg.sr.ht/~arnebab/dryads-wake
description:
Dryads Wake is a game of dialogue and choices. (https://hg.sr.ht/~arnebab/dryads-wake)
3.20 Genomics
sparqling-genomics
- git repo: https://github.com/UMCUGenetics/sparqling-genomics
description:
This project provides programs to extract RDF triplets from commonly used file formats in genomics. It also provides a web-based environment to explore the RDF triplets once inserted in a triple store.
- usage example: https://github.com/UMCUGenetics/sparqling-genomics/blob/dc5fea515c30aa26ff60b77911438689473d125b/web/ldap/authenticate.scm.in#L148
3.21 Graphics
guile-sdl
- GNU software page: https://www.gnu.org/software/guile-sdl/
- gnuvola page of examples: http://www.gnuvola.org/software/guile-sdl-demos/
- gnuvola software page: http://www.gnuvola.org/software/guile-sdl-demos/
guile-sdl2
- project website: https://dthompson.us/projects/guile-sdl2.html
guile-opengl
- GNU software page: https://www.gnu.org/software/guile-opengl/
- GNU software manual page: https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html
- git repository at Savannah: http://savannah.gnu.org/projects/guile-opengl
guile-cairo
- git repository at Savannah: http://savannah.nongnu.org/projects/guile-cairo
guile-jpeg
: a library for parsing JPEG files- git repository at GitHub: https://github.com/guildhall/guile-jpeg
3.21.1 Image processing
guile-cv
- GNU software page: https://www.gnu.org/software/guile-cv/
- git repository at Savannah: http://git.savannah.gnu.org/cgit/guile-cv.git
3.22 GUI development
guile-gi
- git repository at GitHub: https://github.com/spk121/guile-gi
- documentation at: https://spk121.github.io/guile-gi/
guile-gnome
- GNU software page: https://www.gnu.org/software/guile-gnome/
- git repository at Savannah: http://git.savannah.gnu.org/cgit/guile-gnome.git
guile-gtk
- website: https://www.gnu.org/software/guile-gtk/
- CVS repository at non-GNU Savannah: http://savannah.nongnu.org/projects/guile-gtk/
g-golf
: https://www.gnu.org/software/g-golf/
3.23 Language
guile-aspell
- git repository at GitHub: https://github.com/spk121/guile-aspell
- website: http://lonelycactus.com/guile-aspell.html
3.24 Logging
guile-logging
- git repository at GitHub: https://github.com/shanecelis/guile-logging
- SysLog proposal
- git repo: https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/SyslogCowan.md
- description: This is a specification for an implementation of syslog.
- logging module of
sparqling-genomics
- git repo: https://github.com/UMCUGenetics/sparqling-genomics/blob/master/web/logger.scm
- description: This is what
sparqling-genomics
uses internally.
3.25 Machine Learning
- decision tree
guile-ml
- repository at notabug.org: https://notabug.org/ZelphirKaltstahl/guile-ml
guile-snowball-stemmer
- mentioned on: https://snowballstem.org/projects.html
- mentioned on: https://github.com/snowballstem/snowball/issues/34#issuecomment-491056371
- git repo: unfortunately the link to the repository is broken
- AIscm
- website: http://wedesoft.github.io/aiscm/
description:
AIscm is a Guile extension for numerical arrays and tensors. Performance is achieved by using the LLVM JIT compiler.
3.26 Macros
guile-for-loops
- mercurial repo: https://hg.sr.ht/~bjoli/guile-for-loops
description:
A re-implementation of a large-ish chunk of rackets for-macros. It is mostly compatible with racket's macros, with the largest omission being the body-or-break clause and some of the sequence iterators (like in-cycle, which can be covered by circular lists). There are other differences of course, like for/foldr not being on par feature-wise, and all the nicities you get by having a generic sequence interfce.
[…]
megacut
macro:- mercurial repo: https://hg.sr.ht/~bjoli/megacut
description:
This is a clojure-like lambda shorthand for guile. The macro is called megacut (which is a bad name, since it is not much like cut).
(https://hg.sr.ht/~bjoli/megacut/browse/readme.txt?rev=75caf96aa4a9282d489230fe56fff4f1aa5e2564)
- Documentation for Scheme Syntax Extension Packages in SLIB
3.27 Message Queues
- Zero MQ
guile-zmq
- git repository at GitLab: https://gitlab.com/NalaGinrut/guile-zmq
guile-simple-zmq
- git repository at GitHub: https://github.com/jerry40/guile-simple-zmq
3.28 Network programming
- Guile's standard library networking module
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/Networking.html
guile-curl
- git repository at GitHub: https://github.com/spk121/guile-curl
guile-ssh
- git repository at GitHub: https://github.com/artyom-poptsov/guile-ssh
- GNU Serveez
- GNU software page: https://www.gnu.org/software/serveez/
- manual: https://www.gnu.org/software/serveez/manual/
- git repository at Savannah: http://savannah.gnu.org/projects/serveez/
serveez-mg
- git repository at GitHub https://github.com/spk121/serveez-mg
- based on GNU Serveez
3.29 Parallelism
- standard library futures
- GNU software manual page: https://www.gnu.org/software/guile/docs/docs-2.2/guile-ref/Futures.html (link to Guile 2.2 docs – Where are the 3.x docs?)
description:
[…] a construct for fine-grain parallelism. A future is a wrapper around an expression whose computation may occur in parallel with the code of the calling thread, and possibly in parallel with other futures. Like promises, futures are essentially proxies that can be queried to obtain the value of the enclosed expression […]
guile-fibers
- git repo: https://github.com/wingo/fibers
description:
Concurrent ML-like concurrency for Guile
- standard library parallel forms
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/Parallel-Forms.html
- note: Sometimes the parallel forms might cause errors, see https://lists.gnu.org/archive/html/guile-user/2020-01/msg00092.html, I recommend to use futures or if suitable
guile-fibers
instead.
3.30 Parsing
3.30.1 Parser Combinators
stis-parser
- git repository at GitLab: https://gitlab.com/tampe/stis-parser
3.30.2 Parser Generator
nyacc
: Not Yet Another Compiler Compiler- git repository at Savannah: https://savannah.nongnu.org/projects/nyacc
- documentation: https://www.nongnu.org/nyacc/nyacc-ug.html
3.30.3 Other
- standard library PEG parsing
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html
description:
Parsing Expression Grammars (PEGs) are a way of specifying formal languages for text processing.
(https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html)
3.31 Plotting
guile-plotutils
- git repository at GitHub: https://github.com/spk121/guile-plotutils
- website: https://www.gnu.org/software/plotutils/plotutils.html
3.32 Protocols
- X protocol
guile-xcb
- git repo: https://github.com/mwitmer/guile-xcb
3.33 Serialization formats
guile-msgpack
- git repo: https://gitlab.com/HiPhish/guile-msgpack
description:
This is a GNU Guile library implementing the MessagePack data serialisation format. It allows you to serialise (pack) and de-serialise (unpack) Scheme objects to and from binary data according to the MessagePack format.
(https://gitlab.com/HiPhish/guile-msgpack/-/blob/master/README.rst)
3.34 SRFI (Scheme Request For Implementation) implementations
TaylanUB/scheme-srfis
- git repo: https://github.com/TaylanUB/scheme-srfis
- description: This repository contains implementations for some SRFIs.
3.35 Strings
guile-raw-strings
3.36 Regular expressions
- IrRegular Expressions (Scheme, R[4567]RS)
- website: http://synthcode.com/scheme/irregex
3.37 REPL (Read Eval Print Loop)
guile-colorized
- git repository at GitLab: https://gitlab.com/NalaGinrut/guile-colorized
3.38 RPC (Remote Procedure Call)
- GNU Guile-RPC
- website: https://www.gnu.org/software/guile-rpc/
- documentation: https://www.gnu.org/software/guile-rpc/manual/
- git repo: http://git.savannah.gnu.org/gitweb/?p=guile-rpc.git
guile-xmlrpc
:description:
guile-xmlrpc is an XMLRPC module for Guile. Guile already has the wonderful sxml module that allows XML document creation and parsing. guile-xmlrpc goes one step further and combines sxml with some macros and procedures that simplifies even more the creation and parsing of XMLRPC documents.
(https://github.com/aconchillo/guile-xmlrpc/blob/master/README.org)
- git repo: https://github.com/aconchillo/guile-xmlrpc
- manual: (readme file in git repo)
3.39 Scientific computing and mathematics
- GNU Scientific Library (GSL)
- GNU software page https://www.gnu.org/software/gsl/
- git repository at Savannah: http://savannah.gnu.org/projects/gsl/
- wikipedia page: https://en.wikipedia.org/wiki/GNU_Scientific_Library
- Guile bindings: http://community.schemewiki.org/?gee-guile-gsl
- Matrix multiplication
guile-ffi-cblas
- git repository at GitHub: https://github.com/lloda/guile-ffi-cblas
- Fast Fourier Transformation
guile-ffi-fftw
by lloda- git repo: https://github.com/lloda/guile-ffi-fftw
- description: "A simple wrapper for FFTW, using Guile's FFI" (https://github.com/lloda/guile-ffi-fftw)
guile-ffi-fftw
by Mikael Djurfeldt- git repo at Savannah: https://savannah.nongnu.org/projects/guile-fftw
- description:
- Symbolic mathematics
guile-scmutils
- website: https://www.cs.rochester.edu/~gildea/guile-scmutils/
- download: https://www.cs.rochester.edu/~gildea/guile-scmutils/guile-scmutils-v1.0.tgz
description:
A port of the scmutils package for symbolic mathematics from mit scheme to guile, in an effort to make scmutils and the examples from the Structure and Interpretation of Classical Mechanics available on a wider variety of architectures/operating systems.
- Guile implementation of symbolic mathematics shown in SICP
- Does this exist?
3.39.1 Interaction with the Jupyter ecosystem
guix-kernel
- git repository at gitlab.inria.fr: https://gitlab.inria.fr/guix-hpc/guix-kernel
- blog post: https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/
guile-kernel
- git repository at GitHub: https://github.com/jerry40/guile-kernel
3.40 Search engine
babelia
- git repo: https://github.com/amirouche/babelia
description:
Wanna be search engine with federation support
3.41 TUI development
guile-ncurses
- GNU software page: https://www.gnu.org/software/guile-ncurses/
- git repository at GitHub: https://github.com/guildhall/guile-ncurses
3.42 Unit Testing
- SRFI-64 (https://srfi.schemers.org/srfi-64/srfi-64.html)
- GNU software Guile manual page: https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html
srfi-64-driver
- git repository at: ???
- website: https://ngyro.com/software/srfi-64-driver.html
guile-testing
- git repository at: https://github.com/wedesoft/guile-testing
- description: "This is an example on how to do unit-testing using GNU Guile, Automake Test Anything Protocol (TAP), and SRFI-64." (https://github.com/wedesoft/guile-testing/blob/598768b04fe9ef13e07401f1bd715f5fb3bb964e/README.md)
3.42.1 TAP output
guile-tap
- git repo: https://github.com/xevz/guile-tap
- description: "Simple Guile module which provides TAP compilant output." (https://github.com/xevz/guile-tap)
scm-test-tap
- git repo: https://github.com/ft/scm-test-tap
- description: "TAP emitting test-framework for GNU Guile" (https://github.com/ft/scm-test-tap)
3.43 Version control systems
guile-git
- git repository at GitLab: https://gitlab.com/guile-git/guile-git
guile-semver
- git repository at ngyro: https://git.ngyro.com/guile-semver
- website at: https://ngyro.com/software/guile-semver.html
3.44 Web Development
3.44.1 Web frameworks
- Guile's standard library's web module for dealing with web stuff:
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/Web.html
- Guile's standard library's web server:
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/Web-Server.html
- blog post about the performance of Guile's web server: http://wingolog.org/archives/2012/03/08/an-in-depth-look-at-the-performance-of-guiles-web-server
- documentation as generic interface for web server implementations: https://www.gnu.org/software/guile/manual/html_node/Web-Server.html
- examples for usage for creating a web app: https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples
- GNU Artanis web application frameweork
- GNU software page: https://www.gnu.org/software/artanis/
- git repository at GitLab: https://gitlab.com/NalaGinrut/artanis
- official website of the GNU Artanis project: https://web-artanis.com/
- blog post about GNU Artanis: https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3
- manual:
- blog post about using GNU Artanis in a docker container: https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker
- SPH web app
- git repository at GitHub: https://github.com/sph-mn/sph-web-app
- tekuti
- The git repository unfortunately seems to be dead, because it was hosted at gitorious, a now disfunct git host. Where can the code be found?
- blog post about tekuti: https://wingolog.org/projects/tekuti/
3.44.2 Tooling / Additional libraries
- JSON
guile-json
- on GitHub: https://github.com/aconchillo/guile-json
- on savannah: http://savannah.nongnu.org/projects/guile-json/
guile-www
- git repository at savannah non-gnu: http://savannah.nongnu.org/projects/guile-www/
guile-webutils
- git repository at notabug.org: https://notabug.org/cwebber/guile-webutils
guile-html
- git repo: https://github.com/TaylanUB/guile-html
description:
A tiny module to make it less annoying to make and write HTML files using SXML. Read the code!
- Authorization and authentication
guile-oauth
- git repository at GitHub: https://github.com/aconchillo/guile-oauth
guile-jwt
- git repository on GitHub: https://github.com/aconchillo/guile-jwt
3.44.3 Static website generators
guile-haunt
- git repository at GitHub: https://github.com/guildhall/guile-haunt
- SPH static website generator
- git repository at GitHub: https://github.com/sph-mn/sph-web-publish
3.44.4 Template engine
- Guile's standard library SXML implementation
- GNU software manual: https://www.gnu.org/software/guile/manual/html_node/SXML.html
- Basically your templates become functions or macros.
- The structure of your document is kept as Scheme data structures.
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
3.44.5 Interaction with services
guile-mastodon
- git repository at framagit: https://framagit.org/prouby/guile-mastodon
- documentation at: https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org
3.44.6 Web application examples
scheme-todomvc
:
3.44.7 Web drivers / Selenium
guile-web-driver
- git repo: https://github.com/her01n/guile-web-driver
- description: "web driver (selenium) client for guile" (https://github.com/her01n/guile-web-driver)
3.45 Window manager
guile-wm
- git repo: https://github.com/mwitmer/guile-wm
3.46 Working with code
guile-syntax-highlight
- website: https://dthompson.us/projects/guile-syntax-highlight.html
- repository: seems to be missing
3.47 Other
guile-lib
- git repository at non-GNU Savannah: http://git.savannah.nongnu.org/cgit/guile-lib.git
- website at: https://www.nongnu.org/guile-lib/
description:
guile-lib is intended as an accumulation place for pure-scheme Guile modules, allowing for people to cooperate integrating their generic Guile modules into a coherent library. Think "a down-scaled, limited-scope CPAN for Guile". […]
- Spells
- git repo: https://github.com/rotty/spells
description:
Spells is a collection of R6RS libraries providing features beyond R6RS in a uniform way across supported implementations.
- documentation: http://rotty.xx.vu/software/spells/ (unfortunately 404 currently)
- SPH website:
- It has some Guile library and project descriptions and links.
- http://sph.mn/
4 Projects
- Guile 100
description:
This is the repository for the Guile 100 Programs project. This is a collaborative effort to create a set of examples on how Guile might be used for real-world problems.
- git repo: https://github.com/spk121/guile100/
- website: http://www.lonelycactus.com/guile100/html/index.html
5 Programming paradigm
5.1 "Object-oriented programming"
- GOOPS
- GNU software manual page: https://www.gnu.org/software/guile/manual/html_node/GOOPS.html
5.1.1 Prototype based
- Shelf
- git repo: https://github.com/mwitmer/Shelf
5.2 Relational programming
minikanren
- git repository at GitHub: https://github.com/ijp/minikanren
- miniKanren uncourse by William Byrd: https://duckduckgo.com/?q=minikanren+uncourse&t=h_&iax=videos&ia=videos&iai=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiCuVTGWNU3s
5.3 Functional programming
- Monad implementations
- git repository at GitHub: https://github.com/ijp/monad
6 Tools
6.1 Editor support
guile.vim
- git repo: https://gitlab.com/HiPhish/guile.vim
description:
This plugin extends Vim's Scheme support to include the additions to the language provided by the GNU Guile implementation. The plugin automatically detects whether a Scheme file is a Guile file and adds syntax highlighting for Guile's special forms.
(https://gitlab.com/HiPhish/guile.vim/-/blob/master/README.rst)
repl.nvim
- git repo: https://gitlab.com/HiPhish/repl.nvim/
description:
REPL.nvim bring REPL support to Nvim! Use the built-in REPLs, add your own, or change the existing ones. Change settings in your init.vim or on the fly, make them global or local, use the existing ones or make your own.
(https://gitlab.com/HiPhish/repl.nvim/-/blob/master/README.rst)
- TODO: Emacs Guile support
- TODO: other editors support
6.2 Project management
guile-hall
- git repository at GitLab: https://gitlab.com/a-sassmannshausen/guile-hall
homebrew-guile
: https://github.com/aconchillo/guile-debbugs
6.2.1 Package managers
- GUIX package search
- website: https://hpc.guix.info/browse
- Search for example for
^guile-
to find many Guile libraries and projects.
guildhall
- git repository at GitHub: https://github.com/ijp/guildhall
- Akku
- website: https://akkuscm.org/
description:
Akku.scm is a language package manager for Scheme. It grabs hold of code and vigorously shakes it until it behaves properly.
7 Blogs
- https://hyper.dev/
- http://wingolog.org/
- http://okmij.org/ftp/Scheme/
- blog post about singletons in GNU Guile
8 Other
- SPH lib, collection of Guile libraries
- C2 Wiki Category Scheme
- C2 Wiki Guile Scheme
- C2 Wiki Scheme Language
- Community Scheme Wiki
- general
- website: http://community.schemewiki.org
- Scheme FAQ
- general
- SICP solutions
- git repo: https://github.com/alpardal/SICP-guile
description:
A SICP Study Guide With Exercise Solutions in Guile & Emacs Lisp
9 Other lists of Guile software
- official GNU Guile website library list: https://www.gnu.org/software/guile/libraries/
- SPH list: http://sph.mn/foreign/guile-software.html
10 Videos / Talks / Presentations
This category is still empty. Help filling it with interesting GNU Guile related videos, talks or presentations!