String append: Difference between revisions

Content added Content deleted
(Emacs Lisp: Correct example, demonstrate buffer solution)
Line 636: Line 636:


=={{header|Emacs Lisp}}==
=={{header|Emacs Lisp}}==

===version 1===
While strings in Emacs Lisp are mutable, they're fixed size. Therefore the <code>concat</code> function creates a new string and the existing string must be referenced twice:
<lang Emacs Lisp>

(defun glue (str1 str2)
<lang Lisp>(defvar str "foo")
(concat str1 str2) )
(setq str (concat str "bar"))
</lang>
str ;=> "foobar"</lang>
===version 2===

<lang Emacs Lisp>
Buffers can be thought of as expandable strings:
(defun glue (str1 str2)

(format "%s%s" str1 str2) )
<lang Lisp>(let ((buf (get-buffer-create "*foo*")))
</lang>
(with-current-buffer buf
<b>Eval:</b>
(insert "foo"))
<lang Emacs Lisp>
(with-current-buffer buf
(setq str "Hello, ")
(goto-char (point-max))
(setq str (glue str "World!") )
(insert str)
(insert "bar")
(buffer-string)))
</lang>
;; => "foobar"</lisp>
<b>Output:</b>
<pre>
Hello, World!
</pre>


=={{header|Erlang}}==
=={{header|Erlang}}==