dddddd has quit [Remote host closed the connection]
mtsd has joined #forth
mtsd_ has joined #forth
mtsd has quit [Ping timeout: 264 seconds]
mtsd_ has quit [Client Quit]
phadthai has quit [Quit: brb]
phadthai has joined #forth
mtsd has joined #forth
xek has joined #forth
WickedShell has quit [Remote host closed the connection]
dave0 has joined #forth
<clitoris>
MrMobius: is switch the word you need?
<clitoris>
I don't really like the name "cond" from scheme
<clitoris>
neither do I like switch though
<clitoris>
I like "where"
<rdrop-exit>
I've never felt the need for CASE in Forth
<clitoris>
: foo where condition if-true , where condition2 if-true , ... ;
<clitoris>
but not sure how it fits into forth
<clitoris>
(above is to be pseudocode, not specifically forth)
<clitoris>
I don't particularly like parsing and case is pretty much inherently parsing
<rdrop-exit>
CASE statements are syntactic sugar, they just stand in for either a jump table or a sequence of early exits, I'd rather code those directly
<clitoris>
sugar = bad
<rdrop-exit>
rots your teeth
<clitoris>
right
<rdrop-exit>
they're better suited to pure compiled languages
<clitoris>
still a little sweet for me
<rdrop-exit>
in C the compiler decides for you whether the case statement results in a jump table or a series of conditionals
<rdrop-exit>
in Forth you decide such things
<rdrop-exit>
so no need for a case statement
<clitoris>
explicit is better
<rdrop-exit>
for most things yes
<clitoris>
when's it not?
<rdrop-exit>
exceptions might be simple peephole optimizations such as constant folding
<rdrop-exit>
strength reduction, etc...
<clitoris>
idk I almost want that to be explicit too
<clitoris>
because what if you wish to perform a modification of the way your language's built in strength reduction works
<rdrop-exit>
just turn it off for that sequence
<rdrop-exit>
you can change anything in Forth
Bunny351 has quit [Remote host closed the connection]
<rdrop-exit>
If you're Forth has inlining, it makes sense to eliminate redundant sequences such as "dup drop" and fold constants
<clitoris>
yes, but when things are explicit, it's almost like you are being encouraged to inspect everything, and alternatively things not said are things not heard
Bunny351 has joined #forth
<rdrop-exit>
once you inline two or more words back to back you probably want to remove their redundancies, but you can always make exceptions and turn off the peephole optimizaer for a special sequence you want untouched
<clitoris>
how does turning it off look
<rdrop-exit>
anyway you want, e.g. -opt to turn it off, +opt to turn it on
<rdrop-exit>
such things come into play mostly with subroutine threaded forths that also support inlining, less so with other types of threading
<rdrop-exit>
except maybe for constant folding which is useful in any Forth
dys has joined #forth
<rdrop-exit>
e.g. I'd rather code "#rows #cols *" then "[ #rows #cols * ] literal"
<clitoris>
can put rows * columns in documentation and just have #product
<rdrop-exit>
although that's a bad example since a Forther would usually factor it out
<rdrop-exit>
yes
<rdrop-exit>
bad example
mtsd has quit [Ping timeout: 240 seconds]
rdrop-exit has quit [Ping timeout: 250 seconds]
rdrop-exit has joined #forth
mtsd has joined #forth
mtsd has quit [Ping timeout: 264 seconds]
rdrop-exit has quit [Ping timeout: 250 seconds]
rdrop-exit has joined #forth
dddddd has joined #forth
<MrMobius>
rdrop-exit, so if you have 5 or so options you would next them in IF statementes rather than a CASE?
M-Dog has joined #forth
proteus-guy has joined #forth
<tabemann>
hey guys
<tabemann>
about inlining does not necessarily mean doing peephole optimization; e.g. zeptoforth has inlining but currently lacks peephole optimization
proteusguy has quit [Remote host closed the connection]
TwoNotes has joined #forth
TwoNotes has left #forth [#forth]
tabemann has quit [Ping timeout: 246 seconds]
<MrMobius>
I think you could do an even simpler version than peephole which is already simple by just examining the last word laid down and rewriting only that last word to optimize for your current word
<MrMobius>
if you were willing to provide multiple versions of at least the built in words
rdrop-exit has quit [Quit: Lost terminal]
Zarutian_HTC has joined #forth
dave0 has quit [Quit: dave's not here]
rdrop-exit has joined #forth
<rdrop-exit>
MrMobius, I rarely nest IFs, I usually either use early exits or jump tables, whichever is most appropriate for the logic.
<rdrop-exit>
If the logic requires evaluating conditions of different weight or priorities, then early exits.
<rdrop-exit>
If it's a straightforward interval of values, then a jump table.
M-Dog is now known as DKordic
<rdrop-exit>
time to sleep, goodnight, stay healthy
rdrop-exit has quit [Quit: Lost terminal]
clitoris has quit [*.net *.split]
irsol has quit [*.net *.split]
the_cuckoo has quit [*.net *.split]
the_cuckoo has joined #forth
irsol has joined #forth
clitoris has joined #forth
xek_ has joined #forth
xek has quit [Ping timeout: 264 seconds]
Zarutian_HTC has quit [Read error: Connection reset by peer]
Zarutian_HTC has joined #forth
mtsd has joined #forth
f-a has joined #forth
f-a has quit [Remote host closed the connection]
Mellowlink has quit [Remote host closed the connection]
Mellowlink has joined #forth
mtsd has quit [Quit: Leaving]
actuallybatman has quit [Ping timeout: 264 seconds]
actuallybatman has joined #forth
actuallybatman has quit [Client Quit]
gravicappa has quit [Ping timeout: 256 seconds]
xek_ has quit [Ping timeout: 260 seconds]
<clitoris>
Evening
<Zarutian_HTC>
h'lo. I must ask do you deal with lots of bellends day to day?
<clitoris>
no :( just forth mostly
WickedShell has joined #forth
<Zarutian_HTC>
what fascinates me about forth is how little is needed to get a growable language on top of rather simple architecture
<Zarutian_HTC>
that and ease of refactoring of common sub phrases into their own word definitions
tp has joined #forth
<clitoris>
forth is terrible
<clitoris>
use a real language
<Zarutian_HTC>
like Coq then?
<clitoris>
I don't swing that way
<Zarutian_HTC>
Forth is better in some ways to many Algol68 syntax inspired languages but more terrible than say Tcl
<clitoris>
tcl < forth
<Zarutian_HTC>
I am curious though what you mean with real language