(use-modules (srfi srfi-1))

; only for the nice test
#!curly-infix

(define-syntax fast-sum
  (syntax-rules (iota)
    ((fast-sum (iota count start))
     (+ 1
        (apply - 
          (map (lambda (x) (/ {x * {x + 1} } 2))
                (list {count + {start - 1}} start)))))
    ((fast-sum e)
     (apply + e))))