Well... yes and no. Some values are multiple machine words, pushed onto the stack.<p>Some of these (such as double-words) have language-defined representations. (They&#x27;re always stored with the low word at the lower address, regardless of your machine endianness or, as far as I can tell, whether your stack is growing up or down. <i>Which means that on some platforms the low word is pushed first, and on others the high word first.</i> This shouldn&#x27;t matter, because you should be using the dword words to manipulate them, except that it&#x27;s common practice to assemble and disassemble dwords manually.)<p>Some have implementation-defined implementation-defined representations. For example, the various bits of state that the control flow words push onto the return stack. You don&#x27;t know how big any of these are, so accessing the return stack from inside loops is basically impossible.<p>And some are just weird. Floating-point numbers live on their own stack. Except not necessarily; the implementation is allowed to store them on the data stack. So you can&#x27;t use NIP TUCK OVER PICK etc because you don&#x27;t know the layout of your stack.<p>Basically, at every point, you have to know the type of the values on your stack so you can pick the right word (DROP vs 2DROP vs FDROP) to operate on the stack... and if you get it wrong, you get stack corruption and horrible, hard-to-debug crashes.<p>tl;dr: Forth is typed. Forth is very typed. Forth just doesn&#x27;t <i>check</i> types.