From: Christophe Rhodes <csr21@ca...>  20030430 18:45:51

From: Christophe Rhodes <csr21@ca...>  20030430 18:45:51

From: Gerd Moellmann <gerd.moellmann@t...>  20030430 20:06:12

Christophe Rhodes <csr21@...> writes: > Absent any feedback on cmuclimp, 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 valuetype list; they indicate the parameter list of a function that, when given to multiplevaluecall along with the values, would correctly receive those values. 
From: Marco Antoniotti <marcoxa@cs...>  20030430 20:12:48

Hi Where is the definition of lambdalistlike 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 <csr21@...> writes: > >> Absent any feedback on cmuclimp, 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 valuetype list; > they indicate the parameter list of a function that, when given to > multiplevaluecall 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 > _______________________________________________ > Sbcldevel mailing list > Sbcldevel@... > https://lists.sourceforge.net/lists/listinfo/sbcldevel >  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 Moellmann <gerd.moellmann@t...>  20030430 20:18:23

Marco Antoniotti <marcoxa@...> writes: > Where is the definition of lambdalistlike type specifiers? I do not > recall seeing it in the CLHS. It's under System Class FUNCTION in CLHS. 
From: Alexey Dejneka <adejneka@co...>  20030501 03:25:32

Hello, Christophe Rhodes <csr21@...> writes: > I think the intent of this is that (FUNCTION (&OPTIONAL * &REST T)) is > equivalent to the universal function type. 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 ^ ^ remove these parentheses. > * *)? I've made them equivalent on the cast branch.  Regards, Alexey Dejneka "Alas, the spheres of truth are less transparent than those of illusion."  L.E.J. Brouwer 
From: Christophe Rhodes <csr21@ca...>  20030501 08:31:29

Alexey Dejneka <adejneka@...> writes: > Hello, > > Christophe Rhodes <csr21@...> writes: > >> I think the intent of this is that (FUNCTION (&OPTIONAL * &REST T)) is >> equivalent to the universal function type. 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 > ^ ^ > remove these parentheses. >> * *)? > > I've made them equivalent on the cast branch. Right. So we in fact want to canonicalize (early, so that we can reliably do TYPE= and SUBTYPEP!) all of these ways of saying FUNCTION all the way down. I'll rework MAKEFUNTYPE in that light, then. Cheers, Christophe  http://wwwjcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (setpprintdispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) 