libera/#sbcl - IRC Chatlog
Search
6:58:09
flip214
Is there a way to encode a limited-range value (say, 10 bits) so that the boxed value is still only a machine word? I'd need to store probability values from 0 to 1, but not conflate them with floats or fixnums. SAPs are 2 words, AFAICS - else I'd have allocated a memory block and pass SAPs around...
8:45:34
flip214
and yeah, a CONS itself is two words... but it's address is a single-word, so I can pass single words around
8:54:22
Krystof
you wanted a limited-range value which takes a machine word but not conflated with floats or fixnums. Characters meet that brief :-)
8:56:58
Krystof
the BMP private use area u+e000 to u+f8ff is well over 10 bits if you do want to pursue using characters
9:09:12
Krystof
(and, yes, if you wanted your own distict type you would have to modify sbcl sources; your new thing would need its own widetag. We might be short of widetags on 32-bit platforms; on 64-bits we probably still have some space. If you wanted a specialized array too that would mean more widetags and more modification)
14:37:57
phoe
https://plaster.tymoon.eu/view/2876#2876 <- how do I exactly use *ON-PACKAGE-VARIANCE*?
14:38:23
phoe
it doesn't seem that it has any effect when I modify it in the way I read in the manual
14:49:21
semz
phoe: it's really counterintuitive, but putting your package into the :error list is how you make it modifiable
14:50:11
phoe
semz: I don't understand - I don't care about :ERROR, I want to simply avoid a warning
15:10:42
phoe
or does DEFPACKAGE not have an option where, on package variance, it ignores the old values and reshapes the package according to the new definition?