{"size": 2221, "ext": "scrbl", "max_stars_repo_path": "rackpgmp/perflinty/docs/perflinty-auto.scrbl", "max_stars_repo_name": "bluephoenix47/pgmp", "max_stars_repo_stars_event_min_datetime": "2015-04-26T14:23:58.000Z", "max_stars_repo_stars_event_max_datetime": "2015-04-26T14:23:58.000Z", "max_issues_repo_path": "rackpgmp/perflinty/docs/perflinty-auto.scrbl", "max_issues_repo_name": "bluephoenix47/pgmp", "max_issues_repo_issues_event_min_datetime": "2015-02-12T17:56:28.000Z", "max_issues_repo_issues_event_max_datetime": "2015-04-14T04:04:26.000Z", "max_forks_repo_path": "rackpgmp/perflinty/docs/perflinty-auto.scrbl", "max_forks_repo_name": "bluephoenix47/pgmp", "max_forks_repo_forks_event_min_datetime": "2016-04-10T19:03:41.000Z", "max_forks_repo_forks_event_max_datetime": "2016-04-10T19:03:41.000Z"}
{"max_stars_count": 1, "max_issues_count": 8, "max_forks_count": 1, "avg_line_length": 27.0853658537, "max_line_length": 79, "alphanum_fraction": 0.6717694732}
#lang scribble/manual
@(require
   (for-label
     (prefix-in builtin: racket/base)
     "../auto.rkt"
     "../vector.rkt"
     "../list.rkt"))

@title{Perflinty Auto}
@defmodule[perflinty/auto]

This section describes a sequence library that automatically
specializes each instance to a @racket[list] or
@racket[vector], depending on the @racket[list] and @racket[vector]
@tech{score}s of each instance of a @racket[seq].

@defform[(seq v ...)]{
Like a @racket[list] or @racket[vector], depending on the @racket[list]
and @racket[vector] @tech{score}s for this instance.
}

@defproc[(seq? [s? any/c]) boolean?]{
Returns @racket[#t] if @racket[s?] is a @racket[seq], and @racket[#f]
otherwise.

@racket[seq?] does not affect @tech{score}s.
}

@defproc[(seq-map [proc procedure?] [s seq?]) seq?]{
Like a @racket[map] or @racket[vector-map] but on @racket[seq]s.

@racket[seq-map] does not affect @tech{score}s.
}

@defproc[(seq-first [s seq?]) any/c]{
Like a @racket[car] or @racket[(vector-ref s 0)] but on @racket[seq]s.

@racket[seq-first] adds 1 to the @racket[list] @tech{score}.
}

@defproc[(seq-rest [s seq?]) seq?]{
Like a @racket[cdr] but on @racket[seq]s.

@racket[seq-rest] adds 1 to the @racket[list] @tech{score}.
}

@defproc[(seq-cons [ele any/c] [s seq?]) seq?]{
Like a @racket[cons] but on @racket[seq]s.

@racket[seq-cons] adds 1 to the @racket[list] @tech{score}.
}

@defproc[(seq-append [s1 seq?] [s2 seq?]) seq?]{
Like a @racket[append] but on @racket[seq]s.

@racket[seq-append] adds 1 to the @racket[list] @tech{score}.
}

@defproc[(seq-copy [s seq?]) seq?]{
Like a @racket[vector-copy] but on @racket[seq]s.

@racket[seq-copy] does not affect @tech{score}s.
}

@defproc[(seq-ref [s seq?] [pos exact-nonnegative-integer?]) any/c]{
Like a @racket[vector-ref] but on @racket[seq]s.

@racket[seq-ref] adds 1 to the @racket[vector] @tech{score}.
}

@defproc[(seq-set! [s seq?] [pos exact-nonnegative-integer?] [v any/c]) void?]{
Like a @racket[vector-set!] but on @racket[seq]s.

@racket[seq-set!] adds 1 to the @racket[vector] @tech{score}.
}

@defproc[(seq-length [s seq?]) any/c]{
Like a @racket[vector-length] but on @racket[seq]s.

@racket[seq-length] adds 1 to the @racket[vector] @tech{score}.
}
