(it wouldn't be an ocaml variant if it didn't offer multiple syntax skins of course: there's a "verbose" mode in which it accepts the delimeter tokens as guidance / overrides the whitespace, though all the auto-formatting tools strip it out and generally nobody seems to use it..)
Conversation
Yeah, you can also write the delimiters explicitly in Haskell as well. Not sure what auto formatters do with them though.
1
Perhaps if you were rigorous about making a fully-supported delimiter mode you could flip into when you wanted to do a bunch of whitespace-disruptive editing / moving stuff around, and then auto-reformat and flip back out of at the end of the moves, it .. might be ok?
1
1
I mean even if you fix the editing problem (eg. "adopt sexps") expression languages still have a legibility problem ("what existing expr just closed" / "what does the next arg attach to") that I think it's hard to fix overall. I'm no fan of names, but sometimes they're best.
2
I wonder if anyone ever did a relatively semantically high-level one with the same sort of "you have to name every temporary, no expr nesting" rigidity of an asm. I would not be surprised if that turns out ok-ish.
1
1
Souns a bit like A-Normal Form? Could be wrong though!
1
1
Close, though I was thinking a little crankier even than that (eg. no lets within a let's expr). But you know I hate lambdas too so probably this is a very personal and inadvisable hair shirt.
1
I was toying at some point with the idea of not even functions having return values, only "&out parameters"
1
Mercury has this, actually. It's pretty cool because you can generate different implementations based on if your parameters are inputs or outputs, all based on the same implementation.
1
1
Oh. A logic programming thing. That sounds cool.
My version was only intended to capture the downsides :p
1
Haa. Yeah the Mercury mode checker is a crazy complicated thing fwiw. My colleague has an idea for a simpler version though and has a prototype implementation. Also has had experience with it. I just watch curiously from the sidelines.
I do think it would be cool if modes were more ‘first class’. I think one limitation is that you can’t be polymorphic with them, or have dependent modes. Does cut down on the `_mut`, `_ref` stuff in Rust though.
Hi!
I didn't do much with the mode checker itself. But other parts of the compiler/runtime.
1



