WickedShell has quit [Remote host closed the connection]
tabemann has joined #forth
mark4 has quit [Remote host closed the connection]
gravicappa has joined #forth
jsoft has joined #forth
dddddd has quit [Ping timeout: 240 seconds]
deesix has quit [Ping timeout: 256 seconds]
kori has quit [Read error: Connection reset by peer]
kori has joined #forth
kori has quit [Changing host]
kori has joined #forth
deesix has joined #forth
dddddd has joined #forth
_whitelogger has joined #forth
tabemann has quit [Ping timeout: 244 seconds]
xek has joined #forth
jsoft has quit [Ping timeout: 240 seconds]
xek has quit [Ping timeout: 240 seconds]
deesix has quit [Ping timeout: 264 seconds]
deesix has joined #forth
dddddd_ has joined #forth
dddddd has quit [Ping timeout: 264 seconds]
dddddd_ is now known as dddddd
proteus-guy has joined #forth
xek has joined #forth
_whitelogger has joined #forth
deesix has quit [Ping timeout: 256 seconds]
dddddd has quit [Ping timeout: 240 seconds]
dddddd has joined #forth
deesix has joined #forth
Zarutian_HTC has joined #forth
dave0 has quit [Quit: dave's not here]
xek has quit [Ping timeout: 246 seconds]
proteus-guy has quit [Ping timeout: 260 seconds]
proteus-guy has joined #forth
Zarutian_HTC has quit [Ping timeout: 264 seconds]
proteus-guy has quit [Ping timeout: 260 seconds]
X-Scale` has quit [Ping timeout: 240 seconds]
X-Scale has joined #forth
proteus-guy has joined #forth
<alexshpilkin>
proteusguy (or proteus-guy... are you the same person?): not necessarily. I am pessimistic towards language designs that try to combine heavy abstractions with low-level access to the machine, because you usually get all the predictability (and therefore optimizability) of the latter coupled with all the performance of the former
<alexshpilkin>
from a cursory reading of the doc pages it doesn't seem that ActorForth strives for the low-level access characteristic of classic Forth, so, well... the actor model is cool, stack-based (concatenative, however you want to call them) languages are cool, so merging them may well get you something useful
<alexshpilkin>
though from the same very cursory reading it doesn't appear that the type system is particularly good... swap : Any Any -> Any Any is a rather weak typing (I'd hope for swap : forall a b. a b -> b a or something like that)
<proteus-guy>
alexshpilkin, yeah our target domain is different than what is classically forth - but the architectural drivers are the same - relentlessly eliminate all unnecessary complexity. Our intention is to have a system where a single developer can understand the full tech stack from the top all the way to the gate level. Not possible on "modern" tech stacks.
<proteus-guy>
Ultimately it'll be Any1 Any2 -> Any2 Any1. Just hasn't come up given where we are in the initial implementation.
<proteus-guy>
Actually it'll look more like swap : _1 _2 -> _2 _1
<alexshpilkin>
well, parametric polymorphism by any other name ...
<alexshpilkin>
but good to know you are planning it
<proteus-guy>
alexshpilkin, part of what we're doing is trying to see how powerful a type system can be implemented in a point-free stack based language.
<alexshpilkin>
oh, really? I'll be watching that place then :)
<proteus-guy>
yeah this is more of a "discover based" rather than a planned based system and we expect that it'll take a few implementations before we get the right balance.
<siraben>
It uses a representation of the stack isomorphic to nested tuples, so barely ant difference from Algorithm J.
<siraben>
It properly deals with polymorphic functions like swap : a:b:s → b:a:s
<siraben>
where a b s are type variables
<siraben>
alexshpilkin: why wasn't it met with enthusiasm from ForthHub?
<siraben>
I should note that there isn't anything particularly hard about type inference in stack-based languages. With a proper AST representation it's no different than writing a typechecker for a functional language.
<alexshpilkin>
<siraben "alexshpilkin: why wasn't it met "> *shrug* it was mostly met with silence, so no idea. maybe everybody already knows that, maybe nobody is interested, maybe I'm just unpleasant to talk with
<siraben>
Skimming through that conversation, heh that's interesting. Dynamic words like EXECUTE are problematic from a static analysis perspective. This sort of thing is similar to the situation in Lisp.
<alexshpilkin>
<siraben "alexshpilkin: you might be inter"> (I have to admit I've never actually implemented inference, even though I think I kinda understand how it works. No excuse really)
<siraben>
Forth in its current form is no better than assembly, so naturally adding a type system severely restricts the language.
<siraben>
alexshpilkin: I believe using Matrix replies duplicates the content for IRC users, please use mentions instead.
<siraben>
(I'm also on a Matrix bridge)
<siraben>
I'll have to sign off for tonight, will check the messages tomorrow.
<siraben>
alexshpilkin: Do you come from an FP background as well?
<alexshpilkin>
siraben : well, my point was there that first-order languages are just easier to type. EXECUTE by itself appears to be just an application operator like Haskell's ($), so not particularly evil, no? though the fact that everything happens on a single stack stack and has variable arity does complicate things
<alexshpilkin>
siraben : well to some extent yes. more like I owe my interest in types to FP (Haskell in particular; proof-assistant-y things tend to go over my head, sadly)