Jacob Hrbek schreef op vr 17-12-2021 om 01:42 [+0000]: > I am used to working with common lisp where i can write code that is > "implementation independent" meaning that following a specific coding > style makes it compatible across multiple interpretators/compilers > (sbcl, LispWorks, etc..) > > Is there a way to do the same on GNU Guile? Like writing a code that > can > be interpreted by implementations that are following the IEEE 1178- > 2008 > or R7RS standard?
I'm not aware of any Scheme implementations acknowleding that IEEE 1178-2008 even exists. So for most practical intents and purposes, IEEE 1178-2008 isn't a standard at all. The de facto and de jure standards are the RnRS (https://docs.racket-lang.org/r5rs/r5rs-std/index.html, http://www.r6rs.org/, https://small.r7rs.org/) and the SRFIs (https://srfi.schemers.org/). The RnRS and SRFIs are supposedly not official, but I don't see why since there is a discussion process, a ratification process and everything --- although often Schemes don't bother implementing all of R6RS (out of inertia, minimalism, maybe backwards compatibility, limited developer time, parts being problematic to implement (e.g. 'include-ci')) and sometimes disagree about arcane details. Often only a selection of the SRFIs are implemented. Overall, you can't do everything in portable Schemes, but most things can be made reasonably portable by using the SRFIs and RnRS (e.g. 'define-library' or 'library' instead of 'define-module'), though at times some implementation-specific code is required (e.g. for FFI and GUIs). Greetings, Maxime.