Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

A mathematician is a device for turning coffee into theorems. -- P. Erdos


devel / comp.lang.lisp / .Re: Working on learning lisp

SubjectAuthor
o .Re: Working on learning lispRobert L.

1
.Re: Working on learning lisp

<sunlkn$1itv$1@gioia.aioe.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=16892&group=comp.lang.lisp#16892

  copy link   Newsgroups: comp.lang.lisp
Path: i2pn2.org!i2pn.org!aioe.org!oLbwv41N8DscUwPT6F1sxQ.user.46.165.242.75.POSTED!not-for-mail
From: No_spamming@noWhere_7073.org (Robert L.)
Newsgroups: comp.lang.lisp
Subject: .Re: Working on learning lisp
Date: Fri, 18 Feb 2022 08:33:29 -0000 (UTC)
Organization: Aioe.org NNTP Server
Message-ID: <sunlkn$1itv$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Info: gioia.aioe.org; logging-data="52159"; posting-host="oLbwv41N8DscUwPT6F1sxQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: XanaNews/1.18.1.6
X-Notice: Filtered by postfilter v. 0.9.2
 by: Robert L. - Fri, 18 Feb 2022 08:33 UTC

Rainer Joswig wrote:

> (defun split-string (string &optional (separators " ,-"))
> "Splits STRING into a list of substrings (which is returned)
> separated by the characters in the sequence SEPARATORS. Empty
> substrings aren't collected."
> (flet ((make-collector ()
> (make-array 0
> :adjustable t
> :fill-pointer t
> :element-type #+:lispworks 'lw:simple-char
> #-:lispworks 'character)))
> (loop with collector = (make-collector)
> for char across string
> for counter downfrom (1- (length string))
> when (find char separators :test #'char=)
> when (plusp (length collector))
> collect collector
> and do (setq collector (make-collector))
> (vector-push-extend char collector)
> else do (vector-push-extend char collector) end
> else
> do (vector-push-extend char collector)
> and when (zerop counter) collect collector)))
>

(use srfi-13) ;; string-fold for Gauche Scheme
or
(require srfi/13) ;; string-fold for Racket

(define (string-split-inclusive str . chars)
(reverse
(filter-map (lambda (xs)
(and (pair? xs) (apply string (reverse xs))))
(string-fold
(lambda (c accum)
(if (member c chars)
(cons (list c) accum)
(cons (cons c (car accum)) (cdr accum))))
'(())
str))))

(string-split-inclusive "" #\; #\,)
===>
()

(string-split-inclusive ";foo,bar;baz;" #\; #\,)
===>
(";foo" ",bar" ";baz" ";")
(";foo" ",bar" ";baz" ";")

(string-split-inclusive "{pal}{buddy}{/buddy}{/pal}" #\{)
===>
("{pal}" "{buddy}" "{/buddy}" "{/pal}")


devel / comp.lang.lisp / .Re: Working on learning lisp

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor