Giter Site home page Giter Site logo

Comments (4)

mnieper avatar mnieper commented on August 16, 2024 1

cond-expand is evaluated during expansion time, which happens after reading. Any R7RS implementation is free to reject the code posted in the beginning. The correct way is to use include in the cond-expand branch. The file which include references won't be read if that cond-expand branch is not evaluated.

from chibi-scheme.

ashinn avatar ashinn commented on August 16, 2024 1

Yes, this is working as expected. To be able to process the cond-expand form we need to be able to read it first, and the #: syntax is not valid R7RS. include allows you to conditionally load code with non-portable read syntax.

Alternatively, use a separate module file for Guile.

  • R7RS library polyglot.sld
(define-library (polyglot)
  (import (scheme base)
          (scheme write))
  (include "polyglot-impl.scm")
  (export test))
  • Guile library polyglot.scm (or R6RS library polyglot.sls)
(define-module (polyglot)
          #:export (test))
(include-from-path "polyglot-impl.scm")
  • Implementation polyglot-impl.scm
(define (test)
  (display "Worked")
  (newline))

from chibi-scheme.

Marie-Joseph avatar Marie-Joseph commented on August 16, 2024

fwiw the workaround to this issue is to use R7RS-style library definitions even within the Guile branch. Guile accepts this just fine. However, this still feels like it shouldn't be necessary.

(and from the Guile side, Guile should accept .sld files by default but doesn't without the right flags, so you have to have a library/module definition at the top of the .scm file anyway. just so y'all know I'm not picking on Chibi ;) )

from chibi-scheme.

Marie-Joseph avatar Marie-Joseph commented on August 16, 2024

Thanks for the guidance!

from chibi-scheme.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.