I now have the following.  I couldn't find an equivalent of python's join 
(in Common Lisp there is format, of course), which takes a string and a 
list of strings, and puts the first between all the others...

comments very welcome!

Martin

sageprint(x:InputForm):String ==
    atom? x =>
        float? x => return float(x)::String
    integer? x => return integer(x)::String
    string? x => return concat(["_"", string(x)::String, "_""])$String
    symbol? x => return string(symbol(x))
    S: List String := [sageprint y for y in destruct x]
    R: String := new(1 + reduce(_+, [1 + #(s)$String for s in S], 0), 
space()$Character)
    copyInto!(R, "(", 1)
    i := 2
    for s in S repeat
        copyInto!(R, s, i)
        i := i + 1 + #(s)$String
    copyInto!(R, ")", i-1)
    return R

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to