Verifying my understanding of psychotic bastard:
set x: fn (b) : cons : 't (cons 'b ())
is a valid way to say
(set x (fn (b) (cons (' t) (cons (' b) ()))))
Correct?
Verifying my understanding of psychotic bastard:
set x: fn (b) : cons : 't (cons 'b ())
is a valid way to say
(set x (fn (b) (cons (' t) (cons (' b) ()))))
Correct?
| Currently true code samples? | |
| ----- | |
| set x: fn (b): cons 't (cons 'b ()) ===> (set x (fn (b) (cons (' t) (cons (' b) ())))) | |
| set x: fn (b): cons 't: cons 'b () ===> (set x (fn (b) (cons (' t) (cons (' b) ())))) | |
| ----- | |
| set def: | |
| '('name ... 'code | |
| leak: really name | |
| set (really name) code) | |
| and | |
| set def: | |
| '(('name ... 'code): | |
| leak: really name | |
| set (really name) code) | |
| (set def | |
| (' (((' name) ... (' code)) | |
| (leak (really name)) | |
| (set (really name) code)))) | |
| [MAYBE this, too: | |
| set def: | |
| '('name ... 'code | |
| leak: really name | |
| set (really name) code)] | |
| ----- |
Easy answers first:
I came around on the arg-list-parens for a single argument; I still think you're crazy for wanting \x y z: x + y + z.
Re (e: f): Yes, there are places where the colon is unnecessary. I've found it useful in test cases to have those --- sometimes for readability and sometimes to try and fool the parser.
Re: aside: I dunno --- I was born at the right time, and always had flashy whatsits (though I hear they have pills for that now). To your credit, I had to write some s-expressions to explain something on G+, and it just about made me throw the keyboard ('cept it was a laptop). Psychotic Bastard is bizarre (and seems more so the more I try and explain it to myself) but it's pleasant to write.
(Oh god, I just realized I've been ignoring infix precedence. Poop. I thought I had this worked out right finally.)
You're going to give : a precedence between operators??? It's not an operator! It's a delimiter! I... ugh... arrgh. We gon' have words, friend.
Every possible method for doing if/else is completely and utterly wrong and I despise each of them, individually, for the hateful snowflakes they truly are.
I had a code sketch for if/else that was a pretty naive 4 lines long. I put in a working but hideous version tonight via def-keyword. It weighed in at around 50 lines, two of which were
; OMG HACKS
and
; END OMG
I'm taking this as a sign that I haven't got def-keyword right yet.
I knew I had a better example that's pro colon-fires-first:
rest-of-line <- many: indented-past block-indent >> basic-exprHere
<-is roughlylet. The block this comes from is monadic, but that's not important right now, the gist is thelet/set/defineoperator should have the lowest precedence (colon should fire first).(Also not important is that the line is ugly.)
Hmm.