<proteusguy>
siraben, if the reg needs maintaining outside of the combinator then it's not atomic. So you'd be looking at moving it to the return stack before calling the dependency.
<siraben>
Atomic as in the notion from concurrency?
<proteusguy>
Atomic as in act as an operation in the CPU.
<siraben>
So you now have to deal with callee-save register conventions
<proteusguy>
siraben, this is one of those things you need to try a few times to see how it goes and adjust accordingly. I think that's a rare circumstance. Or you could just add another stack for that purpose if it becomes an actual common problem.
<proteusguy>
If such a thing is complicated with combinators then maybe combinators aren't the right tools for a stack based system.
<siraben>
What do you mean by combinators?
<proteusguy>
Talking about your SKI/combinatory logic. The birds. ;-)
<siraben>
Forth has plenty of what I consider combinators, i.e. any sort of trivial, "pure" words like dup, swap etc. with a clear denotation
<siraben>
issue with combinators in FP is that compiling to them can blow up code size when an actual environment structure would be better in space and time
mark4__ has quit [Read error: Connection reset by peer]
mark4_ has joined #forth
gravicappa has joined #forth
mark4__ has joined #forth
mark4_ has quit [Read error: Connection reset by peer]
mark4_ has joined #forth
mark4__ has quit [Ping timeout: 260 seconds]
mark4__ has joined #forth
mark4_ has quit [Ping timeout: 272 seconds]
<proteusguy>
re:blow up code size - this is what I was referring to when I said perhaps these aren't the most appropriate building blocks for fort.
proteus-guy has quit [Ping timeout: 272 seconds]
<proteusguy>
forth.
proteus-guy has joined #forth
<siraben>
Not just for Forth, but any modern functional language no longer uses compiling to combinators as the approach, usually opting for generating C or LLVm (after closure conversion, lambda lifting and CPS)
<siraben>
LLVM*
mark4_ has joined #forth
mark4__ has quit [Ping timeout: 260 seconds]
proteus-guy has quit [Ping timeout: 265 seconds]
<proteusguy>
siraben, well for other languages with more complex compilers such as LLVM, they can do a lot of complex implementation optimization. This being a forth channel, however, forces me to point out that such complexity is the antithesis of forth.
<siraben>
proteusguy: of course!
<proteusguy>
Although making a forth that targets LLVM IR might still be viable. I recall a guy who did that and created an LLVM target that was better optmized for a stack oriented architecture.
<proteusguy>
But you're just moving the complexity of course.
proteus-guy has joined #forth
mark4_ has quit [Read error: Connection reset by peer]
jedb_ has joined #forth
jedb has quit [Ping timeout: 260 seconds]
rann has quit [Ping timeout: 264 seconds]
ovf has quit [Ping timeout: 246 seconds]
rann has joined #forth
ovf has joined #forth
hosewiejacke has joined #forth
proteus-guy has quit [Ping timeout: 260 seconds]
proteus-guy has joined #forth
jedb_ has quit [Ping timeout: 246 seconds]
<veltas>
Don't want to sound stupid but I'd be using the return stack rather than registers since I'd have to save things anyway on most implementations
<veltas>
Maybe there should be words like R1@ R2@ R3@ R4@ etc to get what's after R@
<veltas>
Could even *name* those temporarily within the wo-... oh right that's just locals whoops
hosewiejacke has left #forth ["Leaving"]
<veltas>
Has there been any effort to standardise multi-task forths?
<veltas>
i.e. with suspend/wait/user or whatever they use
<veltas>
It feels like that should be a word set in the standard
jedb has joined #forth
<sts-q>
veltas: Not sure, do you mean something like this ?
<veltas>
I I' J are documented as getting the first, second, and third things on the return stack in starting forth
<veltas>
Makes sense, unfortunately not standard
jedb has quit [Ping timeout: 240 seconds]
xek has joined #forth
xek has quit [Remote host closed the connection]
xek has joined #forth
xek has quit [Client Quit]
Gromboli has joined #forth
jedb has joined #forth
<siraben>
veltas: haha, that's just locals indeed
xek has joined #forth
xek has quit [Remote host closed the connection]
<proteusguy>
veltas, concurrency is definitely not part of any forth standard. I can't imagine one model ever being something forthers would adopt in general. It took C++ 30+ years to define a standard concurrency model and they still ended up with two.
xek has joined #forth
xek has quit [Remote host closed the connection]
proteus-guy has quit [Ping timeout: 240 seconds]
proteus-guy has joined #forth
<lispmacs>
hi, I was just wondering if there had been any progress anywhere towards an inexpensive GA144 development board
<proteusguy>
MrMobius, my understanding is that there's still an issue getting hold of the ga144 chips themselves. Hopefully that's no longer the case.
<MrMobius>
oh hmm
<MrMobius>
looks like you get the chip too if yoy buy that board
WickedShell has joined #forth
<MrMobius>
in the forth day update this year it sounded like they still dont have any customers :(
gravicappa has quit [Ping timeout: 256 seconds]
gravicappa has joined #forth
<veltas>
Always a danger when you create something that solves problems the way you envisage them, there might be nobody else who thinks the same way
<veltas>
Definitely the case with people like Chuck Moore
<veltas>
If I get a chance I will propagandise the board at work to a design engineer
<veltas>
I have been reading comp.lang.arguing-with-hugh-aguilar
<MrMobius>
someone called it "a problem looking for a solution"
<MrMobius>
you have to admit there isnt much of anything where you need 144 cores working in parallel
<MrMobius>
especially with tiny memories that all have to be individually programmed. I think that's the main thing that kills it, not only lack of a C compiler
<MrMobius>
woops, make that a solution looking for a problem...
xek has joined #forth
xek has quit [Client Quit]
lispmacs[work] has joined #forth
Vedran has quit [Ping timeout: 256 seconds]
Vedran has joined #forth
cantstanya has quit [Write error: Broken pipe]
<patrickg>
veltas: clf is as quiet as other newsgroups once the killfile is properly seeded