File: implode.scm

package info (click to toggle)
scheme9 2025.08.12-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,080 kB
  • sloc: lisp: 16,752; ansic: 11,869; sh: 806; makefile: 237; sed: 6
file content (20 lines) | stat: -rw-r--r-- 553 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
; Scheme 9 from Empty Space, Function Library
; By Nils M Holm, 2009
; Placed in the Public Domain
;
; (implode list)  ==>  symbol
;
; Implode a list of single-character symbols into a symbol.
;
; Example:   (implode '(b l a c k h o l e))  ==>  blackhole

(define (implode x)
  (letrec
    ((sym->char
       (lambda (x)
         (let ((str (symbol->string x)))
           (if (= (string-length str) 1)
               (string-ref str 0)
               (error "bad symbol in implode" x))))))
    (string->symbol
      (list->string (map sym->char x)))))