lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Write error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
jedb_ has joined #forth
jedb has quit [Ping timeout: 246 seconds]
jedb__ has joined #forth
jedb_ has quit [Ping timeout: 256 seconds]
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
NorthStar has joined #forth
NorthStar has left #forth [#forth]
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
jsoft has joined #forth
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
sts-q has quit [Ping timeout: 240 seconds]
dave0 has joined #forth
sts-q has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
jsoft has quit [Ping timeout: 256 seconds]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
gravicappa has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
dave0 has quit [Quit: dave's not here]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
jedb__ is now known as jedb
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
<proteusguy>
lispmacs, re: short term anonymous lambdas. You could construct a special vocabulary of predictable sized words that are referenced counted to store your lambdas in.
jsoft has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
<siraben>
I'd love to see combinators used more, à la SKI/combinatory logic. Words like compose, app, curry, uncurry
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Write error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
birdwing has joined #forth
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
jsoft has quit [Quit: Leaving]
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Write error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Remote host closed the connection]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Write error: Connection reset by peer]
kori has quit [Quit: WeeChat 2.8]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lispmacs has quit [Read error: Connection reset by peer]
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
lisbeths has quit [Read error: Connection reset by peer]
lisbeths has joined #forth
dave0 has joined #forth
lispmacs has joined #forth
lisbeths has quit [Ping timeout: 260 seconds]
dave0 has quit [Quit: dave's not here]
<veltas>
"That's a point in Forth's favor because, in embedded-systems development, an engineer who understands the hardware is often a more effective programmer than a computer-science graduate who would rather be writing compilers."
<veltas>
Do people actually think this? That CS grads who pursue embedded software just want to write compilers instead of the thing they pursued?
<veltas>
Also part of Forth is writing your own compiler so it's contradictory as well
<siraben>
veltas: why not understand the hardware and understand how to write compilers? heh
<veltas>
Oh I do want to write compilers, I just wouldn't 'rather' be writing compilers
<veltas>
This was written in 1999 and I suspect I know a few hardware engineers who still feel this way...
<siraben>
I just noticed the date, ah
<siraben>
Feel what way? That you only need to know the hardware to be an effective programmer?
<veltas>
No that software background people care more about abstract problems than writing good embedded software
<veltas>
I am certainly not like that, and I come from a pure software background
<veltas>
But it also seems weirdly contradictory because Forth *is* an interesting tool for creating languages, as well as a good embedded programming environment
<veltas>
I actually bothered to get the latest snapshot of gforth and it's really nice
<veltas>
I like the status bar even if it's probably not very forthy
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #forth
<proteusguy>
siraben, I think combinators are interesting tools upon which you might realize some design but they are rarely an efficient way to implement a final solution. Forth tends to go for the throat in attacking a problem.
<veltas>
If combinators let you write code easier in forth, without a massive overhead and without horrific syntax, then it's an appropriate addition
<veltas>
It's my opinion but often I find myself writing code I know is less efficient but gets me to a result faster or in less forth
<proteusguy>
veltas, completely agree. it's just rarely the case. guess it depends on the problem set.
<siraben>
in fact forth wouldn't need certain combinators like compose that's just implied by the concatenation
<veltas>
I haven't tried writing more functional style forth, have you siraben ?
<veltas>
I know crc has
<siraben>
many combinators like repeatN would be compile-time and based on the last word compiled etc
<siraben>
veltas: not really, but I implemented a stack-based language with type inference in Haskell
<veltas>
I think this kind of stuff would probably be *more* appropriate than e.g. locals syntax, which I think is quite unforthy usually
<siraben>
When I ported meta-yacc I used locals initially because it was easier, then went back and removed some
<siraben>
this is the generated forth code by running the parser generator on itself
<siraben>
My conjecture is local probably wouldn't have much overheard if one compiles to code that uses a stack offset (see debruijn indices) to fetch the locals
<siraben>
no overhead, even
<siraben>
the problem is now you must fix the arity of your words and have them be known to properly compile the stack offset
<proteusguy>
siraben, hmm... if only you had a type-safe forth that enforced stack pictures... ;-)
<siraben>
proteusguy: yeah my haskell interpreter of a stack based language did that
<proteusguy>
siraben, so nothing stopping you from implementing it, right?
<siraben>
nope
<siraben>
i would probably do it in assembly again
<proteusguy>
haha.
<siraben>
easiest to control in/out arity by putting a little header
<siraben>
two extra bytes
<proteusguy>
well I'm with you - about to embark on rewriting ActorForth in C++.
<siraben>
best of luck, would be interesting
<proteusguy>
perhaps some combinators will be first order operands. ;-)
<siraben>
hm i just thought, knowing the arities would be of great use, no type checking needed and compound words could have their arities automatically calculated
<siraben>
and you can do locals without fear
<proteusguy>
yep could
<veltas>
I think better than using locals is the notation where if you don't want to clutter with stack ops you just do like "reorder abcd", I think retro has something like that
<veltas>
i.e. reorder abaa
<veltas>
I will sit down and try writing something like that but with digits, like 1234 reorder
<crc>
forth.works:9999/377
<siraben>
yeah like specify in permutation form
<crc>
'ab 'abaa reorder
<siraben>
I found out that you can do this with only R> >R and swap
<veltas>
Locals definitely make certain things neater, the biggest danger is overusing them and making code longer, if you're not doing that it's not really a heresy
<siraben>
i wrote a program to generate the permuters up to depth 4 then proved it up to N with induction
<veltas>
crc: That's the one
<siraben>
veltas: exactly
<siraben>
crc: oh cool
<veltas>
And I think that's a lot nicer than locals where locals might 'simplify' sometimes
<crc>
it's useful occasionally to avoid a bunch of messy stack shuffling
cmtptr has quit [Quit: leaving]
<veltas>
It avoids the need to put anything in return stack or a locals area, for one thing, except perhaps for the duration of the word
<veltas>
The semantics of EXIT etc don't have to change as well
cmtptr has joined #forth
gravicappa has quit [Ping timeout: 260 seconds]
gravicappa has joined #forth
<proteusguy>
completely generic locals isn't necessary. having a single "temp register" to interact efficiently with the stack will generally give you what you want in a highly efficient manner.
<siraben>
but if you have a function that uses the temp register and it calls another function that uses temp registers, then you'll have to have register saving conventions again
<siraben>
OTOH locals compose without interference
<proteusguy>
if you consider combinators as atomic operations - how many "scratch registers" are needed if you consider them clear after each operation?
<siraben>
I'm not sure I understand what you mean
<siraben>
if f uses temp reg A, and calls g which uses temp reg A, f has to save and restore A before and after calling g right?
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has joined #forth
birdwing has quit [Ping timeout: 260 seconds]
mark4 has joined #forth
gravicappa has quit [Ping timeout: 264 seconds]
<veltas>
Would be interested if you could elaborate proteusguy
mark4_ has joined #forth
mark4 has quit [Ping timeout: 260 seconds]
mark4_ has quit [Read error: Connection reset by peer]
mark4_ has joined #forth
proteus-guy has quit [Ping timeout: 260 seconds]
mark4_ has quit [Read error: Connection reset by peer]