I think I ran into this issue in a different place.

Guile does not support the ((library (foo bar) ...) form in cond-expand, so one way around it is to have (cond-expand (srfi-N ... ) ((library (srfi N)) ...) but in a situation where srfi-N is false Guile tries to evaluate the (library ... form and errors with (in the case of N being 180):

In procedure symbol->string: Wrong type argument in position 1 (expecting symbol): 180


Here is the example code:

(import (scheme base)
        (scheme write))

(cond-expand
  (srfi-180
    (display "I has SRFI 180 :)")
    (newline))
  ((library (srfi 180))
    (display "I has SRFI 180 :)")
    (newline))
  (else
    (display "I do not has SRFI 180 :(")
    (newline)))

It also errors without the number there, saying (switching 180 -> foo):

no code for module (srfi foo)



Reply via email to