Я пытался написать (что я нашел) очень полезный splitOn
от Haskell в Racket (Схема). Я закончил с тем, что следует, и это не совсем работает. Под этим я подразумеваю, что он просто работает и пожирает мою память. take-until
и drop-until
оба работают, так что я делаю неправильно именно в split-on
?
(define (split-on lst pred)
(cons (take-until lst pred) (split-on (drop-until lst pred) pred)))
(define (take-until lst pred)
(take lst (- (length lst)
(if (memf pred lst)
(length (memf pred lst))
0))))
(define (drop-until lst pred)
(drop lst (length (take-until lst pred))))