So I gave it another whirl and here's my attempt to capture the essence of you're problem:
For example you would like to do this:
[1] arc> (spanclass "links"
(string "use this link:"
(tag (a href "http://mydomain.com/the-place-to-go") "here"))
And have it return this:
<span class="links">use this link:<a href="http://mydomain.com/the-place-to-go">here</a></span>
and your first attempt might be something like this:
[2] arc> (spanclass "links"
(pr:string "use this link:"
(tag (a href "http://mydomain.com/the-place-to-go")(pr "here")))
only you find it returns the wrong results:
<span class="links"><a href="http://mydomain.com/the-place-to-go">here</a>use this link:</span>
so now you're probably thinking by having functions return strings like this:
[3] arc> (tag (a href "http://mydomain.com/the-place-to-go") "here")
"<a href=\"http://mydomain.com/the-place-to-go\">here</a>"
then the original function [1] would have worked.
Instead, with arc, you need to approach your code differently. You need to think about the timing of when things are happening rather
than having available 'string-things' that you can compose by nesting your functions.
So with arc [1] needs to become [4]:
[4] arc> (spanclass "links"
(pr "use this link:")
(tag (a href "http://mydomain.com/the-place-to-go")(pr "here")))
<span class="links">use this link:<a href="http://mydomain.com/the-place-to-go">here</a></span>
Am I capturing it correctly? Does this answer your question on how I compose my functions?