Re: applying macros

Liste des GroupesRevenir à cl scheme 
Sujet : Re: applying macros
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 19. Sep 2024, 10:45:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vcgoan$gn8h$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

Rainer Joswig wrote:
 
(defun average-function (list)
  (assert list (list)
          "List should not be empty.")
  (loop for i from 0
        for item in list
        sum item into result
        finally (return (/ result i))))
 
It's shorter in Gauche Scheme.
 
(define (average-function lst)
  (let1 n 0
    (/ (fold (lambda (x sum) (inc! n) (+ x sum)) 0 lst)
       n)))

Another way.

(define (average-function lst)
  (let1 n 0
    (/ (@ fold x sum : (inc! n) (+ x sum) : 0 lst)
       n)))

Given:

(define-syntax @-aux
  (syntax-rules (:)
    ;; No parameters given; use "cut".
    [(_ func () ((e0 e ...)) : stuff ...)
     (func (cut e0 e ...) stuff ...)]
    [(_ func vars (e0 e ...) : stuff ...)
     (func (lambda vars e0 e ...) stuff ...)]
    [(_ func vars (e0 e ...) expr more ...)
     (@-aux func vars (e0 e ... expr) more ...)]
    [(_ func vars () : expr more ...)
     (@-aux func vars (expr) more ...)]
    [(_ func (vars ...) () var more ...)
     (@-aux func (vars ... var) () more ...)]))

(define-syntax @
  (syntax-rules ()
    [(_ func stuff ...)
     (@-aux func () () stuff ...)]))

Date Sujet#  Auteur
19 Sep09:32 * Re: applying macros2B. Pym
19 Sep10:45 `- Re: applying macros1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal