Changeset 39355 in project
- Timestamp:
- 11/23/20 22:24:04 (8 weeks ago)
- Location:
- release/5/micro-stats/trunk
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
release/5/micro-stats/trunk/micro-stats.scm
r39353 r39355 28 28 ;;; 29 29 30 ;FIXME should be in an include file from the seq-utils egg but C5 bug 31 (define-type seq (or list vector string #;linear-sequence #;random-access-sequence)) 32 (define-type binary-predicate (* * --> boolean)) 33 (define-type alist (or null (list-of (pair * *)))) 34 (define-type histogram-list list) 35 36 (define-type real (or integer float ratnum)) 37 38 (define-type statistics-alist (or null (list-of (pair symbol *)))) 39 40 (define-type statistics-set-id (or symbol boolean)) 30 (include "micro-stats-types") 41 31 42 32 (: statistics-sets (#!optional alist -> alist)) … … 47 37 (: generate-statistics-sublist (seq list #!optional vector --> (pair symbol *))) 48 38 49 (: chi-sample (seq (or real seq) --> real))50 (: chi-squares (seq seq --> seq))51 (: chi-square (seq (or real seq) --> real))52 39 (: variance (seq real --> real)) 53 40 (: standard-deviation (seq #!optional real --> real real)) … … 57 44 (: mean (seq --> real real real)) 58 45 (: percentile (seq #!optional real binary-predicate --> real)) 46 47 (: chi-sample (seq (or real seq) --> real)) 48 (: chi-squares (seq seq --> seq)) 49 (: chi-square (seq (or real seq) --> real)) 59 50 60 51 ;;; -
release/5/micro-stats/trunk/seq-utils.scm
r39353 r39355 20 20 ;;; 21 21 22 ;(define-type seq (or list vector string linear-sequence random-access-sequence)) 23 (define-type seq (or list vector string)) 22 (include "seq-utils-types") 24 23 25 (define-type binary-predicate (* * --> boolean))26 27 (define-type alist (or null (list-of (pair * *))))28 29 (define-type histogram-list list)30 31 (: sorted? (seq binary-predicate --> boolean))32 24 (: merge! (seq seq binary-predicate -> seq)) 33 25 (: merge (seq seq binary-predicate -> seq)) 26 (: sorted? (seq binary-predicate --> boolean)) 34 27 (: sort! (seq binary-predicate -> seq)) 35 28 (: sort (seq binary-predicate -> seq)) … … 42 35 (define *empty-list* (list)) 43 36 44 (define (sorted? seq less?) 45 (let ((seqv (if (or (list? seq) (vector? seq)) seq (seq:coerce *empty-list* seq)))) 46 (chicken:sorted? seqv less?) ) ) 37 (define (seq->list x) (if (list? x) x (seq:coerce *empty-list* x))) 47 38 48 39 (define (merge! a b less?) 49 (let* ( 50 (as (if (list? a) a (seq:coerce *empty-list* a))) 51 (bs (if (list? b) b (seq:coerce *empty-list* b))) 52 (rs (chicken:merge! as bs less?)) ) 40 (let ((rs (chicken:merge! (seq->list a) (seq->list b) less?))) 53 41 (if (list? a) rs (seq:coerce a rs)) ) ) 54 42 55 43 (define (merge a b less?) 56 (let* ( 57 (as (if (list? a) a (seq:coerce *empty-list* a))) 58 (bs (if (list? b) b (seq:coerce *empty-list* b))) 59 (rs (chicken:merge as bs less?)) ) 44 (let ((rs (chicken:merge (seq->list a) (seq->list b) less?))) 60 45 (if (list? a) rs (seq:coerce a rs)) ) ) 46 47 (define (sorted? seq less?) 48 (let ((ss (if (vector? seq) seq (seq->list seq)))) 49 (chicken:sorted? ss less?) ) ) 61 50 62 51 (define (sort! seq less?) 63 52 ;FIXME fill-in original from sorted-list 64 53 (let* ( 65 (s eqv (if (or (list? seq) (vector? seq)) seq (seq:coerce *empty-list*seq)))66 (rs (chicken:sort! s eqvless?)) )54 (ss (if (vector? seq) seq (seq->list seq))) 55 (rs (chicken:sort! ss less?)) ) 67 56 (if (or (list? seq) (vector? seq)) rs (seq:coerce seq rs)) ) ) 68 57 69 58 (define (sort seq less?) 70 (seq:coerce seq (chicken:sort! (seq :coerce *empty-list*seq) less?)) )59 (seq:coerce seq (chicken:sort! (seq->list seq) less?)) ) 71 60 72 61 ;;
Note: See TracChangeset
for help on using the changeset viewer.