~ 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