Remix.run Logo
rixed 6 hours ago

I'm the opposite: when landing in a programming language site I want to know the user case the authors had in mind, the memory model, the type system, the compilation targets, the data layout, the control structures, and only at the end just check that the syntax is not indentation based.

sroerick 5 hours ago | parent | next [-]

So I'm very seriously considering making my language indentation based. You're saying you wouldn't like that?

Georgelemental 29 minutes ago | parent | next [-]

Indentation based is a pain when copy-pasting between contexts with different indentation levels, as you have to fix it up manually, which is error-prone. In languages without it, you can just auto-format. (And even in an editor that doesn't support that, having a second indicator makes it less error-prone to fix manually)

rixed 5 hours ago | parent | prev | next [-]

No indeed I'm not a fan. I find it brittle and arbitrary for data values especially; that also makes automatic code generation and edition harder, for no good reason. But that's not an important consideration either way.

NuclearPM an hour ago | parent [-]

What is code edition?

aleph_minus_one an hour ago | parent [-]

> What is code edition?

I think rixed means "code editing" (I guess that rixed is simply not a native (L1) or excellent L2 English speaker).

mcluck 2 hours ago | parent | prev | next [-]

For what it's worth, I love the semantics of many indentation based languages (F# for example) but really dislike editing them. Visually scanning is much easier with braces (imo) and it's much easier to navigate braced languages when using a vim-like editor

dunham 3 hours ago | parent | prev | next [-]

I don't mind indentation based languages. I used to hate them, but they've grown on me after using python, Haskell, Idris, Agda, etc. And I ended up making my own language indentation based (it is similar to Idris).

That said, it is hard-mode:

- You'll have to figure out how to parse it.

- If you want editor support, it's a pain to get tree-sitter to handle it.

- You may not be able to pull off editor operations like "rename" without implementing a pretty printer (a rename might affect indentation).

I think it is helpful for crude error recovery. On parse error, my language will simply skip to the next column 0 token and parse another declaration.

I did not do this (hindsight), but I would recommend arranging the grammar so you only get indented blocks in cases where the previous line ends in a keyword that introduces it. I think python has a trailing `:` every time indentation is introduced, and Elm does this too - in statements like `let` you need a newline after the `let` to get the multi-declaration version. (This addresses the rename issue.)

zlsa 5 hours ago | parent | prev | next [-]

I think this falls under "[wanting] to know the user case the authors had in mind"

BretonForearm 5 hours ago | parent [-]

There is no "user case", it's called use case.

aleph_minus_one 4 hours ago | parent [-]

> There is no "user case", it's called use case.

Perhaps English is not a native language for zlsa?

giancarlostoro 4 hours ago | parent | prev [-]

I love that people hate indentation based so I show them a poorly indented C style languages codebase to see how they feel about indentation.

koolala 4 hours ago | parent [-]

Isn't it easy to just auto format it?

NuclearPM an hour ago | parent | prev [-]

Use case. Not “user case”.