How do I take a slice of a list (A sublist) in scheme?

后端 未结 6 2084
悲&欢浪女
悲&欢浪女 2020-12-31 07:09

Given a list, how would I select a new list, containing a slice of the original list (Given offset and number of elements) ?

EDIT:

Good suggestions so far. I

6条回答
  •  甜味超标
    2020-12-31 07:45

    The following code will do what you want:

    (define get-n-items
        (lambda (lst num)
            (if (> num 0)
                (cons (car lst) (get-n-items (cdr lst) (- num 1)))
                '()))) ;'
    
    (define slice
        (lambda (lst start count)
            (if (> start 1)
                (slice (cdr lst) (- start 1) count)
                (get-n-items lst count))))
    

    Example:

    > (define l '(2 3 4 5 6 7 8 9)) ;'
    ()
    > l
    (2 3 4 5 6 7 8 9)
    > (slice l 2 4)
    (3 4 5 6)
    > 
    

提交回复
热议问题