ME: I do not need "AI code assistants" because I have a keyboard with a functioning "control" key.
THE "CONTROL" KEY ON MY KEYBOARD: *breaks*
ME: *sweats profusely*
ME: I do not need "AI code assistants" because I have a keyboard with a functioning "control" key.
THE "CONTROL" KEY ON MY KEYBOARD: *breaks*
ME: *sweats profusely*
Wait. Can you write GUIX flakes (or whatever they're called) in Wisp?
@aartaka I think it's very interesting!
I didn't know it was an option for Guix. That's good to know.
@akkartik Oh, multibranch if makes sense.
I'm actually doing a vaguely bizarre thing where the if statement can have an optional "else" because "else" is a global symbol which is defined as "false". If the symbol is non-false (eg, a block) it's treated as a case. i'm considering defining "elif" as "true" and special-casing that to determine whether the next item is a case or a condition.
@akkartik By the way, something that may not be obvious in my sample code. I said {} is "lambda", but I was simplifying for space. {} is an argument-less lambda. In fact, {a b, c d} is shorthand for '((a b)(c d)). You upgrade a quoted list (a {}) to a function by passing it to the fn or set-fn builtin functions.
@akkartik Are there any examples of cond in the examples list above?
@akkartik This was my approach to cond, I called it the "match" statement
I think it's quite readable, but when writing it it's a bit frictiony to have to remember when to use [], when to use {}, and when to use () to get the results you wanted. (Note "match" is a *function* defined further up in the file; this LISP has no special forms, even the {}:. syntax isn't special forms, it's just inserting (, ) and ' in various ways.)
@akkartik Since this means that most lone words alone on a line are noops, to be "helpful", the interpreter treats it as an error when it encounters a lone-word statement (unless that statement is the final line of a {} block, in which case it is returned as the evaluation result of the block)
@akkartik ( is inserted at start of line, ) is inserted at end of line. An unclosed ({[ within a line extends the line. A blank line is ignored. so yeah, one ( before the "print", one ) after the "sp".
Single word on a line is the grammar's one awkward case. Single word on a line is *exempt* from the () wrapping. This is because otherwise the [] list blocks would be very hard to form sensibly. A bare word on a line is treated as just that word's value, and it's not executed like a function.
@lobo oh gosh i'm so glad you noticed this because this was LITERALLY my attempt to make a LISP that felt like TCL. I learned TCL and was like "this is compelling but too unhygenic, what if I made something halfway between TCL and LISP"
( Look how fundamentally un-LISP-y my LISP is. I'm proud of it. https://codeberg.org/mcc/nameless-experimental-lisp/src/branch/unstable/sample/fizzbuzz.l0 )
EDIT: Wait, I think this sample code might be a bit out of date… this is from before the language had a "while" builtin, so it defines a "while" operation in terms of "if".
So for a long time I found LISP elegant but I found the syntax infuriating. Then I made my own LISP variant with semi-significant whitespace and helper syntax— each line (up to whitespace or comma) is wrapped in an implicit (), a : wraps a () to the end of the line, a {} wraps its interior in (lambda), a [] wraps its contents in (list ), "x.y" becomes "get x y". Suddenly, I found it usable!
I wonder if I could just make an editor that applies these rules implicitly, and then I could use GUIX.
@noiob Shrugging is gendered?? :O
@mayintoronto *looking down* ok so this shirt is green but i actually have one that's exactly the same but purple brb
@mayintoronto "you can tell i'm a woman because i'm wearing a purple shirt"
(The actual problem was that I accidentally used the generic "shrugging person" emoji instead of the explicit "shrugging woman" emoji, and Windows 10 made a different decision from the Mastodon emoji set about default genders¹. Meaning there's not actually a problem except that emoji are somehow a form of ideogram which is subjective depending on who is viewing it.)
¹ https://magicalpessimism.bandcamp.com/track/when-its-over-ft-no-rome
Wowwww Mastodon custom emoji misgendering me 🤷♀️
CHALLENGE: Do picture-in-picture for a YouTube window without crashing Wayland
THE CONTESTANTS: Debian 13, Firefox 140.6.0esr
OUTCOME: Abject failure
@bob Personally I do not