@hagmonk This is vaguely related to our discussion the other day: https://arxiv.org/pdf/1707.00015.pdf
Although I think Prune is more along the lines of what you meant.
@cfleming oh sweet, that's pretty interesting, I'll put that on the stack of papers
You can try it out here: https://ravichugh.github.io/sketch-n-sketch/releases/v0.6.3/
Seems a little buggy though
I’m sad they never released Prune, even if they just threw a zip over the fence.
Hah, web based - at first I was trying to recognize the UI chrome. OS/2? Irix??
It does have that 80's sort of feel 🙂
"I know this … this is UNIX …"
You’re quite the treasure trove of movie quotes!
Although even I get that one.
Out of all the things my brain wants to remember, things like "It's tax day" or "cancel that comcast subscription" are impossible. I can instead recite much of the script of Full Metal Jacket, or SpaceBalls. I wish I knew why!
There’s probably a way you can encode useful information using that.
Like those walk-through-my-house tricks that people use to remember 100 names in 5 minutes.
Yeah I should try that someday - names! Another thing that totally escapes me. I need a “notional representation” in my head of the person before I can attach a name to them. Before that everyone gets filed under “person”.
I just apologize up front and tell people to prepare to be asked several times
I used to think I had a filing problem, then I realised that actually I just never paid attention when people told me their names. Once I started doing that I actually had a fighting chance of remembering some 🙂
Yeah there are tricks around repeating their name, finding a mnemonic - it’s very impressive when someone has mastered doing that to large groups. People do like it when their names are recalled.
This repo has some interesting stuff in it: https://github.com/ravichugh/sketch-n-sketch/blob/acafb67256dd59f177b17c4b051eae905ba11987/src/DeuceTools.elm
Now this is what I call a function name: https://github.com/ravichugh/sketch-n-sketch/blob/acafb67256dd59f177b17c4b051eae905ba11987/src/CodeMotion.elm#L456
They’ve put an impressive amount of work into the refactoring for what is essentially a glorified PoC
Interesting, I haven't actually looked at Elm before
It’s like haskell-lite
The pattern-matching stuff is really nice for programming tool work (compilers, refactoring tools)
I often find myself wanting core.match to be a little more integrated into clojure for similar reasons
I think it works best with static types (ADTs), but that would be nice, yeah.
Last time I used it was in depify
https://github.com/hagmonk/depify/blob/master/src/depify/project.clj
I had to break a larger match clause into several functions because it kept blowing the … whatever it is when there's too much code. ETOOMANYBYTECODE
it was probably angry because I was using recur
on the rhs of the matches
No, I think it just generates a humungous amount of code.
breaking it into separate functions appeased the compiler. so things like that, plus it's a lib, plus it's a macro, I end up using it quite sparingly
maybe we could get partway there if it was possible to use specs in destructuring positions
the scheme macro syntax with its case style is just outstanding
I'd love to see an example!
e.g.:
(define-syntax while
(syntax-rules (<keywords>)
((<pattern>) <template>)
...
((<pattern>) <template>)))
Which might look like:
(define-syntax while
(syntax-rules ()
((while condition body ...)
(let loop ()
(if condition
(begin
body ...
(loop))
#f)))))
So it’s a pattern-matching system rather than defmacro
so this relieves us from having to quote and splice?
Right. I haven’t used it enough in anger to know whether it does so totally or not.
it seems very natural. and i love the first class pattern matching. but i haven't used it enough in anger. seems tough these days to flush out a real long project in scheme
It makes simple macros much easier IMO, but it can’t be used for more complex ones.
i.e. something like core.match can’t be expressed as a simple template.
fun fact: there's a scheme interpreter in the macOS and iOS kernels
Really? I didn’t know that.
microsoft just recently released a configuration purposed scheme for .NET: https://github.com/Microsoft/schemy
look in /usr/share/sandbox
, it's used to express the sandbox restrictions the kernel enforces on various subsystems
I think people run up against the limitations of syntax-rules pretty quickly, and then move on to syntax-case, which is way more complex and also (IIRC) turing complete.
ah i've always been confused by the distinction.
Syntax-rules is just very simple templates. It’s really nice for basic things but can’t do anything more complex.
In syntax-case, you work with syntax objects, which are sort of like Clojure forms with metadata
And then in Racket you can go to syntax-parse, which is a full grammar-based macro definition like spec on steroids: https://docs.racket-lang.org/syntax/Parsing_Syntax.html
are you a schemer? from college or part time?
No, but I’m generally interested in macro systems - I’ve never actually sat down and used Scheme for much beyond some simple dabbling though.
I read a lot about all this when writing the macro parsing stuff for Cursive.
wow. have you looked at bronsa's decompiler library about how it tries to reconstitute macros from their expanded forms?
the stuff you've done with static analysis is amazing
Yeah, it’s pretty neat. He didn’t think it would be that useful for real-world things though, IIRC it special cases a bunch of things using heuristics for each macro form it tries to decompile.
Thanks! It’s a fun project to work on.
I spoke about some of this at the conj a couple of years ago: https://www.youtube.com/watch?v=kt4haSH2xcs
In case you’re interested.
@hagmonk Is that MacOS scheme interpreter available for apps to use? Not that embedding some other one in an app is hard to do I guess.
I just looked in /usr/share/sandbox/
, that’s pretty wild
owing to the fact the entire reason it's there is to interpret sandbox profiles, I'm pretty sure it's quite locked down ... I haven't actually even thought to check if an API is exposed, lol
I think there's also a plist interpreter in there too. ah, the sacrifices we make
Yeah, just embedding whichever Scheme flavour you prefer is probably easier for an app anyway.
do you work at apple @hagmonk?
If he told you that, he’d probably have to kill you.
haha my friend works there. it's secretive but it's not that secretive
the biggest worry is probably asking questions about apple and stuff. which i won't do and don't care about
The armed drones are in flight and on course to your location as we speak.
I'm not at liberty to discuss the nature of my mission :thinking_face:
fair enough 🙂
i didn't mean to derail anything
I get this question all the time ;)
oh sorry
no no, I'm just joking. People often figure out where I work, I'm not particularly secretive about it
but I've been there for 13 years so this is how I survive ;)
well i won't ask any more questions. i just hope you're at the new campus and not stuck at the old.
🙂
It’s surprising how many large companies don’t want this sort of thing public though, I’ve had to sign various EULA extensions for companies who don’t want me to identify them as customers, I think because they don’t want anyone knowing the technologies they use.
i've heard google uses Go. keep that down low though
well, the fruit company has unique problems. people stalk social media looking for things engineers are talking about, trying to infer direction, you wouldn't believe the lengths ... some of the downside of being an almost $1T company that has a history of surprising markets
yeah. i hate the rumor stuff. sucks when products/services are introduced and get a yawn because everyone heard already and expects more surprises regardless of how great the actual release is
How’s that self-driving car coming along, @hagmonk?
drones are rerouted and will be at your location soon
LOL, I drive myself to work every day, dunno what you're talking about :) plus originally from .au, so I'm in the market for a V8 self-driving car but they're hard to come by …
I haven’t heard much about Holden’s self-driving plans.
(this is getting dangerously #off-topic)
last I heard they self-drove themselves to an off-shore manufacturing facility
there aren't too many people in the channel ;)
and sean got bored and left. i think we're safe