> \repeat unfold is not evaluated at all. It stays a repeat _expression_
> until it gets interpreted. One reason it is implemented that way is in
> order to keep the repeats in
>
> \relative c' { \repeat unfold 4 { c e g } }
>
> in the same octave rather than get
>
> \relative c' { c e g c e g c e g c e g }
>
> which crosses four octaves.
I understand this pragmatism. It is clear that in a piece when you write something like
\relative c' {
....somemusic.....
\repeat unfold 4 { c e g }
....somemusic.....
}
you expect to repeat {c e g} on the same octave. If you don't do it, \relative became a command pretty unusable.
But the side effect of this semantic choice looks very important to me. We're introducing a strong exceptional behavior, don't we?
For me (this is my opinion, and of course I'm not a lilypond/musician etc. expert) I would prefer force the user to write
\version "2.19.54"
{
\repeat unfold 2 \relative c' {c e g}
}
rather than lost the orthogonality of the language.
Just my two cents.