[Openmcl-devel] Type declaration question
sshenoy at gol.com
Tue May 26 02:32:25 UTC 2009
Thanks for that (as always) detailed reply. So, I guess the
declaration was being silently ignored prior to this.
However, in the Hyperspec (under the section on Declaration TYPE,
i.e., Body/d_type.htm), it is explicitly stated (in Notes) that
"(typespec var*) is an abbreviation for (type typespec var*)". I don't
know if this applies to compound type specifiers but in any case it is
no biggie since I can simply use the longer form everywhere.
On May 26, 2009, at 11:20 AM, Gary Byers wrote:
> "(DECLARE (TYPE (UNSIGNED-BYTE 64) FOO))" says that FOO is of type
> (UNSIGNED-BYTE 64) within the scope of that declaration.
> In some cases, the TYPE declaration specifier can be omitted;
> "(DECLARE (FIXNUM FOO)) is shorthand for "(DECLARE (TYPE FIXNUM FOO)".
> The spec may be a little unclear about which cases allow this
> section 3.3.2 describes a declaration as being something whose CAR
> is a "declaration identifier", and the glossary defines a "declaration
> identifier" to be one of a predefined set of symbols or a symbol which
> specifies a type; it doesn't seem to allow compound type specifiers
> (like (UNSIGNED-BYTE 64)) to be used as declaration identifiers,
> other passages in the spec suggest that they should be allowed here.
> (See <http://trac.clozure.com/openmcl/ticket/465>).
> I don't think that CCL has ever allowed compound type specifiers to
> be used as declaration identifiers. Prior to some changes that Gail
> made in the trunk a few weeks ago, it tended to quietly ignore
> that it couldn't make sense of (and that would include cases where a
> compound type specifier was being used as shorthand for a TYPE
> a warning is now signaled in that case.
> On Tue, 26 May 2009, Sudhir Shenoy wrote:
>> Can anyone tell me what the proper declaration for a 64 bit unsigned
>> integer is? I was using "(declare ((unsigned-byte 64) foo))" which I
>> am fairly sure worked prior to CCL 1.3 but now I get a compilation
>> warning and the fasl is not generated. I checked the CLHS and there
>> doesn't seem to be an upper bound on the number of bits in the
>> unsigned-byte declaration.
>> I have this in some low level i/o conversion (reading in a IEEE float
>> value of 8 bytes and converting to a Lisp number) code where I use
>> (ldb (byte 1 63) foo) to extract the sign-bit, for example. Is
>> there a
>> better way to do this?
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
More information about the Openmcl-devel