Re: case and quoted keys - a misunderstanding

Liste des GroupesRevenir à cl scheme 
Sujet : Re: case and quoted keys - a misunderstanding
De : 643-408-1753 (at) *nospam* kylheku.com (Kaz Kylheku)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 14. Sep 2024, 18:38:54
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20240913182544.67@kylheku.com>
References : 1
User-Agent : slrn/pre1.0.4-9 (Linux)
On 2024-09-13, B. Pym <Nobody447095@here-nor-there.org> wrote:
Frode Vatvedt Fjeld wrote:
>
(defun read-to-char (c stream)
  (let ((x (read-char stream nil)))
    (cond ((null x)         nil)
          ((char= x c)      t)
          (t                (read-to-char c stream)))))
>
This isn't much worse looking then the obvious iterative solutions.
 
..only it has Scheme written all over it ;-) In Common Lisp this is
spelled as
 
  (defun read-to-char (c stream)
    (loop for x = (read-char stream nil)
       while x do (when (char= x c) (return t))))
>
It's shorter in Gauche Scheme:
>
(use srfi-42) ;; first-ec
>
(define (read-to-char c port)
  (first-ec #f
    (:port x port read-char)
    (if (char=? x c))
    #t))
>
Testing.
>
(call-with-input-string "foo-Frodo is foolish."
  (lambda (in)  (read-to-char #\- in)
    (read-line in)))
 ===>
"Frodo is foolish."
>
Shorter yet:

What, that is longer?

(use srfi-121) ; generators
>
(define (read-to-char c port)
  (generator-find (is c) (cut  read-char port)))
>
Given:
>
(define-syntax is
  (syntax-rules ()
    [(is x)
     (lambda (y) (equal? y x))]
    [(is compare x)
     (lambda (y) (compare y x))]
    [(is key compare x)
     (lambda (y) (compare (key y) x))]))

The "Given:" has to count as part of the length of the solution.

Otherwiwse, we can just say:

  " Shorter yet:
 
    ;; nothing

    Given:

    (define (read-to-char c port) ...) "

If you can factor out any aspect of your solution into macros
and functions which don't count toward its size, then you just
do that with the function you are supposed to write, and
the solution has zero size.

--
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca

Date Sujet#  Auteur
14 Sep00:59 * Re: case and quoted keys - a misunderstanding2B. Pym
14 Sep18:38 `- Re: case and quoted keys - a misunderstanding1Kaz Kylheku

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal