From: Gerd M. <ger...@t-...> - 2003-04-30 20:06:12
|
Christophe Rhodes <cs...@ca...> writes: > Absent any feedback on cmucl-imp, I would like to commit the following > patch. However, there is a regression in the test suite: > > (assert (subtypep '(function) '(function (&optional * &rest t)))) > > I think the intent of this is that (FUNCTION (&OPTIONAL * &REST T)) is > equivalent to the universal function type. With some handwaving, I think one could get from The type specifier provided with &rest is the type of each actual argument, not the type of the corresponding variable. in System Class FUNCTION to (FUNCTION (&OPTIONAL * &REST T)) = (FUNCTION (&REST T)) Is (&REST T) in some way distinguishable from *? > I'm not sure, though, and before committing anything I'd like to > understand this. If this is equivalent to the universal function > type (FUNCTION * *), is (FUNCTION (&OPTIONAL * * &REST T)) likewise > equivalent? Is there an equivalent degree of freedom in the VALUES > type axis? Is (FUNCTION * (VALUES (&OPTIONAL * &REST T))) > equivalent to (FUNCTION * *)? It seems if one settles on an interpretation, the VALUES part should follow from The &optional and &rest markers can appear in the value-type list; they indicate the parameter list of a function that, when given to multiple-value-call along with the values, would correctly receive those values. |
From: Marco A. <ma...@cs...> - 2003-04-30 20:12:48
|
Hi Where is the definition of lambda-list-like type specifiers? I do not recall seeing it in the CLHS. Cheers Marco Antoniotti On Wednesday, Apr 30, 2003, at 16:02 America/New_York, Gerd Moellmann wrote: > Christophe Rhodes <cs...@ca...> writes: > >> Absent any feedback on cmucl-imp, I would like to commit the following >> patch. However, there is a regression in the test suite: >> >> (assert (subtypep '(function) '(function (&optional * &rest t)))) >> >> I think the intent of this is that (FUNCTION (&OPTIONAL * &REST T)) is >> equivalent to the universal function type. > > With some handwaving, I think one could get from > > The type specifier provided with &rest is the type of each actual > argument, > not the type of the corresponding variable. > > in System Class FUNCTION to > > (FUNCTION (&OPTIONAL * &REST T)) = (FUNCTION (&REST T)) > > Is (&REST T) in some way distinguishable from *? > >> I'm not sure, though, and before committing anything I'd like to >> understand this. If this is equivalent to the universal function >> type (FUNCTION * *), is (FUNCTION (&OPTIONAL * * &REST T)) likewise >> equivalent? Is there an equivalent degree of freedom in the VALUES >> type axis? Is (FUNCTION * (VALUES (&OPTIONAL * &REST T))) >> equivalent to (FUNCTION * *)? > > It seems if one settles on an interpretation, the VALUES part should > follow from > > The &optional and &rest markers can appear in the value-type list; > they indicate the parameter list of a function that, when given to > multiple-value-call along with the values, would correctly receive > those values. > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Sbcl-devel mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-devel > -- Marco Antoniotti NYU Courant Bioinformatics Group tel. +1 - 212 - 998 3488 715 Broadway 10th FL fax. +1 - 212 - 998 3484 New York, NY, 10003, U.S.A. |
From: Gerd M. <ger...@t-...> - 2003-04-30 20:18:23
|
Marco Antoniotti <ma...@cs...> writes: > Where is the definition of lambda-list-like type specifiers? I do not > recall seeing it in the CLHS. It's under System Class FUNCTION in CLHS. |