Background: I am trying to write a program that can execute scheme in Mathematica. 

Now I have things like `{"+", 3, {"-", 2, {"'", {"*", 1, 3}}}}`. The syntax converting function I have now is:

```
convertlist[expr_] := 
Hold[expr] //. {a_, b___} :> scmfun[a][b] // ReleaseHold

```

Which works fine with expressions without `'`. `'` in scheme means hold all the expression inside, but none of the non-standard evaluation function can stop the substitution, and lots of small changes won't work because `ReplaceRepeated` will eventually get to the inside expression . and the workaround I currently have seems to be very strange and complex (have to give up this simple design).

My question is that can this function be modified so that everything inside `'` is unchanged, i.e.:`convertlist[{"+", 3, {"-", 2, {"'", {"*", 1, 3}}}}]` will return

```
scmfun["+"][3, scmfun["-"][2, {"*", 1, 3}]] 

```

instead of 

```
scmfun["+"][3, scmfun["-"][2, scmfun["'"][scmfun["*"][1, 3]]]]

```