Perl 6 - the future is here, just unevenly distributed

IRC log for #6macros, 2015-06-08

| Channels | #6macros index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
07:45 Ven joined #6macros
10:27 Ven joined #6macros
11:13 Ven joined #6macros
13:33 Ven joined #6macros
14:45 Ven joined #6macros
15:45 Ven joined #6macros
16:10 Ven joined #6macros
16:59 Ven joined #6macros
17:01 Ven seems like
17:01 Ven that's the second perl6 conference (and incredible opportunity) I'll have to miss because my school sucks
17:39 masak :/
17:41 Ven joined #6macros
17:42 Ven actually.
17:42 Ven school is okay with a skype call.
17:44 masak meaning... you can come?
17:45 Ven yes
17:45 Ven if the financial issues are sorted at, that's what it means
17:45 Ven are you going, btw?
17:46 Ven .oO( "my son will go instead" )
17:48 masak :P
17:48 masak are we talking YAPC:EU?
18:54 vendethiel joined #6macros
18:57 vendethiel no
18:57 vendethiel it's the swiss perl workshop
19:20 masak ah. sorry, I wasn't sure of the context, since the first line from you (that I saw) was
19:20 masak <Ven> that's the second perl6 conference (and incredible opportunity) I'll have to miss because my school sucks
19:21 masak anyway, yes. I'll be coming to that conference.
19:24 vendethiel I'm so happy to hear that :D
19:24 vendethiel I might meet the masak :D
19:25 masak heugh :)
19:29 masak might I/we have a Qtree implementation ready to showcase at Swiss?
19:30 masak what would it take to get there?
19:32 vendethiel oh! great question!
19:39 masak visualize success. then plot the course there. :)
19:40 masak s/the/a/
19:42 vendethiel do you have an idea?
19:42 vendethiel I don't have much
19:43 masak I think I should spend some more time on 007, with the explicit goal of informing the Qtree design.
19:44 vendethiel okay.
19:44 vendethiel have an idea for me?
19:44 masak I'm always curious to tap your brain for macro ideas.
19:45 vendethiel hah :) it's all there, but that's a bit vague
19:45 masak I haven't read the "50 years" book yet. but I'll make sure to before Swiss.
19:45 masak maybe then we can have a productive high-bandwidth brainstorming session.
19:45 vendethiel :D
19:45 vendethiel that'd be absolutely amazing.
19:45 masak yes \o/
19:45 vendethiel mmh, now for travel expenses though
19:49 masak I was wondering the other day whether it's be possible to play around with linear variables in 007.
19:49 * vendethiel googles linear variables
19:49 masak er.
19:49 masak wanted to say "linear types"
19:49 vendethiel ah!
19:50 masak but didn't want to say "types", because there's not much typing involved
19:50 masak just some alternate syntax similar to `my x`
19:50 vendethiel do you want that relatedly to escape analysis, btw?
19:50 vendethiel I remember you and jnthn talking about that
19:50 masak haven't analyzed it, so dunno if escape analysis is inevitable. it might well be.
19:51 vendethiel i think it'll, somewhat
19:51 vendethiel at least *some kind of analysis* will be required.
19:51 vendethiel not sure how that interacts with callframe() and all
19:51 masak good news! 007 doesn't have callframe() ;)
19:51 vendethiel :D
19:52 masak anyway, I'd be tickled pink if we could (a) come up with a syntax for linear decls, and (b) try to come up with increasingly problematic programs that use them.
19:52 masak mebbe just `lin x`
19:53 vendethiel should the "is" syntax be reused there?
19:53 masak hmm
19:53 masak maybe.
19:53 vendethiel seems like I'd get to share a room with a fellow p6 hacker
19:53 * vendethiel shared room with timotimo++ at apw
19:54 masak was gonna say that assignment should be mandatory on declaration, but on second thought that doesn't seem necessary
19:55 vendethiel more things to track :-)
19:55 vendethiel todo: built a rust-like borrow checker built on top of that... hehehehe
19:55 masak need to track anyway, so... :)
19:55 masak feels like the same thing.
19:55 vendethiel yes
19:56 * masak guesses he'll just have to iterate through all the control flow constructs of 007 to see how they'd interact with `lin`
20:00 vendethiel do you have some spare time now to do that?
20:00 masak I haven't had "some spare time" since the delivery... :P
20:01 vendethiel I guessed as much ;-)
20:03 masak but sometimes I have... evenings. when the household is asleep and I can sit by the computer for a while.
20:04 vendethiel alright
20:04 vendethiel I'd love to do it with you, if time allows it
20:04 masak cool.
20:10 masak maybe a gradual way to implement this would be to start with trivially analyzable blocks
20:10 masak like `{ lin x = 5; say(x) }`
20:11 vendethiel oh, as a declarator?
20:11 masak and provisionally forbid everything more fancy than that
20:11 masak and then expand gradually, handling more and more cases
20:11 vendethiel right
20:13 masak can you think of a program that would be... interesting to trace?
20:13 masak or interesting in any way
20:13 vendethiel mmh.
20:13 vendethiel something erlang-style maybe
20:15 masak not sure I understand that reply...
20:16 vendethiel well, okay
20:16 masak what we want is for the compiler to accept as many programs as possible where the variable is used exactly once.
20:16 vendethiel yes, so
20:16 vendethiel an example
20:16 vendethiel SSAF
20:16 masak within reasonable bounds, since this likely runs up against undecidability
20:17 vendethiel Idris has linear types
20:17 vendethiel named "Unique" IIRC
20:17 masak ooh
20:17 vendethiel allows for mutation, even
20:17 vendethiel because it can prove you're not doing anything else with it
20:17 masak "unique". that's a neat name for them
20:21 vendethiel :)
20:31 masak what about this one? `{ lin x = 5; if fn() { say(x) } else { say(x) } }`
20:31 masak I guess that one's OK.
20:32 vendethiel yes
20:34 * masak realizes he's not that bothered by `if` statements
20:34 vendethiel well.
20:34 vendethiel you need to mark the whole if stament as "using"
20:35 vendethiel if any of its parts (if, (elseif), else) use it
20:35 masak no, that doesn't sound quite right.
20:36 vendethiel you can't have it the other way around without proving what the if's condition will evaluate to
20:36 masak I think you'd need to require something like "either no parts use it, or all parts do"
20:36 vendethiel lin x = 5; if $should { say(x) }
20:36 vendethiel that seems reasonable to me
20:36 vendethiel any reason all parts should use it?
20:36 masak a linear variable *has* to be used before block end.
20:36 vendethiel okay
20:36 vendethiel then yea
20:37 masak once-and-only-once
20:37 masak there's something weird about that, though.
20:37 vendethiel mmh
20:37 vendethiel I don't remember the names
20:37 masak what makes `say(x)` a "use"?
20:37 vendethiel the fact it's referring to the variable
20:38 vendethiel really
20:38 vendethiel we're missing some notions here, but mostly
20:38 vendethiel 1) we either consider it's "taking the value from us"
20:38 vendethiel 2) in some languages, you can consider that forced the value to be computed ("lazy-to-strict"?)
20:39 masak I think we need to de-confuse "lending the variable to callee" and "using the variable (thus killing it)"
20:39 masak syntactically.
20:39 vendethiel #1 is kind of like ownership in C. made much more explicit in C++11 with std::move, and in rust
20:41 masak mebbe `say(*x)` would be a decent syntax for killing/using a variable.
20:42 masak bit reminiscent of C's dereferencing.
20:42 vendethiel so, what would "say(x)" do?
20:42 vendethiel fail?
20:43 masak and mebbe that means that `lin x` shoud really be `my *x`... :)
20:43 masak yes, `say(x)` would fail, because it doesn't hand back the linear variable properly.
20:44 masak I think I like it. :)
21:05 masak well, 'night
21:05 vendethiel 'night
21:06 vendethiel i really don't want to see my *x, btw
21:06 vendethiel ETOOCONFUSING

| Channels | #6macros index | Today | | Search | Google Search | Plain-Text | summary