Fork me on GitHub
#jaunt
<
2016-04-09
>
eraserhd17:04:37

I’m trying to run #C0F4MB8AY on #C0SBWN3AP. I’m getting a lot of warnings, which is cool. I’m also getting an error from prismatic.schema that clojure.core/refer* is not public.

eraserhd17:04:55

@arrdem: I’ll dig in, but do you know off the top of your head?

eraserhd17:04:10

Also, I had to upgrade my JDK and unset my JAVA_HOME to run it. Apparently I was pinned to Java 7

eraserhd17:04:15

Aha, refer-clojure expands into refer*, which is now private.

eraserhd17:04:32

It’s … refer madness

arrdem17:04:28

Argh. Did I break refer-clojure?

arrdem17:04:36

goddamnit.

arrdem17:04:26

Okay. I know why. Would you please open an issue? I'll try and hotfix this.

arrdem17:04:27

Sorry about that.

arrdem17:04:20

Yeah I'm surprised that this didn't break the test suite...

arrdem18:04:32

@eraserhd: can you give me some details about what's breaking?

arrdem18:04:55

@eraserhd: :refer-clojure in a ns form will work just fine. Are you seeing a (refer-clojure ...) at the top level of a file?

eraserhd18:04:53

I didn't think so. The problem is in prismatic schema.

arrdem18:04:20

can you post a stacktrace?

eraserhd18:04:31

I did a quick grep, and didn't see anything weird, but I could have missed something. Jaunt is smarter about NS forms?

arrdem18:04:39

it's starting to be.

eraserhd18:04:01

Sure. I'll be back at my computer in a few minutes.

arrdem18:04:12

thanks. Trying to repro on my end.

arrdem18:04:04

:refer-clojure definitely works in Jaunt 0.2.0, do you have a snapshot build?

arrdem18:04:19

(refer-clojure ...) as a top level form is definitely fucked.

eraserhd18:04:18

It’s using refer-clojure in the middle of the namespace.

arrdem18:04:46

Okay. That's what I'm patching right now. I'll have a 0.3.0-SNAPSHOT build for you in a sec.

arrdem18:04:20

why refer-clojure needs to be a macro not a fn is beyond me...

eraserhd18:04:52

midje has a lot of deprecation warnings. I will submit a PR later. (all about ‘:use’)

arrdem18:04:45

Okay. Demoting refer-clojure to a fn from a macro takes care of this.

arrdem18:04:41

@eraserhd: [org.jaunt-lang/jaunt "0.3.0-SNAPSHOT"] now has a bugfix for this.

arrdem18:04:53

you should be able to just pull it down from clojars

eraserhd18:04:36

@arrdem Cool! I shall do so in a short bit.

arrdem18:04:50

Take your time. I've got my commit for the day in 😛

eraserhd19:04:52

@arrdem I think I’m getting further now

eraserhd19:04:06

OH, let me lein clean

eraserhd19:04:24

All tests pass!

arrdem19:04:58

made my day 😄

eraserhd19:04:49

pushed a patch to avi. Avi is now on jaunt

arrdem19:04:33

We'll see how long that lasts 😛

eraserhd19:04:12

back to implementing horizontal splits

eraserhd19:04:19

Let’s try out this code reloading thing simple_smile

arrdem19:04:35

The ns reloading thing isn't in mainline yet 😢

arrdem19:04:03

turns out it's actually pretty hard. Will be the main feature of 0.3.0 tho.

arrdem19:04:33

The fn metadata stuff bronsa was helping me with was the main blocker to getting that out the door. Should happen this week.

eraserhd19:04:21

Oh, I read your whole blogpost last night. Oxcart is so what I would do, had I time.

eraserhd19:04:32

I’ve been on-and-off working on a lisp called Moreso.

eraserhd19:04:59

In fact, Clojure was the last Lisp to study before making Moreso, and it kind of broke me.

bronsa19:04:36

I feel like something like oxcart would be better off as a language started off from scratch rather than piling stuff on top of clojure

bronsa19:04:47

too many edge cases to consider in order to adapt clojure

eraserhd19:04:57

Yeah. Clojure definitely shows all the layers.

arrdem19:04:32

