[HN Gopher] Wisp: Whitespace to Lisp ___________________________________________________________________ Wisp: Whitespace to Lisp Author : signa11 Score : 49 points Date : 2022-08-08 06:51 UTC (16 hours ago) (HTM) web link (www.draketo.de) (TXT) w3m dump (www.draketo.de) | spogbiper wrote: | Wisp already triggers me to think of wireless internet service | providers, written information security plans, windows ink | services platform, and the Wisconsin investigators of | supernatural phenomenon | Decabytes wrote: | The Racket folks are trying to create a parens light language | called Rhombus that allows for easily creating | macros/dsls/languages like lisps normally have. Some of the ideas | proposed are indentation/white space based though I think they | have settled on something similar to honu recently | jwilk wrote: | In the other direction (Python with Lisp syntax): | | https://hylang.org/ | bjoli wrote: | You should check python-on-guile. It compiles Python to | (unidiomatic) Scheme. The resulting code uses delimited | continuations and mutation EVERYWHERE, and still manages to | beat python on all my old project Euler solutions. | gilch wrote: | Or go full circle: Whitespace to Lisp to Python. | | https://github.com/gilch/hebigo | gibsonf1 wrote: | I like parenthesis - simple nested containers. All other syntax | adds unneeded bug inducing complexity. | jwilk wrote: | I thought it was going to be about the whitespace programming | language: | | https://en.wikipedia.org/wiki/Whitespace_(programming_langua... | | "Indentation to Lisp" would be more accurate. | klyrs wrote: | Whitespace to forth would be less daunting... | whalesalad wrote: | cool experiment, but whitespace is a terrible delineator. | ironically one of the most disliked parts of lisp by newcomers, | the parens, ends up becoming its greatest strength once you have | grokked things. | dismantlethesun wrote: | I'm used to whitespace as a delineator thanks to python. If | used judiciously it can be a great benefit. | | I do admit it would be nice if it were optional so you could | have more complicated expressions than you can easily write | with paired brackets/braces/parentheses. | [deleted] | kazinator wrote: | If used judiciously, it doesn't find its way into a | programming language design. | zackoverflow wrote: | I used to feel the same way, but after learning Haskell I think | whitespace is particularly suited for functional programming | languages. | seabrookmx wrote: | Works well in F# too! | thelazydogsback wrote: | Parinfer hits the sweet-spot for me -- you still get the benefits | of the parens, but the indentation is still enforced to match, | and changing either one causes the other to be updated | accordingly | [deleted] | Fellshard wrote: | Wisp is an addictive /idea/, even if the net benefit ends up not | being terribly strong. But combined with some other changes in | assumptions, there might be some interesting insights. I've | tinkered with this idea for a bit. | https://gist.github.com/armstnp/bb2a88bcb053d2195f42c60a0cf1... | | Heading this direction, things almost start to smell point-free. | Functions begin to be designed to take elements likely to be | recursive as their last argument. And a placeholder ('[?]') could | be used to select the recursive slot otherwise. | loxias wrote: | I want something like this, except the opposite. | | Python, except with braces instead of whitespace. (Syntactically | significant whitespace kills me.) | | Or a tool which makes reading easier by adding parens where they | would otherwise be implied. | justsomehnguy wrote: | PowerShell? | | I have a very little experience writing Python, but PS and P. | are extremely similar. | epr wrote: | PowerShell and Python have very little in common | stcredzero wrote: | I remembers, almost a decade ago, I got into an argument with | someone here, who thought that significant whitespace languages | were somehow SO fundamentally different, that they couldn't be | translated back and forth to a bracket delimited language. (This | is one of the hazards of not getting a formal education, or of | not having enough curiosity to self educate at a deep enough | level.) | taeric wrote: | There probably is something to the point that whitespace | languages need more context to know what is going on? Moving | code, in particular, is a bit more tedious with it. That said, | I'm curious why anyone would think it can't be just as | "mechanical." | drcode wrote: | Part of the formative process of every true Lisp programmer is at | some point to spend 2 months creating a parens-free lisp dialect, | and then abandoning it. | anothernewdude wrote: | I'm not alone! | gilch wrote: | See https://www.reddit.com/r/whitespaceLisp/ for more examples. | Akronymus wrote: | Wow, reddit is HOSTILE to non app, no account users. "this | community is available in the app" previously it used to be | only nsfw thar gets locked. | | Well, back to old.reddit. | herewulf wrote: | https://libredd.it/r/whitespaceLisp/ | | .. if the page demands that you use the app on mobile (and I | find this site's layout far superior). | hinkley wrote: | I suspect the person who came up with | | (((((((((((((((((((((( In Stereo, Where Available | ))))))))))))))))))))))))))) | | had prior experience/trauma with Lisp. | | And one of you fuckers is going to tell me that there are more | closing parens than open ones. I did that on purpose, and | you've fallen into my trap. | mtlmtlmtlmtl wrote: | Including the the inventor himself(look up M-expressions)! | | Part 2 is spent wailing in misery that not all languages use | the clearly superior S-expression syntax | | Part 3 is spent making a macro to write your favourite language | as S-expressions, from a lisp environment. | | Finally, part 4 is accepting that we can't have nice things. | Akronymus wrote: | Part 5 is writing macros to make certain things parens free | giancarlostoro wrote: | Correct me if I'm wrong but isn't that part of what Arc | did? I don't recall specifics. I'm also reminded of the old | PHP hack of using arrays as an ORM for queries. | rakoo wrote: | Aka the 5 stages of grief | bloppe wrote: | This is a great idea. Of course, it's not new. Looks like Wisp | was first described in 2013, the same year SRFI 110 [1] | describing largely the same idea was also published. That SRFI | helpfully includes a "related" section describing prior art and | more detailed raionale / tradeoff analysis that some might find | interesting. | | [1]: https://srfi.schemers.org/srfi-110/srfi-110.html | | Everybody seems to want to describe these ideas as "Python-like". | I personally think the JSON / YAML distinction is a more apt | comparison, since the latter is a backwards-compatible "superset" | of the former, and it's also a nod to the duality of data / code | in Lisp :) | kazinator wrote: | Attempts to have some alernative syntax for Lisp go back to the | orignal Lisp project. In addition to the abandoned | M-expressions, there is a reason why the updated version of | Lisp was Lisp 1.5. | | There was a Lisp 2 in the 1960's: a project which added Algol- | like syntax and semantics on top of Lisp, with faster numeric | processing. | | https://en.wikipedia.org/wiki/LISP_2 | | In the 1970's, there was CGOL, which the Wikipedia article says | "may be regarded as a more successful incarnation of some of | the essential ideas behind the earlier LISP 2 project". | | https://en.wikipedia.org/wiki/CGOL | | Fast forwarding to modern times, in addition to Wisp and the | SRFI, there are also David Wheeler's Sweet Expressions and | other things of that ilk. | martinflack wrote: | A cool project... but instead I suggest to everyone who uses | Lisp, just set your editor's syntax highlighter to make the | parentheses fade into the background color almost completely. | They're still there, for correctness, structured editing, and | ease of sharing with others; but they don't stand out. | retrac wrote: | Lisp also really benefits from an editor that colourizes ( ) in | matching pairs. Even C benefits from colour-matching {} in my | experience. I'm surprised it's not more common. | azeirah wrote: | I believe Jetbrains IDEs do this by default for certain | languages, I know HTML for sure. | | That, or I have a plugin running in the background for years | without me noticing. | [deleted] | mtlmtlmtlmtl wrote: | I got used to Lisp before I knew rainbow-parens were a thing. | Then I tried it and found it added nothing. I'm sure it would | be helpful as a learning tool though. | | What I really can't recommend enough is paredit. It ensures | balanced parens by always creating a close to an open. Typing | a close just jumps you past the nearest close after the | cursor. Along with the thing where the cursor momentarily | jumps to the open paren when going past a close paren. | | When I need to add another expression to a scope, I just hit | close paren until I see the jump to the relevant open paren | then hit enter. | | I do know some older(than me) Lisp programmers who even find | paredit excessive though. | | Eventually, I found that when reading lisp I almost never | actually look at the parens at all, only the indentation. | substation13 wrote: | Could probably use an F# syntax-highlighter without modification. ___________________________________________________________________ (page generated 2022-08-08 23:01 UTC)