list 操作函数

以下是一些列表操作函数,只是为了熟悉点对和列表操作,并不考虑容错性能等。所以仅供参考。

;list func
;ss-list-create-value
(define (ss-list-create-value v n)
(if (= n 0)
`()
(cons v (ss-list-create-value v (- n 1)))))
;ss-list-create-range
(define (ss-list-create-range p0 p1)
(if (> p0 p1)
`()
(cons p0 (ss-list-create-range (+ p0 1) p1))))
;ss-list-create-func
(define (ss-list-create-func p0 p1 func)
(if (> p0 p1)
`()
(cons p0 (ss-list-create-func (func p0) p1 func))))
;ss-list-ref
(define (ss-list-ref s n)
(if (= n 0)
(car s)
(ss-list-ref (cdr s) (- n 1))))
;ss-list-length
(define (ss-list-length s)
(if (null? s)
0
(+ 1 (ss-list-length (cdr s)))))
;ss-list-add
(define (ss-list-add s v)
(if (null? s)
(cons v `())
(cons (car s) (ss-list-add (cdr s) v))))
;ss-list-remove
(define (ss-list-remove s v)
(if (= (car s) v)
(cdr s)
(cons (car s) (ss-list-remove (cdr s) v))))
;ss-list-for-each
(define (ss-list-for-each s func)
(if (null? s)
#t
(begin
(func (car s))
(ss-list-for-each (cdr s) func))))
;ss-list-append
(define (ss-list-append s1 s2)
(if (null? s1)
s2
(cons (car s1) (ss-list-append (cdr s1) s2))))
;ss-list-limit
(define (ss-list-limit s op)
(define (iter s v)
(if (null? s)
v
(if (op v (car s))
(iter (cdr s) v)
(iter (cdr s) (car s)))))
(iter s (car s)))
;ss-list-min
(define (ss-list-min s) (ss-list-limit s <))
;ss-list-max
(define (ss-list-max s) (ss-list-limit s >))
;ss-list-sort
(define (ss-list-sort s op)
(if (null? s)
`()
(cons (op s) (ss-list-sort (ss-list-remove s (op s)) op))))
;ss-list-reverse
(define (ss-list-reverse s)
(define (iter s n)
(if (< n 0)
`()
(cons (ss-list-ref s n) (iter s (- n 1)))))
(iter s (- (ss-list-length s) 1)))
;ss-list-find
(define (ss-list-find s v)
(define (iter s n)
(if (= (car s) v)
n
(iter (cdr s) (+ n 1))))
(iter s 0))
;ss-list-map
(define (ss-list-map s func)
(if (null? s)
`()
(cons (func (car s)) (ss-list-map (cdr s) func))))
;ss-list-filter
(define (ss-list-filter s func)
(if (null? s)
`()
(if (func (car s))
(cons (car s) (ss-list-filter (cdr s) func))
(ss-list-filter (cdr s) func))))
;ss-list-print
(define (ss-list-print s)
(if (null? s)
`()
(begin
(display (car s))
(newline)
(ss-list-print (cdr s)))))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值