I’m almost considering not doing whitespace sensitivity in Pikelet. 🤔
Conversation
It's weird because it did not bother me in haskell (nor python) but it's like fingernails on blackboard in fsharp. Might just be the years I've spent doing ocaml which is not. But also I think there's much more rightward drift with pervasive keyword args and module decl nesting.
3
2
(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..)
1
1
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.
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.
2
2
Show replies


