{"size": 1357, "ext": "scrbl", "max_stars_repo_path": "rackpropagator-doc/rackpropagator/scribblings/limitations.scrbl", "max_stars_repo_name": "ots22/rackpropagator", "max_stars_repo_stars_event_min_datetime": "2020-02-14T03:37:57.000Z", "max_stars_repo_stars_event_max_datetime": "2022-01-31T11:20:59.000Z", "max_issues_repo_path": "rackpropagator-doc/rackpropagator/scribblings/limitations.scrbl", "max_issues_repo_name": "ots22/rackpropagator", "max_issues_repo_issues_event_min_datetime": "2022-01-03T14:01:10.000Z", "max_issues_repo_issues_event_max_datetime": "2022-01-03T22:05:51.000Z", "max_forks_repo_path": "rackpropagator-doc/rackpropagator/scribblings/limitations.scrbl", "max_forks_repo_name": "ots22/rackpropagator", "max_forks_repo_forks_event_min_datetime": "2022-01-03T13:34:07.000Z", "max_forks_repo_forks_event_max_datetime": "2022-01-03T13:34:07.000Z"}
{"max_stars_count": 11, "max_issues_count": 1, "max_forks_count": 1, "avg_line_length": 32.3095238095, "max_line_length": 71, "alphanum_fraction": 0.7921886514}
#lang scribble/manual

@require{common.rkt}

@title{Limitations}

@itemlist[

@item{performance of the generated code can be very poor in some
situations.}

@item{Differentiating involves first @seclink["fully-expanded" #:doc
'(lib "scribblings/reference/reference.scrbl")]{expanding} the given
expression. The expansion might include bindings not provided by any
module. It may be inconvenient or impossible to attach backpropagators
to these.}

@item{Multiple return values are not supported anywhere in the
expansion of the expression being differentiated.}

@item{Use of @racket[case-lambda] is not supported anywhere in the
expansion, which includes any use of keyword arguments or default
values.}

@item{Nested uses of @racket[grad] and @racket[D+] are possible, but
the transformed syntax can get very large from expansion by a constant
factor with each nested use.  The expanded expression is likely to be
subject to extensive optimization by the Racket compiler, but this
doesn't stop the expansion growing very large beforehand.  In
practice, derivatives higher than second order can become unreasonably
large.}

@item{Some error messages could be more informative!}

@item{Continuations, parameters, exceptions and similar are likely to
behave unexpectedly.}

@item{@racket[grad], @racket[D+] (and similar) are syntax, so cannot be
applied.}

]
