string function returns literal list

Started by sigipa, October 18, 2016, 06:43:50 PM

Previous topic - Next topic

sigipa

Hello All,



When the string function is applied to a list, it returns a literal list. See code below.



(string '("a" "b" "c"))



This returns: ("a" "b" "c")



I expected it to return: "abc"



Is this working as intended? If so, is there another function that will return a string without the parens and quotes?



Thanks,

-S

steloflute

#1
It is intended. See http://www.newlisp.org/downloads/newlisp_manual.html#string">//http://www.newlisp.org/downloads/newlisp_manual.html#string


QuoteTranslates into a string anything that results from evaluating exp-1—. If more than one expression is specified, the resulting strings are concatenated.


(string 'hello)          → "hello"
(string 1234)            → "1234"
(string '(+ 3 4))        → "(+ 3 4)"
(string (+ 3 4) 8)       → "78"
(string 'hello " " 123)  → "hello 123"


I suggest using apply as follows:
> (apply string '("a" "b" "c"))
"abc"

sigipa

#2
Hi,



Works perfectly. Thanks.



-S

kesha

#3
Hi,

http://www.newlisp.org/downloads/newlisp_manual.html#join">//http://www.newlisp.org/downloads/newlisp_manual.html#join



> (set 'MYLIST '("a" "b" "c"))
("a" "b" "c")
> (join MYLIST)
"abc"
> (join MYLIST "-")
"a-b-c"
> (join MYLIST (string "-" (join MYLIST) "-"))
"a-abc-b-abc-c"