Remix.run Logo
sroerick 5 hours ago

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

Georgelemental 30 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?