Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would love to further discuss some syntax issues.

- STOP is from telegraphs. \n is also allowed.

- The assymetric string boundaries (brackets) allow you to embed quotes/boundaries without escaping.

what is terse about the loops?

any further thoughts about EOL?





1. ‘stop’ reads like a change of execution flow (like ‘continue’, ‘break’, and ‘return’) rather than an ASCII control code. I appreciate you’re taking that from telegraphs but I wonder if you’re better off using the control code name (LF) instead?

2. Interesting. Have you got any examples of this? Every example I’ve seen thus far has been

    [‘string constant’]
3. I might have misunderstood the fizzbuzz example https://xoscript.com/docs.xo?chapter=examples but it looked like the following syntax set up a for-loop as a closure:

    { :i
        …
    } * 101
It was a little surprising because usually with languages that lean heavily into English keywords (eg the Pascal/Algol/Basic derivatives) you’d see these control flows use keywords like FOR. Heck, even C-derived languages do too.

Now I’m not saying the syntax is bad. In fact part of me rather likes it. But it definitely surprised me.

Similarly the IF conditions surprised me with their tenseness. Though i do like their syntax too.

Regarding the fizzbuzz example, why do some conditions have TRUE while others do not. Eg

    (i = 0) continue.
True appears to be implicit.

    (i % 15 = 0) true: {
        …
    ), continue.
True here is explicit.

Is it because closures require that explicitness?


1. I guess this is just personal taste, we can add aliases if you like. lf (lowercase seems nice). Smalltalk itself uses brk. Could at both. Personally I love the 'touch' of history, makes it seem like there is continuum in tech somehow. But that's just personal taste as well.

2. ['the word 'Hello' has 5 chars'] ['I say: "Hi There!"'] ['In xoscript we use [' and '] ']

this is not allowed: ['this causes a '] parsing error.']

3. It's all just message passing.

- {} * x is just message * with arg x - yes it's a function, which is an object, and it has a method called * - Smalltalk uses times: { ... } times: 101.

- True is an object - (i = i) yields True, so you can send a messages to True - continue/break only work with True - , means: continue talking to object (True)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: