Opened 2 months ago

Last modified 2 weeks ago

#1623 new enhancement

Avoid consing for optional procedure arguments

Reported by: sjamaan Owned by: sjamaan
Priority: minor Milestone: 5.2
Component: compiler Version: 5.0.0
Keywords: Cc:
Estimated difficulty: medium

Description

Currently, anything that accepts optional, rest or keyword arguments has to build a list and then pick that list apart. This is wasteful because it should not be necessary at all.

We could start with the low-hanging fruit like case-lambda and #!optional, where the binding of arguments and argument count checking is relatively simple. Handling #!key and #!rest or dotted tail rest argument notation is something that seems to me either too difficult and possibly not even worth it: you usually want to treat those as a list (but patterns like optional could still be handled specially, if nothing else refers to the identifier).

Change History (3)

comment:1 Changed 2 months ago by sjamaan

Summary: Implement faster vararg proceduresAvoid consing for optional procedure arguments

comment:2 Changed 4 weeks ago by evhan

Version: 5.0.0rc15.0.0

Moving to 5.0.0 just to keep the listings tidy.

comment:3 Changed 2 weeks ago by sjamaan

Milestone: someday5.2
Note: See TracTickets for help on using tickets.