Zarutian_HTC has joined #forth
dave0 has joined #forth
dave0 has quit [Quit: dave's not here]
Zarutian_HTC has quit [Ping timeout: 246 seconds]
proteus-guy has joined #forth
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
jedb_ has joined #forth
jedb has quit [Ping timeout: 265 seconds]
jedb_ is now known as jedb
_whitelogger has joined #forth
Zarutian_HTC has joined #forth
proteus-guy has quit [Ping timeout: 264 seconds]
_whitelogger has joined #forth
sts-q has quit [Ping timeout: 240 seconds]
Zarutian_HTC has quit [Remote host closed the connection]
sts-q has joined #forth
dave0 has joined #forth
_whitelogger has joined #forth
proteus-guy has quit [Ping timeout: 260 seconds]
proteus-guy has joined #forth
gravicappa has quit [Ping timeout: 256 seconds]
gravicappa has joined #forth
dave0 has quit [Ping timeout: 256 seconds]
_whitelogger has joined #forth
proteus-guy has quit [Ping timeout: 264 seconds]
pointfree has quit [Quit: Connection closed for inactivity]
hosewiejacke has joined #forth
<veltas> Does anyone here have experience with 4 byte name fields, i.e. only 3 characters and length are stored, and how much of a pain is it?
<veltas> To do the same thing would it be totally mad to store a 32-bit hash instead?
hosewiejacke has quit [Ping timeout: 256 seconds]
<patrickg> it has the advantage of using more bits of these 4 bytes. 3 characters means that ~6 bits go unused (and the length byte is also very unevenly distributed), a problem you likely wouldn't have with a hash function.
<MrMobius> seems like it would be harder for the user though if two completely different words coincidently got the same hash and it inserted the wrong one
<veltas> MrMobius: I think you need to have a redefinition warning, and try and figure it out based on SEE
<veltas> But the chances of a collision are e.g. extremely low with a decent 31-bit hash and less than 10000 definitions
<veltas> In the choice between the 1-byte length + 3-byte prefix encoding and hash encoding, you're wayyyy less likely to get collisions with the hash
<MrMobius> veltas, so if you tried to make a new word that conflicted with an existing hash, it would tell you to use a different name for the new word?
<veltas> I think for an interactive forth it would give a warning, like just print "<name> is a redefinition" or something
<MrMobius> i guess you couldnt tell the difference between redefinitions and different words with the same hash
<veltas> Nope
<MrMobius> you must be running on an ultra tiny system :)
<veltas> If you have the source handy and use SEE on the word you were trying to define, you could figure it out
<MrMobius> hmm, if you had defined the word earlier the same day
<MrMobius> not if you hadnt defined it or its built in or its been a year since you looked at it
<veltas> Well the current system I'm working on has 48KB for code+data
<veltas> If you did "SEE <newname>" and saw ": <newname> DROP ;" or something you'd be a bit out of luck lol
<veltas> Well you could figure it out with FIND
<veltas> It's a constraint but you'd be extremely unlucky to get a collision
gravicappa has quit [Ping timeout: 246 seconds]
gravicappa has joined #forth
gravicappa has quit [Ping timeout: 264 seconds]
hosewiejacke has joined #forth
hosewiejacke has quit [Ping timeout: 256 seconds]
cantstanya has quit [*.net *.split]
cantstanya has joined #forth
lispmacs[work] has quit [Ping timeout: 240 seconds]