Yeah. Oxcart was a bunch of fun. We'll see how much of that and the strict clojure stuff I did with amalloy makes it into Jaunt.

arrdem19:04:04

Definitely agree wrt starting from scratch, but Jaunt is an exercise in avoiding those reinvention costs.

arrdem19:04:31

I think you can get within a small epsilon from what's already there.

bronsa19:04:59

btw @arrdem I was talking about oxcart/kiss at clojurex with @mtrimpe -- the "def as pure action over an immutable ns" thing has some non-trivial obstacles to overcome

bronsa19:04:10

e.g. handling forward refs & mutually recursive defs

arrdem19:04:22

Yeah. One of the main reasons I dropped the idea.

arrdem19:04:54

I spent a lot of time last year sketching out how to make def a fn from an env and an expr to an ev.

eraserhd19:04:08

I think you’d need a module form, e.g. R6RS.

arrdem19:04:25

Yep. Your entire file ends up becoming an implicit module.

bronsa19:04:38

I think a clojure-y language would gain a lot more by having racket-style compilation stages than immutable namespaces

arrdem19:04:40

Which incidentally is pretty much where Jaunt is headed.

arrdem19:04:01

I haven't read anything about those.

bronsa19:04:20

(not that they mutually exclusive concepts, I don't think)

arrdem19:04:27

I think that the ns reloading changes I've got coming down the pipe address the primary shortcomings of the existing mutable nss.

arrdem19:04:36

but I'm not biased at all.

bronsa19:04:34

@arrdem: I'll link you the paper as soon as I can find it

arrdem19:04:02

I need to read the Typed Racket paper and Ambrose's thesis too....

arrdem19:04:17

debating how far I want to push adding :arglist metadata to fns directly.

arrdem19:04:54

@bronsa: I discovered that Clojure can't/won't emit an invokePrim call for a lambda because it uses arglist var metadata to find the prim hint 😕

bronsa19:04:33

which partially explains my crusade against people who alter :arglists

arrdem19:04:49

Yeah. I'm all aboard that train.

arrdem19:04:25

I've been pondering whether it makes sense for defn to put metadata on the var. For instance doc metadata would arguably be more useful on the fn.

arrdem19:04:57

since the var itself doesn't actually have any usage...

bronsa19:04:08

up until 1.3 (I think) clojure used to store the metadata on fns

arrdem19:04:12

although deprecated only makes sense on the var.

bronsa19:04:25

sometime around those versions anyway

arrdem19:04:23

@bronsa: so I had this idea today... #:foo {:unqual 0 ::bar 1 ::baz/qux 2 'unqual 3 '/qual 4 '/alias/qual 5}

bronsa19:04:59

'/foo made my eyes bleed

arrdem19:04:19

I mean... if it gets rid of :_/

arrdem19:04:45

and ' there is normal quote on eval.

arrdem19:04:16

the idea is just that you define / as a symbol prefix to mean contextual qualification same as :: on keywords does.

bronsa19:04:42

I.. just don't like it

arrdem19:04:54

I understand that Rich considers it a syntax bikeshed, but I agree with you about : vs :: and think it's a critical one.

bronsa19:04:00

but yeah, I get what you're going for

bronsa19:04:03

shrug I've done my bit, not going to spend any more time arguing on that proposal

bronsa19:04:26

kinda hard to gauge if the syntactic tradeoffs being proposed are worth it without them giving us the full context

bronsa19:04:34

happy to at least know that macro grammars in some form or the other are likely coming in 1.9

bronsa19:04:50

(and that Rich is, indeed, still alive)

arrdem19:04:04

Those will be interesting.

arrdem19:04:25

I agree they're much needed.

eraserhd19:04:31

I don’t think I’ve needed anything like this. Though I guess I understand the semantic thing.

arrdem19:04:57

It's Rich's language and he's gonna do what he likes with it.

arrdem19:04:24

The example I like is that core.async was gonna be baked into compiler.java until tbaldridge wrote the existing implementation...

arrdem19:04:11

or at least that's how I've heard the story.

bronsa19:04:04

I'll take any other implementation over lexical transformations

arrdem20:04:01

One thought on the arglist thing... having that metadata on the Var allows hinted invocations in forward declared cases.