MSM: Alex has argued in the past for the view that control structures shouldn't be part of the language so that you can add new control structures by adding new components

16:34:05 [ht]

HST doesn't here roll-your-own-control being ruled _out_, just exposing conditionals as part of the language _in_

16:34:16 [ht]

s/here/hear/

16:34:51 [Norm]

Richard: That raises the question of side effects.

16:35:09 [Norm]

MSM: There are programming languages that say "under these conditions whether the side-effect is observable or not is undefined"

16:35:21 [Norm]

Richard: They say that about their basic conditional?

16:35:22 [Norm]

MSM: Yes.

16:35:58 [alexmilowski]

+q

16:36:01 [Norm]

MSM: In particular, boolean conditionals may be evaluated in some indeterminate order, short circuited or not.

16:36:18 [alexmilowski]

q+

16:36:21 [alexmilowski]

:)

16:36:25 [Norm]

Some discussion of whether that's the same as the possible implementation of the else branch

16:37:17 [Norm]

ack alexmilowski

16:38:03 [Norm]

Alex: I have a bunch of developers using pipelines. I make no distinction between steps and language constructs like choose and the viewports. My impression is that they find this confusing.

16:38:06 [ht]

q+

16:38:39 [Norm]

Alex: Implementation-wise, they're all components. But having conditionals and viewports not part of the "higher language" constructs is confusing to users.

16:38:53 [Norm]

Alex: In the end, my choice to implement choose as a component is just an implementation choice, no more.

16:39:24 [Norm]

Alex: I make sure the "else" branches don't run.

16:39:38 [MSM]

If what is being proposed is "let us define semantics for conditional constructs as part of our spec", then I think I am OK with it.

16:39:40 [Norm]

ack ht

16:39:53 [Norm]

I think that's what we're saying MSM

16:40:00 [MSM]

As long as we're not saying "no component is allowed to do anything but read input and write output" ...

16:40:10 [richard]

q+

16:40:25 [Norm]

HT: I don't propose to rule out components that perform conditionals, just the positive aspect of making some conditionals part of the language.

16:40:57 [Norm]

MSM: I would have expected this to be a question of what's defined in our spec, but we seem to be going a little further than just putting it in the spec.

16:41:18 [Norm]

MSM: I want it to be a language construct vs. I want conditionals to be defined in our spec seems to be the issue.

16:41:31 [Norm]

Richard: Suppose that you didn't have an "if" and you wanted to implement it as a component.

16:41:49 [Norm]

Richard: This component would have to have inputs and etc., but also a description of the "if" and "else" branches.

16:42:09 [Norm]

Richard: So if we said that's how it worked, we'd have to make it possible for pipelines to be parameters to components.

16:42:29 [Norm]

Richard: This gives components a lot more power than we need to do the bare minimum.

16:42:48 [Norm]

Richard: I don't want the basic, minimal language to have to support that complexity.

16:43:10 [Norm]

MSM: I guess I see some tension between what should be the minimum and what should be possible.

16:43:45 [alexmilowski]

q+ xslt actions comparison

16:43:47 [ht]

Richard contrasts fexprs and macros in List

16:43:51 [ht]

s/List/Lisp/

16:43:54 [alexmilowski]

q+

16:44:00 [ht]

ack richard

16:44:02 [Norm]

Richard: I'm quite happy with something that works like a macro, something that turns into some control structure using that. What I'm not happy with is something that effectively "evals" its arguments to perform a computation

16:44:18 [Norm]

ack Alessandro

16:44:20 [Norm]

ack alexmilowski

16:44:55 [Norm]

Alex: I allow you to embed chunks of a pipeline in your components.

16:45:14 [MSM]

Richard, can you type in the Lisp keyword / technical term you were pronouncing?

16:45:20 [richard]

FEXPR

16:45:21 [Norm]

Alex: An analogy here is XSLT instructions. If you want to write your own instruction, you need to be able to embed other instructions inside it.

16:45:37 [richard]

it's one the kinds of EXPR (expression)

16:45:51 [Norm]

Alex: In XSLT, that's completely implementation defined. It's an issue if we need to go there or not.

16:46:06 [richard]

you won't find it in scheme!

16:46:23 [Norm]

Alex: That's one way to give extensibility without having to reinvent the world. You can invent your own crazy conditional with side effects or what have you. But it does put additional requirements on implementors.

16:46:30 [MSM]

Ah, that may be why it sounded unfamiliar

16:46:59 [richard]

scheme takes the approach i'm advocating, it has macros but no eval-like mechanism

16:48:28 [richard]

And my point about viewports is that they can be implemented in a macro-like manner without any "magic" components

16:48:42 [alexmilowski]

yes.

16:48:52 [Norm]

ACTION: MSM to setup bugzilla for us

16:50:24 [Norm]

Topic: Sub-pipelines

16:51:15 [Norm]

Norm: The ability to define and reuse a sub-pipeline in the same document is still an open quesiton

16:51:41 [Norm]

Richard: If we accept the separation of the language into a conceptual part and a syntax for expressing that, then this issue falls into the second part.

16:52:07 [Norm]

Richard: I think we're all agreed that conceptually you should be able to put a sequence of steps anywhere that a component can occur

16:52:56 [Norm]

Norm: Do we all agree that conceptually you can put a sub-pipeline anywhere you can put a component?

16:53:04 [Norm]

Some "yes"es, some "not sure"s

16:53:12 [Norm]

No "no"s

16:53:15 [MSM]

it sounds right, but I keep worrying about a catch I'm not seeing.

16:53:24 [alexmilowski]

(sorry... stepped off...) yes

16:53:51 [Norm]

Norm: Raising the question to the conceptual level seems to reduce the urgency of answering the question

16:54:33 [Norm]

HT: But it does raise the urgency on the question of whether we're talking about an abstract syntax with a nearly-isomorphic concrete syntax or if we're designing an virtual machine with a concrete syntax that might be quite removed

16:54:42 [Norm]

HT: The time is coming when we're going ot have to make our minds up

16:54:58 [Norm]

Richard: I think you're right, but the answer will be neither of the two extremes

16:55:14 [Norm]

Richard: The abstract primitives aren't a virtual machine, but they're designed to make programming easier.

16:55:33 [Norm]

Richard: They're more like the primitives of lisp that will be extended by writing functions and macros on top of them

16:56:08 [Norm]

Topic: Any other business

16:56:16 [Norm]

Topic: Face-to-face in August in Toronto

16:56:22 [Norm]

Alex: Exact time is undecided

16:56:28 [Norm]

Alex: But I'm willing.

16:57:04 [Norm]

Norm: Anyone uncomfortable with having another f2f this soon?

16:57:13 [MSM]

which week in August?

16:57:17 [Norm]

Richard: I'm not sure I can make it, but the date doesn't have much bearing.