drdeeglaze
2017-12-7 19:20:24

Because paren-shape is a syntax property that can be lost? I’m still not clear on that bit. @lexi.lambda


lexi.lambda
2017-12-7 19:21:49

more that (a) #%app should really only be modified by the provider of a #lang or module language, since different implementations of #%app do not compose and some languages may use #%app to enforce invariants, and (b) that macro seems a little weird and confusing.


notjack
2017-12-7 19:24:02

I’d like it if #%app macros composed better


lexi.lambda
2017-12-7 19:25:15

I don’t think they can compose in general, but you might be able to come up with a more restricted protocol that makes arbitrary composition more feasible


notjack
2017-12-7 19:25:34

I’m comfortable with that


notjack
2017-12-7 19:31:48

Hmmm. Should this work? Does it now?

(function-call-expression-with-special-app)
(require-special-app)

How’s it work with local require?


lexi.lambda
2017-12-7 19:34:47

it doesn’t work any more than (my-macro) (require something-that-provides-my-macro) does. the fun part is that it will actually get partially expanded to (#%app my-macro), so it doesn’t produce an unbound identifier error… it produces bad syntax.


notjack
2017-12-7 19:35:49

ah right that makes sense - custom app could introduce requires so partial expansion can’t delay it


notjack
2017-12-7 19:36:09

actually


notjack
2017-12-7 19:36:16

would #%expression change that?


notjack
2017-12-7 19:36:51

the interactions between partial expansion, internal definitions, requires, and provides at the module body context are unclear to me


lexi.lambda
2017-12-7 19:39:03

yes, if you wrapped it in something that deferred expansion of the form, it would produce something different! which is fun.


notjack
2017-12-7 19:39:38

how do those rules differ between module body contexts and internal definition contexts?


lexi.lambda
2017-12-7 19:40:46
#lang racket

(module quote-app racket
  (require syntax/parse/define)
  (provide #%app)
  (define-simple-macro (#%app form ...)
    (quote (form ...))))

(+ 1 2)
(#%expression (+ 1 2))
(require 'quote-app)
(+ 1 2)

produces 3 '(+ 1 2) '(+ 1 2)


notjack
2017-12-7 19:41:20

and local-require in a (let () body ...) does the same thing?


notjack
2017-12-7 19:41:36

(… can you local require syntax?)


notjack
2017-12-7 19:41:47

(looks like it)


lexi.lambda
2017-12-7 19:41:49

re: the differences between module contexts and intdef contexts, they’re mostly similar… but require isn’t allowed in an intdef context. I imagine local-require would do the same thing, though.


lexi.lambda
2017-12-7 19:42:11

you can local-require syntax, just not lazy-require/dynamic-require syntax (for probably obvious reasons)


notjack
2017-12-7 19:42:22

what happens if you local-require a require transformer? same rules as module context?


notjack
2017-12-7 19:42:33

right that makes sense


lexi.lambda
2017-12-7 19:43:25

yes, require transformers are essentially just ordinary expanders that require looks up with syntax-local-value.


lexi.lambda
2017-12-7 19:43:37

require transformers aren’t special in any way. only provide transformers are.


notjack
2017-12-7 19:44:44

right and local-provide is nonsensical so there’s no worries there


notjack
2017-12-7 19:48:16

would it make sense to have some way of delaying provide expansion in the same way that #%expression delays things, so that provide transformers didn’t need their importing require to be in a particular place?


notjack
2017-12-7 19:48:27

my guess is “probably not because complicated reasons”


lexi.lambda
2017-12-7 19:51:20

that’s exactly what provide transformers already do. it’s provide pre-transformers that don’t.


lexi.lambda
2017-12-7 19:51:39

provides and provide transformers are expanded as the very last step of module expansion.


notjack
2017-12-7 19:59:42

and it’s the pre-transformers that can’t for complicated reasons


samth
2017-12-7 20:24:58

@asumu Can you make the PPA work for some older Ubuntu versions?


asumu
2017-12-7 20:26:22

@samth if the older versions are supported on launchpad yeah. I think it should be possible on trusty & precise. Dunno why it didn’t build those actually.


slack1
2017-12-8 00:49:14

Is there a default suite of tools for Racket performance testing?


notjack
2017-12-8 01:08:16

@slack1 not yet, but there are loose sketches and notions to work on top of if you’re interested in working on that


zenspider
2017-12-8 01:21:45

@slack1 what type do you need?


slack1
2017-12-8 02:22:13

Something for easy benchmarking?


samth
2017-12-8 03:32:44