Survey - who's listening?

Brian Rice
Tue Jun 26 18:45:02 2001

>Armed with moderate intoxication, but leaving behind common sense and
>dignity, Beren the One-handed rides into the fray.

Well, that's quite brave of you. :)

>I'm listening.
>I have lots of questions but not sure how many I will be able to express.
>My background may (or may not) have anything to do with my ignorance and my
>questions... so here it is:
>- electrical engineering at Uni (don't think I ever really used it in the
>- programming in C and assembler (both of these primarily for signal
>processing apps)
>- no formal set theory or logic (except boolean algebra)
>- I have never used Smalltalk or Squeak, and haven't tried out Arrows (I
>think I've got some sort of a grip on your Arrows intro)

Okay, this helps in answering.

>- does Arrows have some sort of equivalent to C's struct??

Yes, arrows whose head and tail information is known and which are 
expected to behave as concrete pieces of data are just linked list 

A collection of graphs can also represent a single concrete data 
structure's content. I know that's complicated, and I am certainly 
working on systems to deal with that in reasonable ways. There will 
certainly be a meta-language system in Arrow to generate syntaxes and 
specialized evaluators.

>i guess what i'm asking is "how does Arrows implement complex
>on 2nd thoughts... how does set theory handle complex types??

Okay, I think that I answered part of this question above. However, 
keep in mind that we (Armin and I) are not just thinking in terms of 
(local) sets, but general Category theory. If you Google "Category 
Theory" on the internet, you should find a few good tutorials, but by 
far the best I've seen is the book _Conceptual Mathematics_ which was 
published just a couple of years ago.

There are many ways to construct types, and most programming language 
formal semantics books deal with these: cartesian products of sets 
(sets of pairs of elements of domain and range), mappings, and 
lattices (complete partial orders). These are all well known in 
formal computer science, and there are some good books out there that 
you can learn from.

>- i don't understand your use of incidence, composition, elements...
>is this set theory?? is it related to the first question??  are there any
>papers i should read?? should i head off and join concatenative??

First, concatenative only has to do with languages whose syntax is 
like Forth's. :)
Second, incidence is specific to my Arrow theory, which is a 
reflective variant of Arrow Logic (in Arrow Logic arrows only refer 
to points, so incidence is not part of the formalism per se). 
Composition is a major feature of Arrow Logic, as well as Identity 
and Inversion. All of this is used in some circles of research for 
cognitive science and such.

>- where do you see Arrows fitting into the TUNES framework??
>	- High/low level (or both)

I see it as a little more than the HLL. It provides for very high 
level semantics, the ability to understand low-level terms in that 
semantics (which we call the LLL), but at the same time is not quite 
a language. It's not being a language per se makes it to be unlike 
what Fare or any other TUNES founder ever expected, and here is where 
I have experienced the most misunderstanding. This is why I am 
ensuring to include a meta-language framework to allow for the 
dynamic creation of small languages to express arrow things.

>- ummm, i've just realised that all my other Arrows specific questions
>relate to this last one, which means i can shut up early... lucky dogs.

I see. Well I tried to answer them all individually anyway. :)

>PS How will slate be a subset of Arrows??
>SELF looked very interesting
>	- i understood it straight away
>	- i could see limitations, but also scope for modifying it to 
>avoid those

Slate will likely be one of the first languages implemented in Arrow, 
along with some kinds of Lisp. I agree about Self, but the more I 
have looked into the significances of the syntax, the more I have 
sought lateral directions from Self instead of improvements in order 
to work around those. (Like methods not being first-order, lack of 
more robust meta-objects, and state-based semantics). This is similar 
to Forth vs. Joy. Forth _really_is_ based on a stack, where as Joy is 
really about rewrite of functional expressions (this takes a little 
while to see), although it can be thought of as implementing a stack 
easily. I'd like the same thing with the whole notion of recursive 
state (objects within objects) of Self.

>Can i see an example of (visionary) slate syntax??

Actually, most examples can be had from the Slate mailing list, and I 
am not focussing on Slate right now. It was intended for Slate's 
semantics to be expanded to implement all of Arrow, but I believe now 
that to layer concatenative syntax over Arrow (which is easier to 
agree for me on how to implement) is a much more direct approach. The 
alternative would seem to have involved some hacks which compromised 
much of the initial design ideas.

Thanks much,