18:34:43mfianoThe former is a promise to the compiler, which is allowed to do nothing or anything.
18:35:03mfianoThe latter will allocate a new object
18:35:05lotuseaterhm i thought with THE it's more like a promise "this shall be that type" and with coerce an instruction "transforms this to the new type"
18:38:33lotuseaterhaha yes i had this experience at some point ^^
18:39:31aethWhat I mean is, (prog1 x (check-type x double-float)) in SBCL will let you supply a new x that satisfies double-float, while (the double-float x) will fail the program if it's not a double-float
20:25:37pjbpve: (coerce x 'double-float) is more like {int x=314; (double)x; } this can be acceptable.
20:26:23pjbaeth: (the double-float x) has nothing in common with (check-type x double-float).
20:30:47lotuseaterpjb: one of those dirty c tricks :)
2:36:59aethpjb: Not really. Only SBCL with (safety 0) will possibly behave like you're talking about in practice. If you do want that sort of { int x; *(double*)&x=3.14d0; } behavior you can get it, via abusing the CFFI