Solution to Project Euler #1 - multiples of 3 and 5 I have been programming for about ~2 years, and mostly wrote OOP and structural code. Recently, I have decided to pick up a functional programming language, and Haskell being too alien for me, looked to Racket (since it is high time I learned a LISP anyways) and am loving it. Since this is a new area of programming for me, I would appreciate any feedback you could give me on this program. It is the solution to the first Project Euler program.

;If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
;Find the sum of all the multiples of 3 or 5 below 1000.

#lang racket

(define max 1000)

(define (multiple_of base test)
    (equal? (remainder test base) 0))

(define (primes current total)
    (if (&lt; current max)
        (primes
            (+ current 1)
            (+ total (if
                (or (multiple_of 5 current) (multiple_of 3 current)) current 0)))
        total))

(primes 1 0)

; Output: 233168
; Success
In Scheme, we use hyphens to separate words, not underscores. Also boolean-returning procedures should end in ?. So it should be multiple-of?
Instead of (equal? x 0), use (zero? x).
Instead of a recursive loop, you can use for comprehensions:

(for/sum ((i (in-range 1000))
          #:when (or (multiple-of? 5 i)
                     (multiple-of? 3 i)))
  i)


Surely, that's much more readable. In my humble opinion. :-)
Notwithstanding the last comment, your formatting for your primes procedure is not ideal. Here's a more proper formatting:

(define (primes current total)
  (if (&lt; current max)
      (primes (add1 current)
              (+ total (if (or (multiple-of? 5 current)
                               (multiple-of? 3 current))
                           current
                           0)))
      total))