editors 2018-07-04

@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

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.

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.

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?

@seancorfield has left the channel

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 🤔

fair enough 🙂

i didn't mean to derail anything

I get this question all the time ;)

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

😂 4