~ chicken-core (chicken-5) ac9bf937f7a3bf39a1b4044f8d4328756d9b4a52
commit ac9bf937f7a3bf39a1b4044f8d4328756d9b4a52
Author: felix <bunny351@gmail.com>
AuthorDate: Mon Apr 26 12:23:46 2010 +0200
Commit: felix <bunny351@gmail.com>
CommitDate: Mon Apr 26 12:23:46 2010 +0200
added symbol-append
diff --git a/library.scm b/library.scm
index 47e77c05..dabacde0 100644
--- a/library.scm
+++ b/library.scm
@@ -1210,6 +1210,16 @@ EOF
(err prefix) ) ) )
(##sys#number->string counter) ) ) ) ) ) )
+(define symbol-append
+ (let ((string-append string-append))
+ (lambda ss
+ (##sys#intern-symbol
+ (apply
+ string-append
+ (map (lambda (s)
+ (##sys#check-symbol s 'symbol-append)
+ (##sys#symbol->string s))
+ ss))))))
;;; Keywords:
diff --git a/manual/Unit library b/manual/Unit library
index ef0f01d3..08458f9d 100644
--- a/manual/Unit library
+++ b/manual/Unit library
@@ -926,6 +926,13 @@ the new symbol is prefixed with that argument.
Returns a newly created, unique symbol with the name {{STRING}}.
+==== symbol-append
+
+<procedure>(symbol-append SYMBOL1 ...)</procedure>
+
+Creates a new interned symbol from the concatenated names of the argument symbols
+{{(SYMBOL1 ...)}}.
+
=== Standard Input/Output
diff --git a/types.db b/types.db
index 5021ee45..204a941b 100644
--- a/types.db
+++ b/types.db
@@ -80,6 +80,7 @@
(assv (procedure assv (* list) *))
(assoc (procedure assoc (* list #!optional (procedure (* *) *)) *))
(symbol? (procedure symbol? (*) boolean))
+(symbol-append (procedure symbol-append (#!rest symbol) symbol))
(symbol->string (procedure symbol->string (symbol) string))
(string->symbol (procedure string->symbol (string) symbol))
(number? (procedure number? (*) boolean))
Trap