Guile libraries ideas!

Please list ideas for still non-existing libraries for the Guile ecosystem you would consider useful.

Also, if you can, mention if it’s approachable for beginners, or if a more advanced level of expertise is needed.

I’d love to see a more fully featured org-mode parser in guile (there’s present/org-mode.scm · master · Andy Wingo / guile-present · GitLab one as part of guile-present that supports a sparse subset of org-mode syntax), more specifically something that implements orgmode->sxml so it can easily be used with guile haunt. I tried to do this myself but ran into the classic issue of having too little time/other things to hack on, the org-mode specification is here Org Syntax if anyone wants to give it a try; imho it could be a rewardful learning experience/suitable for beginners even though it may be a bit frustrating at first as a project if one wants to do it correctly from the beginning.

1 Like

Maybe not essential, here are some libraries that I could not find.

  • an improved option parser (getopt is good but it lacks some features compared to argparse)
  • a small web framework like express. I tried artanis as a library but I did not manage to get it working (It works as a full framework).
  • an rx library (or should peg be used for this ? , I’m not sure I have not used it)
  • sxml->html library with html->sxml support.

What is the general consensus for a parsing strategy for something like this? Simpler to use parsing combinators, PEG or a handwritten recursive descent approach?

Doing some reading, I feel that the PEG approach would be a simpler solution to start with. They’re often used for simpler syntaxes and can be relatively easy to implement. Libraries like peg or nom can be adapted for Scheme to build PEG parsers.

Thoughts?

Personally I would love to see an implementation of a NATS client. Unfortunately I’m not fit enough but I guess creating a thin guile wrapper using the Foreign Function Interface to call into the official C client is a manageable effort.
At it’s core NATS is “just” a messaging system providing publish-subscribe and request-reply semantics, but together with the included Jetstream it provides additional building blocks like a key-value store and even an object store.

I would love to see Web driver protocol implementation. I think guile work perfectly for web scraping, web automation stuff.

Clojure has done a excellent work on GitHub - clj-commons/etaoin: Pure Clojure Webdriver protocol implementation

Edit: I found something similar in guile which is written in guile 2

1 Like