• bug (Funarg problem) in Gauche (Scheme) ?

    From HenHanna@HenHanna@devnull.tb to comp.lang.scheme,comp.lang.lisp,fj.comp.lang.lisp on Sun May 19 00:41:09 2024
    From Newsgroup: comp.lang.scheme

    From the Gauche (Scheme) manual:

    (cartesian-product rCO((a b c) (0 1)))
    rcA ((a 0) (a 1) (b 0) (b 1) (c 0) (c 1)) ___________________________________________________
    The Gauche (Scheme) manual describes
    string-count and cartesian-product
    as built-in functions, but I couldn't use them and ended up defining
    them myself.

    (define (cartesian-product x)
    (if (null? (cdr x))
    (map list (car x))
    (apply append
    (map (lambda (F)
    (map (lambda (R) (cons F R)) (cartesian-product (cdr x))))
    (car x)))))

    (print (cartesian-product '((0 1))) ) ==> ((0) (1))
    (print (cartesian-product '((a b)(0 1))) ) ==> ((a 0) (a 1) (b 0) (b 1))

    ________________________________________

    The above code works fine, but when i rename the variable (F) as (x), i
    get the following error, and this must be a bug in Gauche (Scheme).

    gosh> (load "CpMerge.lsp")
    ((0) (1))
    *** ERROR: pair required, but got a
    While loading "./CpMerge.lsp" at line 19
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From HenHanna@HenHanna@devnull.tb to comp.lang.scheme,comp.lang.lisp,fj.comp.lang.lisp on Sun May 19 03:37:26 2024
    From Newsgroup: comp.lang.scheme

    On 5/19/2024 12:41 AM, HenHanna wrote:
    From the Gauche (Scheme)-a manual:

    -a-a-a-a-a-a-a-a-a-a-a-a (cartesian-product rCO((a b c) (0 1)))
    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a rcA-a-a-a-a-a-a-a-a ((a 0) (a 1) (b 0) (b 1) (c 0) (c 1))
    ___________________________________________________
    The-a Gauche (Scheme)-a manual-a describes
    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a string-count and cartesian-product
    as built-in functions, but I couldn't use them and ended up defining
    them myself.

    (define (cartesian-product x)
    -a (if (null? (cdr x))
    -a-a-a (map list (car x))
    -a-a-a (apply append
    -a-a-a-a-a (map (lambda (F)
    -a-a-a-a-a-a-a-a-a-a-a-a (map (lambda (R) (cons F R)) (cartesian-product (cdr x))))
    -a-a-a-a-a-a-a-a-a-a (car x)))))

    (print (cartesian-product '((0 1))) )-a-a-a-a-a ==> ((0) (1))
    (print (cartesian-product '((a b)(0 1))) ) ==> ((a 0) (a 1) (b 0) (b 1))

    ________________________________________

    The above code works fine, but when i rename the variable (F) as (x), i
    get the following error, and this must be a bug in-a Gauche (Scheme).

    -a-a-a-a-a-a-a-a-a-a-a gosh>-a (load "CpMerge.lsp")
    -a-a-a-a-a-a-a-a-a-a-a ((0) (1))
    -a-a-a-a-a-a-a-a-a-a-a *** ERROR: pair required, but got a
    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a While loading "./CpMerge.lsp" at line 19



    No... my bad... That's not a bug. Just my error!
    --- Synchronet 3.22a-Linux NewsLink 1.2