3 ms·
Okay, so what's the significance of it and what's the boon? Surprised so little public forth's implement it.
by pyinstallwoes 1y ago
Okay, so what's the significance of it and what's the boon?
Surprised so little public forth's implement it.
- sph 1y agoAll the most common Forth I know implement CREATE DOES> What’s funny, is that I used to know how it works, now any time I come across these kind of articles I get more and more confused and further away from understanding. It’s like reading those convoluted explanations of what a monad is.
- spc476 1y agoIt only briefly goes into what it does, this article goes into how it's done for a particular implementation.
- alexisread 1y agoIt implements defining words ie. Additional compiler words. It does this by doing something now, and later (you could read create does> as now later>) So for : CONSTANT CREATE , >DOES @ ; This makes the defining word CONSTANT, which when run (now) compiles the next word So CONSTANT myvar will compile myvar. Myvar, when run (later) will get it's value and push it to the datastack.
- anthk 1y agoEven EForth under Sublex/Muxleq implements it.
- throwaway77699 1y agoTIL https://github.com/howerj/subleq/ https://github.com/howerj/subleq/ https://esolangs.org/wiki/Muxleq https://esolangs.org/wiki/Muxleq
- oneearedrabbit 1y agoDecades ago, a closure in Forth was especially innovative with DOES>: : COUNTER CREATE , DOES> DUP 1 SWAP +! @ ; 0 COUNTER PK PK . \ => 1 PK . \ => 2 A semi-equivalent in Javascript is: const counter = init => { let x = init; return () => { x += 1; return x; }; }; const pk = counter(0); console.log(pk()); // => 1 console.log(pk()); // => 2