Arc Forumnew | comments | leaders | submitlogin
1 point by Pauan 5108 days ago | link | parent

"Since you can write this in arc today, it's utterly confusing and distracting to me that you keep harping on it."

Having built-in types like table/cons/etc. written in the same way, rather than as opaque blobs in Racket.

---

"I'm not sure what you're expecting when you say things like "what more do I have to do?". What more do you have to do for what?"

"What more do I have to do to demonstrate that message passing has advantages over extend?"

I asked that because it seemed that people weren't convinced that message passing was actually better than extend. This was unfortunate because:

1) It appeared to ignore the evidence that I was presenting

2) It seemed to basically dismiss message passing, but without explaining why. How am I supposed to know how message passing is flawed, unless people explain?

If the dismissal was caused by not understanding my idea, then it's my fault for not explaining well enough.

---

"[...] This needs changes to ac.scm."

Yup!

---

"But it has absolutely nothing to do with message passing. Messages are not types, and your suggestion is to augment the type system with a keyword called interface or object that isa can accept."

You're right: message passing is the low-level idea. Interfaces are built on top of message passing, but aren't necessary to support message passing.

---

"If you made that change, arc would support 'message passing' according to you. Am I right?"

No, in order for Arc to support message passing (at least in my mind), it would be necessary for the built-in types to also use message passing. As you pointed out, user-created Arc code can already use message passing, but that's not useful if you want to create something that behaves like a built-in type.

---

"[...] provide runnable examples that look good/short and behave intuitively."

Kay. I'll need to patch up py-arc first, though, because right now it doesn't support basic stuff (I'm looking at you, `apply`). Once I get py-arc into a decent enough shape, it should take less than a day to get message passing working.



1 point by akkartik 5108 days ago | link

"Having built-in types like table/cons/etc. written in the same way, rather than as opaque blobs in Racket."

"in order for Arc to support message passing, it would be necessary for the built-in types to also use message passing"

Are you planning to replace (f x) everywhere with (x f)? That hardly seems backwards-compatible. (Forgive me if this is a stupid question. I have zero 'expertise' since I haven't read 75% of what you have written in this thread.)

If you provide a way to handle (f x) as an 'f message to x, then you shouldn't need to implement primitives.

"It seemed to basically dismiss message passing, but without explaining why. How am I supposed to know how message passing is flawed, unless people explain?"

You have to try it :) It's pretty clear that nobody here has tried quite what you're proposing, so what you thought of as dismissal was just people thinking (like me for the past few weeks) that they had nothing to add since they haven't tried it, and wanting to reserve judgement until they had an opportunity to play with an implementation. But maybe that's just me :)

Or did I miss a dismissive comment?

-----

1 point by Pauan 5108 days ago | link

"Are you planning to replace (f x) everywhere with (x f)?"

Nooope. Let's assume my-table is a table. On the left side is the current pgArc interpretation. On the right side is message passing:

  (my-table 'something)       -> (my-table 'get 'something)
  (= (my-table 'something) 5) -> (my-table 'set 'something 5)
  (keys my-table)             -> (my-table 'keys)
...but that's all hidden behind functions, so ordinary Arc code doesn't need to know that. In other words, `apply` would automagically convert (my-table 'something) into (my-table 'get 'something), so Arc code can't tell the difference. That's why it's backwards compatible.

---

"Or are you seeing dismissal in statements rather than silence?"

Mostly rocketnia, but that's fine since they now understand what I'm talking about, so we can actually discuss the idea. :P Their dismissal seemed to be because of a conflict in motivations.

-----