Find the Hardy–Ramanujan number using R5RS scheme
Your code looks mostly fine, I see a few very minor things to comment on:


There's no need to define cube and cube-root at the innermost scope,
Using define for internal functions makes it look a little clearer,
This is related to the second part of your question: you're using inexact-&gt;exact on a floating point number which can lead to large rationals (in the sense that you allocate a pair of two big integers) -- it would be better to avoid this,
Doing that still doesn't solve the extra test that you do -- but that's only because you're not certain if you have the right number of if you missed by 1.  Given that it should be close to an integer, you can just use round and then do one check, saving you one test.


Fixing the above, and doing it in one function that returns the number when it's found, and using some more "obvious" identifier names, I get this:

(define (hardy-ramanujan-number n)
  (define (cube n) (expt n 3))
  (define (cube-root n) (inexact-&gt;exact (round (expt n 1/3))))
  (let iter ([i 1] [count 0])
    (if (&gt; (+ (cube i) 1) (/ n 2))
      (hardy-ramanujan-number (+ n 1))
      (let* ([i^3   (cube i)]
             [j^3   (cube (cube-root (- n i^3)))]
             [count (if (= n (+ i^3 j^3)) (+ count 1) count)])
        (if (= count 2) n (iter (+ i 1) count))))))


I'm running this on Racket, and it looks like it's about 10 times faster (50ms vs 5ms).