»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
timotimo | i once started a bit of work that'd cut down the size of the call graph, but it gave wrong results and that kind of makes the profile itself totally useless | 00:00 | |
i have a patch that turns off the code graph completely, which makes it much faster and the result file much much smaller, but it's not as interesting as all the timing info also disappears | |||
so it only gives you allocation info | |||
raydiak | yeah I remember you mentioning that around the time you suggested I look into it too | 00:01 | |
timotimo | oh | ||
raydiak | stuff just slipping and falling off my plate all over the place :) | ||
timotimo: have you done anything shiny lately? work on sdl, games, whatnot? | 00:03 | ||
timotimo | no | 00:04 | |
i've had very, very little perl6 time for about a month | 00:05 | ||
raydiak | yeah it's been that time of year...I don't personally know anyone who has accomplished much of anything in the past month that I'm aware of | 00:06 | |
00:06
adu joined,
cognominal joined
|
|||
timotimo | glad to hear it :P | 00:07 | |
raydiak | glad to hear I'm a friendless recluse? ;) j/k | 00:08 | |
timotimo | oh | ||
well, that's another possible interpretation of that sentence | |||
raydiak | heh nah, I'm just bein silly in this case | 00:09 | |
adu | hi all | 00:13 | |
raydiak | heya adu | 00:14 | |
adu | hey :) | ||
raydiak | how goes it? | ||
adu | so I think I fixed the typedefs once and for all, and I added a bit to the readme that typedefs are important | 00:15 | |
raydiak | oh, I see...that makes it nice and clear | 00:16 | |
adu | raydiak: are you a contributor to Inline::C? | 00:22 | |
raydiak | nice, cut my failures in that zmq test from 146 to 85 | 00:23 | |
adu: I don't think I've done anything to it yet, no | 00:24 | ||
timotimo | "that zmq test"? | 00:25 | |
adu | raydiak: are you not diakopter? | 00:26 | |
raydiak | adu: nope | ||
timotimo: gist.github.com/raydiak/e268376b2cb6280ad7d3 | |||
adu | ah n/m then | ||
timotimo | oh, i see | 00:27 | |
raydiak | timotimo: it's just a specially-processed version of zmq.h that I used to find C::Parser failures | ||
00:27
BenGoldberg joined,
Woodi joined
|
|||
raydiak | but it hints at what I would like to use C::Parser for: auto-genning bindings | 00:27 | |
timotimo | sounds good | ||
00:29
ssutch left
|
|||
raydiak | it always kinda blew me away that using pretty much any FFI I've tried so far requires you to get intimate with the C bits...I want to just include the darn thing and use it, like I can from C | 00:29 | |
japhb | adu: diakopter is off doing a startup. I expect he probably won't be around for quite some time. | 00:30 | |
adu | "doing a startup" sounds vauge and secretive | ||
japhb | adu: I know a (very) few things, but I have no idea how much I'm allowed to say, so I'm keeping it to that. :-) | 00:31 | |
adu | raydiak: ah, so from AST => Str? | ||
japhb: my philosophy is that you need money to give away free software | 00:32 | ||
raydiak | adu: yeah, I think that describes what I'm talking about...your module will give me the ast, and I'll use it to write out a .pm6 binding for the given header | ||
adu | raydiak: or Str => CAST which can be analysed to QAST? | 00:33 | |
raydiak: well, I've been mulling over CAST for a while now, and I can't decide to have 1 or 2 | 00:34 | ||
raydiak | nah not trying to build it out of qast, writing strings out to a module file will be fine for my purposes | ||
adu: how so? | |||
adu | if there are 2 ASTs, then one will correspond to syntax, and one to semantics, if there is 1 AST, then it would be somewhere in between the two, or there would have to be a lot of processing to convert it to the semantics AST | 00:35 | |
raydiak: well, for example Arrays, in C, their types are represented as a sequence of DeclarationSpecifier's (which includes type) and a ArrayDeclarator (which includes name and size), but what most people want is just the name by itself, or the combination of (type and size) | 00:36 | ||
for the syntactic AST, we would have the above, but for the semantic AST we would have (name, complete type), where the complete type for an array would have both the DeclarationSpecifiers and the array size in it | 00:37 | ||
raydiak | ah, I'm getting it... | 00:38 | |
adu | so any help with the AST would be most appreciated | ||
raydiak | why wouldn't you want to provide all information in each node of just one ast? is the tree structure itself different between the two? | 00:39 | |
s/ast/cast/ | |||
adu | so have a coarser granularity with one object that has name, types, size? | ||
raydiak | yeah, if I'm thinking about an array, whether I want its name or its type, either way I'm not thinking about whether that's a semantic or syntactic issue, and would generally expect there to just be a method/attribute for what I'm looking for | 00:42 | |
why does that enforce coarser granularity? I'm still not sure why its an either/or choice | 00:43 | ||
adu | becuase it requires that all types are complete | 00:44 | |
japhb | adu: I'm not sure what your point was about 'japhb: my philosophy is that you need money to give away free software'. Can you explain what relation that had to the startup conversation? | ||
adu | japhb: hmm, I might have missed a few steps in my logic, or I might be biased, I'm not sure | ||
00:45
Mouq left,
tinyblak joined
|
|||
raydiak | adu: even if the type is incomplete, couldn't you just not populate those properties of the cast, or clear a .type.is-complete flag, or something like that? | 00:47 | |
00:47
kaare__ left,
cognominal left
|
|||
adu | japhb: people do startups for many reasons, one of which is to make money. Money takes care of some of the "Maslow's hierarchy of needs" that is required by anyone who works on free software. | 00:48 | |
00:48
kaare__ joined
|
|||
raydiak | adu: you probably have far more thought into this than I, so bear with me if I'm catching on slowly :) | 00:48 | |
japhb | adu: OIC. I don't think that's why diakopter is working on this particular one. Though I'm sure he wants/expects it to make money. :-) | 00:49 | |
adu | raydiak: there are only 2 parts to a type: left and right, the left type is composed of things like static const char, and the right type is composed of things like [3] or (double, double) | ||
japhb wonders how many #perl6'ers would work on Perl 6 implementation if they could get a well-compensated job doing that, and how many prefer it to be a hobby | 00:50 | ||
work on it full-time, I mean | |||
raydiak | semi-related to the other convo thread, has anyone here had much experience getting work on any of those freelancing sites? if so, did it work out well for you? any tips? I need to make money too :P | ||
japhb | As a freelancer years ago, I found myself to be singularly awful at drumming up business, so no, unfortunately .... | 00:51 | |
raydiak | me too...should see if I can find a freelancing salesperson or something heh | 00:52 | |
adu | raydiak: I was thinking of representing the "right types" as functions from Type -> Type, and to make them complete you just call it with the "left type" as an argument | 00:53 | |
00:58
timotimo left
|
|||
raydiak | adu: any sane person will tell you not to take my architecture advice, but if I follow correctly, I guess I'd make Type its own little class with suitable properties and methods for handling all this variety | 00:58 | |
then use that in your casts where you need to talk about a type | 00:59 | ||
adu | CASTs? | 01:00 | |
raydiak | thought that was what you're calling the result of your action methods | ||
adu | es | ||
yes | |||
raydiak | oh, right, cast as in...type...no, CAST is what I meant :) | 01:01 | |
adu | its just that "casts" means something else in C | ||
:) | |||
raydiak is extra-lazy w/the shift key some days | |||
adu | my CAST classes are extra lazy | 01:04 | |
they're composed entirely of "has"s | |||
01:05
tinyblak left
|
|||
raydiak | I like those classes...they feel so beautiful and declarative before you muck it up with all that procedural junk :) | 01:06 | |
adu | lol | ||
01:06
Woodi left
|
|||
adu | raydiak: but how do you return a Type and a Name at the same time? | 01:07 | |
01:08
dayangkun joined
01:09
Mso150_y left
01:10
Mso150_y joined
|
|||
adu | raydiak: oooo and I added a method to cdump | 01:10 | |
01:13
Woodi joined
01:14
IllvilJa left
|
|||
raydiak | adu: I'm thinking you return a single instance of something along the lines of class CAST::Type { has $.name; has @.decls; has ... }; | 01:15 | |
adu | ok, that's wierd, but doable | 01:16 | |
because $type.name should be the name of the typedef, not the variable | |||
raydiak | right | ||
that whole class was just for the cast's .type property | 01:17 | ||
adu | raydiak: but the information becomes available as the name of the variable first, how do I return that from the same action method that the variables "right" type comes from? | ||
actually, there should be a Var class | 01:18 | ||
raydiak | adu: build up the types as you parse, and modify them as you go maybe? e.g. keep an internal %!types as each parse progresses | 01:23 | |
adu | ok, so how do I parse this: "const char *(*stringer)[2](const char *)[256];" | 01:24 | |
raydiak | hard to say, the C part of my brain doesn't even know how to parse that :) | 01:25 | |
adu | according to cdecl.org, it means "declare stringer as pointer to array 2 of function (pointer to const char) returning array 256 of pointer to const char" | ||
01:26
dayangkun left
|
|||
raydiak | oh that's a neat tool, especially for people like me who are just faking it | 01:27 | |
adu | lol | ||
yeah, I must admit I've used it | |||
raydiak | hm lemme see if I can break that down into a tree | ||
adu | but almost all C code uses either function or arrays, but the C spec allows both in the same declaration | 01:28 | |
raydiak | tricky | 01:29 | |
adu | yeah | ||
hence my deliberations... | |||
01:40
IllvilJa joined
|
|||
adu | what's the difference between str and Str? | 01:43 | |
raydiak | still looking, but vague thoughts: var, pointer, array, and function here are nouns...I am thinking of types more like adjectives | ||
str is native, probably like a char * or something underneath | 01:44 | ||
adu | adjectives? I know the English meaning, but not the Perl6 meaning of that | ||
raydiak | just using it in the english sense | ||
that's why I say "vague thoughts", cuz they aren't tied back to the concreteness of your example yet | 01:45 | ||
adu | well, in my mind there are 6 kinds of types in C: direct, array, function, pointer, struct/union, enum | 01:46 | |
direct types are completely specified by a list of DeclarationSpecifiers | |||
things like "unsigned int" | 01:47 | ||
01:49
tinyblak joined
|
|||
adu | raydiak: well, to translate cdecl.org's response back into Perl6, it would be: PointerType[ArrayType[2, FunctionType[PointerType[Direct[Const, Char]] --> Array[256, PointerType[Direct[Const, Char]]]]]] | 01:50 | |
raydiak | looks like pretty much what I got out of it...I'm just shuffling it around different ways as a tree, coming up with several half-answers I don't like | 01:53 | |
01:55
cognominal joined
|
|||
adu | comming up with any 90% answers? | 01:59 | |
02:00
yeahnoob joined
|
|||
raydiak | hm, ya know, most of those 6 types you mentioned are just arrangements of direct types | 02:00 | |
02:00
yeahnoob left
|
|||
adu | arrangements? | 02:00 | |
raydiak | with some extra properties, like names or array lengths | ||
02:00
yeahnoob joined
02:01
yeahnoob left
|
|||
raydiak | eh, I just mean structs and enums and stuff feel more like "compound" entities, built out of direct types | 02:01 | |
adu | yes | ||
02:01
yeahnoob joined,
yeahnoob left
02:02
yeahnoob joined,
yeahnoob left
02:03
yeahnoob joined
|
|||
adu | I could see struct and enum being like, a CAST::TypeOp or something | 02:03 | |
raydiak | so I would start by defining a class for direct types, then the other ones making use of the direct one, then I would stop and look at what I made and see if it gave me ideas or at least better perspective, tbh :) | 02:05 | |
adu | ok | ||
what should I call it? OpType or TypeOp? | |||
or GType? | |||
or Generic? | 02:06 | ||
or GenType? | 02:08 | ||
raydiak | I don't think we have any real solid Perl conventions to follow here other than CamelCase, so your C knowledge probably answers this question better than I | ||
raydiak runs outside for a few minutes to hide from scary naming questions :) | |||
adu | well, I think QAST is a good inspiration for the goal I should strive for | 02:09 | |
most other AST frameworks would have one class for every kind of expression, but QAST only has one class: QAST::Op | |||
02:14
Ben_Goldberg joined
02:15
BenGoldberg left,
Ben_Goldberg is now known as BenGoldberg
02:17
BenGoldberg left
|
|||
raydiak | back | 02:19 | |
adu | also, there are 2 different kinds of blocks | 02:20 | |
raydiak | hm | 02:21 | |
adu | one is the standard C block {a; b; c;}, (which evaluate to void), and then the other is GNU expression blocks: ({a; b; c;}), (which evaluate to c) | ||
should both of these be represented with CAST::Stmts? or should they be different classes? | |||
also, what's the difference between QAST::Stmts and QAST::Block? | 02:23 | ||
02:23
rmgk_ joined,
rmgk is now known as Guest97653,
Guest97653 left,
rmgk_ is now known as rmgk
|
|||
raydiak | I don't really have any experience with QAST, but I would guess that Block has its own lexpad or something like that | 02:24 | |
or, well, lexical scope...I don't really know what 'lexpad' means specifically, just something I've seen referred to here | |||
02:25
tinyblak left
|
|||
raydiak | honestly QAST (or AST in any language) isn't smoething I have firsthand experince with | 02:25 | |
adu | neither do I | ||
what does "pad" stand for? | |||
raydiak | well, so answering these things has to do with how you intend to use them...what will make it easier to use them that way? | 02:26 | |
adu | I'm guessing "lex" stands for lexical | ||
raydiak | yeah I assumed it was an analogy to a notepad or something | ||
adu | well, Scheme has something called "Environments" | 02:27 | |
which are a linked list of hash tables | |||
when you enter into a lexical scope, you push a new hash-table onto the list, and when you leave a lexical scope, you pop a hash-table off the list | 02:28 | ||
I would imagine it's something like that | |||
raydiak | it might help make some of the QAST choices easier to understand if you read about some of the behaviors of the various code-like objects as seen from p6-land | 02:29 | |
the stuff in the type graph here: doc.perl6.org/type/Callable.html | |||
adu | WhateverCode? | ||
raydiak | comes from using a * | 02:30 | |
m: say (* + 1).WHAT | |||
camelia | rakudo-moar c5dcdf: OUTPUT«(WhateverCode)» | ||
adu | interesting | ||
raydiak | lets you skip {} for simple cases, among other things | 02:31 | |
m: (^10).grep(* %% 2).say | |||
camelia | rakudo-moar c5dcdf: OUTPUT«0 2 4 6 8» | ||
raydiak | m: (^10).grep({ $_ %% 2 }).say # as opposed to | ||
camelia | rakudo-moar c5dcdf: OUTPUT«0 2 4 6 8» | ||
adu | my brain just exploded | 02:32 | |
raydiak | m: (* + *)(1,2).say # also can be used for multiple args | ||
camelia | rakudo-moar c5dcdf: OUTPUT«3» | ||
raydiak | and yes, '* * *' is valid code :) | 02:33 | |
adu | does that work with map too? | ||
raydiak | yeah anything that takes a block | ||
adu | m: say (map (* + 1), @(2, 3, 4)).perl | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(3, 4, 5).list» | ||
raydiak | an expression with a * basically becomes a closure automagically | ||
adu | well, I think I have enough inspiration to totally rewrite CAST | 02:38 | |
02:39
chenryn joined
|
|||
raydiak | nice...do drop by during the busier times if you want some way, WAY more educated opinions :) a large portion of the most knowledgable and active 6ers are in europe | 02:40 | |
adu | that means the "busy times" are 4am | 02:42 | |
02:43
Mouq joined
|
|||
raydiak | seems populated from about midnight to noon | 02:44 | |
my time, PST, that is | |||
adu | I'm in EST, so maybe 4am to 4pm for me | 02:50 | |
02:52
ggoebel111111118 left
02:54
old joined
02:55
old left
02:56
old_camels_frien joined
|
|||
old_camels_frien | what is p6 analog for perl -ne 'print if 5..10' file.txt ? | 02:58 | |
colomon | m: lines()[5..10] | 03:01 | |
camelia | ( no output ) | ||
colomon | m: say lines()[5..10] | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Ag taisteal dom amach trí chnoic Ghleann Domhain ’s an Mucais ar mo chúl Ní miste dom ’ rá le brón ’s le crá gur frasach a shíl mise siúl; Go Meiriceá siar a bhí mo thriall i bhfad thar an fharraige mhór; D’fhág mé slán ar feadh seal …» | ||
Mouq | old_camels_frien: github.com/sillymoose/Perl6-One-Li...e-printing | ||
03:03
tinyblak joined
03:04
pdcawley left
|
|||
colomon | Mouq: nice, but slightly off | 03:05 | |
perl6 -e '.say for lines[4..9]' example.txt | |||
would do the trick | 03:06 | ||
well, I mean the perl6 -ne '.print if (1..3).any == ++$' example.txt there would work, but seems unnecessarily baroque | 03:07 | ||
Mouq++ # great resource there, at any rate | |||
adu | oh, I wrote a Haskell tool to do that, hackage.haskell.org/package/only | ||
I would imagine it would also be a one-liner if I wrote it in Perl6 | 03:08 | ||
raydiak misses p5's -i...in fact perl -pi -e is about the only thing I use it for any more | 03:14 | ||
ingy is hungry for some -pi -e | 03:16 | ||
adu | raydiak: I don't miss anything about Perl5, since I've never used it | 03:20 | |
raydiak | adu: I started with BASIC, started learning C, then picked up perl and pretty much stopped looking at other languages for the next decade | 03:24 | |
ingy | perl5.18.1 -MIO::All -E 'say for @{io shift}[0..9]' example.txt | ||
adu | my programming language learning was different, although, I also started with basic | 03:25 | |
ingy | I started with basic, then fortran on punchcards | 03:26 | |
raydiak | adu: but "perl -pi -e s/foo/bar/ *.txt" used to be (still is?) a well-known one-liner among unix geeks of all sorts for changing the contents of a file | ||
the mnemonic was "perl pie" | |||
have to admit I've been cheating on perl a bit in the last few years :) | 03:27 | ||
adu | in the order that I learned them, I think it was GWBASIC, QBASIC, VisualBasic (at which point I switched from Win to Mac), FutureBasic, C, (at which point I switched to Linux), then Scheme, Bash, Python, Haskell, Forth, and Prolog | ||
ingy | perl -pi -e 's/\r//' file # dos2unix | ||
adu | raydiak: I use sed -i -e for that | ||
ingy | sed6 | 03:28 | |
adu | is there a sed6? | ||
raydiak | kinda a shame I never learned sed/awk, just for history's sake, but cool that I never felt a need I guess | 03:29 | |
adu | the ONLY thing I ever do in awk is '{print $2}' | ||
ingy | I use sed in my bash programming | ||
which is substantial | 03:30 | ||
raydiak | ugh the syntax in bash scripting is just terrible to my brain | ||
ingy | ported test::more to bash and wrote json-bash and have some serious git commands in all modern bash | ||
adu | ingy: wow, json-bash, that is serious | 03:31 | |
raydiak | wow, that's impressive | ||
heh | |||
ingy | I did it for this: github.com/ingydotnet/git-hub | 03:32 | |
adu | I think the most serious thing I ever wrote in bash was a getopt wrapper for something that only accepted files as inputs | ||
but I've written about 5000 oneliners in bash | |||
ingy | git hub repos perl6 -r | git hub clone - # clone all perl6 repos in one command :) | ||
adu | mostly of the form: "java -jar $SOMETHING" | 03:33 | |
ingy | the main code is here. it's not perl6 but not as terrible as you might think | ||
adu | and it really pisses me off that no bash programmers seem to understand "$@" | 03:34 | |
03:34
noganex_ joined
|
|||
ingy | the repo commands are in the repos plugin and they are minimal and poweful code: github.com/ingydotnet/git-hub/blob...t-hub-repo | 03:34 | |
but once you do serious bash programming you become really awesome in the shell | 03:36 | ||
raydiak | ingy++ # some of the cleanest shell scripting I've ever seen | ||
I mean...I can read that...it can't be a shell script :) | |||
ingy | it has to be the most productive things i've done in 5 years. (learning the shell inside out) | ||
03:36
noganex left
|
|||
ingy | heh, I just wrote it all as if I were writing perl or ruby, and I googled every line :D | 03:37 | |
like: "perl array append in bash" | |||
like: "perl array append in bash" | 03:38 | ||
raydiak | hah cool | ||
ingy | sorry | ||
raydiak | well I'd say *not* starting with existing shell scripts and learning from those, has served you quite well | 03:39 | |
ingy | I'm working on this one tonight: github.com/ingydotnet/git-subrepo | ||
If I can get this git command working perfectly, I think it will be a game changer | |||
it's been close and usable for about a year, but get's ugly with complicated merges | 03:40 | ||
but I think I can fix it | |||
adu | raydiak: My recent language learning has involved Go, Rust, and Perl6 | ||
ingy | adu: have you seen github.com/ingydotnet/pig-latin-acme yet? | 03:41 | |
github.com/ingydotnet/pig-latin-ac...ted-so-far | 03:42 | ||
needs rust | |||
:) | |||
raydiak | adu: the last new thing I learned was Lua, which was good for me, insofar as it's the opposite of Perl in terms of footprint, performance, and syntactic philosophy | ||
03:43
raiph left,
kurahaupo left
|
|||
ingy | needs lua too :) | 03:43 | |
raydiak | though I have to say sometihng a little less conventional is next...maybe haskell as I don't have a functional language under my belt yet, and lisp calls to me for reasons unknown | 03:44 | |
adu | raydiak: Lua is pretty amazing, when I got my first Android phone, I had Lua compiled and running on it within a day! | ||
ingy | raydiak: have you learned or implemented your own forth yet? | ||
adu | raydiak: I was never able to get Ruby of Python compiled on Android, too many dependancies... | ||
s/of/or/ | |||
raydiak | methinks the lisp interest is mainly because of how so many older programmers talk about it like the long-lost tool of the gods or something :) | 03:45 | |
cognominal | for people interested in languages, elm is a must see. Haskell like using a reactive model, with a time travelling debugger, targeting js elm-lang.org/ debug.elm-lang.org/ | ||
raydiak | ingy: I haven't | ||
ingy | lisp is just a mindset | ||
cognominal | in many ways a polar opposite to Perl 6 | ||
ingy | a way to think of programming | ||
raydiak | adu: hah cool...I saw they have a ps4 port even | 03:46 | |
adu | raydiak: S-expressions are amazing, Common Lisp has every function ever invented, you just have to spend 20 years figuring out what it's called, and Scheme lets you write try/catch/return/break/continue/yield using only "continuations" which no one understands | ||
ingy | TimToady told me that Perl owes tons to Lisp | ||
03:46
kurahaupo joined
|
|||
cognominal | I always thought that Perl was lisp that eventually cared about syntax. | 03:47 | |
raydiak | yeah I guess part of it is I keep having these circles where I think "X is just a funny-looking Y, and Y is just a special case of Z", and people tell me I'm heading towards lisp | ||
03:47
Ashu_ joined
|
|||
cognominal | so I am expecting a lot from masak macros. | 03:47 | |
adu | raydiak: my point is that "Lisp" isn't all it's cracked up to be, S-expressions are what everyone is really talking about | ||
ingy | TimToady gave a speech early on in Perl days where he said that Lisp has the visual appeal of oatmeal with fingernail clippings | 03:48 | |
03:48
Ashu_ left
|
|||
cognominal | bon appétit | 03:48 | |
ingy | and John McCarthy was in the audience, but TimToady didn't know it | ||
cognominal | G a # G grand A petit => J'ai grand appétit :) | 03:49 | |
ingy | John was displeased | ||
adu | This is a relatively recent addition to Lisp syntax: srfi.schemers.org/srfi-110/srfi-110.html | ||
ingy | indent,FTW! | ||
adu | it looks like it dates back to 2013, but it's one of the first attempts (aside from age-old M-expressions) that are generic and beautiful at the same time | ||
ingy | Sweet-expressions == plain oatmeal | 03:50 | |
raydiak | adu: ah, thanks for the perspective...helps me think about where to start if I sit down to learn it | ||
ingy | not Perl's David Wheeler | 03:51 | |
adu | I'd like to see if it's possible to come up with an S-expression syntax for Perl6 | ||
raydiak | that's something else about Lua...you can literally learn most of it in like a day...the tradeoff being that it usually requires more hand-holding (and lines of code) than perl asks of you | 03:53 | |
adu | raydiak: but Scheme has the advantage that it's minimal, you can literally write anything in Scheme | 03:54 | |
raydiak: and JavaScript was actually written as a Scheme, with a different syntax patched on as an afterthought | |||
raydiak | why does javascript having "patched on as an afterthought" in its origin story not surprise me? :) | 03:55 | |
03:56
sirdancealot joined
|
|||
adu | www.crockford.com/javascript/little.html | 03:56 | |
raydiak | reading stuff like that is neat | 03:58 | |
adu | "As I’ve often said, and as others at Netscape can confirm, I was recruited to Netscape with the promise of “doing Scheme” in the browser." -- Brendan Eich | 04:00 | |
brendaneich.com/2008/04/popularity/ | |||
raydiak | lemme get this straight...we coulda had lisp in the browser, but ended up with javascript instead? maybe that's where things went wrong... | 04:02 | |
raydiak looks at history as an explanation for why things are so screwed up in the present | |||
adu | it would have gone wrong at some point anyways, simply because of the law of large numbers | ||
raydiak | there is certainly more than no truth to that | 04:03 | |
xiaomiao | raydiak: we could have had python, but then someone thought java was cooler | 04:05 | |
adu | raydiak: paulgraham.com/95.html | 04:06 | |
04:07
IllvilJa left
|
|||
raydiak | having far less experience with java than javascript, I hate it far less :) | 04:07 | |
adu | at least JS has closures | ||
Java doesn't have closures or functions or methods, it only has classes | 04:08 | ||
raydiak | granted I didn't really know what I was doing, but I coulda swore I defined some stuff that looked a lot like methods in java before | 04:09 | |
04:12
IllvilJa joined
|
|||
adu | raydiak: what I mean is that methods are not first-class objects, you can't assign them to a variable, and you can't pass them as arguments | 04:17 | |
\o | o/ | 04:18 | |
Guest40626 | ☺ | 04:19 | |
☺/ | |||
04:21
rurban left
04:23
mickcy_ca joined
04:35
kaleem joined
|
|||
cognominal | nice link, adu | 04:39 | |
04:44
ggoebel111111118 joined
04:50
adu left,
Rounin left
05:01
adu joined
05:03
mickcy_ca left,
jack_rabbit left
05:07
konsolebox joined
05:08
kst joined,
kaleem left
05:11
chenryn left
05:15
IllvilJa left
05:23
chenryn joined
05:31
yeahnoob left,
sqirrel_ joined
05:33
tinyblak_ joined
05:35
tinyblak left
05:38
konsolebox left,
IllvilJa joined,
tinyblak_ left
05:41
Mouq left
05:42
tinyblak joined,
tinyblak left
05:43
tinyblak joined
05:47
mr-foobar left
05:48
yeahnoob joined
05:53
gfldex joined
05:59
konsolebox joined
06:00
konsolebox left
06:01
tinyblak_ joined,
konsolebox joined
06:02
tinyblak left,
konsolebox left,
adu left
06:04
sqirrel_ left
06:10
chenryn left
06:11
Rounin joined
06:22
cognominal left
06:23
[Sno] left,
Mso150_y left,
Mso150_y joined
06:25
xfix joined,
yeahnoob left
06:29
old_camels_frien left
06:35
spider-mario left
06:38
CRM114 joined
06:45
Rounin left
06:47
kaleem joined
06:57
cognominal joined,
chenryn joined
07:09
Rounin joined
07:13
chenryn left
07:14
cognominal left,
cognominal joined
07:18
gfldex left
07:24
ggoebel111111119 joined
07:25
ggoebel111111118 left
07:29
ggoebel111111111 joined
07:31
ggoebel111111119 left
07:33
Sqirrel left
07:43
CRM114 left,
darutoko joined
07:45
bjz joined
07:49
mattp_ left
07:51
bjz left
07:52
tinyblak_ left,
tinyblak joined
07:53
mattp_ joined,
FROGGS joined
07:55
telex left,
pecastro left
07:56
telex joined,
zakharyas joined
07:57
[Sno] joined
07:59
abraxxa joined
08:03
tinyblak_ joined,
abraxxa left
08:05
bjz joined
08:06
tinyblak left
08:10
xfix left
|
|||
TimToady | rosettacode.org/wiki/Circle_sort#Perl_6 | 08:21 | |
08:21
kst` joined
08:22
kst left
08:30
rindolf joined
08:37
sirdancealot left
08:49
ggoebel111111111 left
08:50
bjz left
08:51
ggoebel111111111 joined
08:52
brrt joined
08:56
renormalist joined,
sqirrel_ joined
09:01
bjz joined
09:03
ggoebel111111111 left,
ggoebel111111112 joined
|
|||
lizmat | TimToady++ for circling :-) | 09:04 | |
yoleaux | 7 Jan 2015 22:40Z <raydiak> lizmat: the cached precomp bug is #122896, the only difference between october and now being that it segfaults instead of giving the reported error message | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896 | ||
09:05
abraxxa joined
|
|||
dalek | ast: a7bc14d | lizmat++ | S10-packages/precompilation.t: Make sure tests fail for the right reason |
09:08 | |
nwc10 | rosettacode.org/wiki/Rosetta_Code/R...ity#Perl_6 | 09:11 | |
and today, Perl 6 is 6th | |||
5 behind Ruby, 9 behind J | |||
El_Che | 77 rue du Ruisseau | ||
75018 PARIS | |||
nwc10 | Tcl is still top. So obviously Tcl is best. | ||
El_Che | crap | ||
sorry | |||
09:11
virtualsue joined
|
|||
nwc10 | apparently that's the "ibis Styles Paris" | 09:12 | |
El_Che | hehee :) | 09:13 | |
09:14
yeahnoob joined
09:16
fhelmberger joined
09:20
molaf_ joined
09:21
Mso150_y left,
rurban joined
09:24
molaf__ left
|
|||
dalek | kudo/newio: 0154f13 | lizmat++ | src/core/CompUnit.pm: Allow scalar values to be specified with :INC |
09:28 | |
kudo/newio: 4c6cfab | TimToady++ | src/Perl6/Actions.nqp: make << a b c 'x' >>[0] return 'a' not 'a b c' Fix wrong merge |
|||
09:28
dalek left
|
|||
lizmat | sorry dalek | 09:28 | |
09:29
dalek joined,
ChanServ sets mode: +v dalek
09:33
tinyblak joined,
tinyblak_ left
09:37
kjs_ joined
09:39
jack_rabbit joined,
donaldh joined
09:46
dakkar joined
09:49
jluis joined
09:50
bjz left,
bjz joined
09:51
sqirrel_ left
09:52
ruoso_ left
09:53
ruoso joined
09:56
timo joined,
timo is now known as Guest10870
09:57
Guest10870 is now known as timotimo
09:58
ruoso left,
ruoso joined
10:00
donaldh left,
donaldh joined
10:01
pecastro joined
10:05
bjz left
|
|||
masak | good antenoon, #perl6 | 10:10 | |
timotimo | i hope you're having a pleasant day, masak :) | 10:11 | |
timotimo is off | |||
masak starts making a pun about "a ♟ day", but realizes halfway that the piece is called "pawn", not "peasant" | 10:13 | ||
10:18
kjs__ joined
10:24
bjz joined
10:25
tinyblak left
10:26
tinyblak joined
10:28
yeahnoob left
|
|||
cognominal | Masak, tu est ♗? ♗ in French is "fou and means "mad person", not bishop | 10:28 | |
10:28
Psyche^ joined
|
|||
cognominal | I don't know why, maybe it is "fou du roi" : jester. | 10:29 | |
en.wikipedia.org/wiki/Bishop_(chess) A nice explanation en.wikipedia.org/wiki/Bishop_(chess) | 10:32 | ||
10:32
Patterner left
|
|||
masak | cognominal++ # etymology of fools | 10:33 | |
ok, on with the hard questions. | 10:34 | ||
how do we focus on and achieve stability? | |||
let's say the abstract measure of stability is identified as having the biggest impact on the success of Perl 6 in 2015. | |||
what can we do to increase this measure? | |||
is there any literature on this? do we have any stability experts among us? do we know where they graze? | 10:35 | ||
lizmat | masak: get jnthn more Perl 6 time :-) | 10:36 | |
10:36
bjz left
|
|||
masak | I'm of two minds about that answer. | 10:37 | |
on the one hand, you're absolutely right. | |||
lizmat | it did have a :-) | ||
masak | yeah. | ||
lizmat | it's not the only thing | ||
I know | |||
masak | on the other hand, burning out jnthn is a real risk. putting everything on him is one way to achieve that. | ||
I'd rather we somehow empower more people to reach jnthnhood :) | 10:38 | ||
brrt | hmmm | ||
lizmat | that works too | ||
brrt | yeah | ||
lizmat | so maybe jnthn needs to give a MoarVM internals workshop | ||
brrt | we could do that | 10:39 | |
i could help :-) | |||
masak | I was just gonna say. | ||
lizmat | and funding for that, we'll get together | ||
masak | maybe there's a course could be held to make more people able to help more. | ||
lizmat++ | |||
I feel better already :D | |||
lizmat | I proposed this to jnthn many months ago | 10:40 | |
cognominal | to be ♘ed Jonathan, that would be an honour. | ||
lizmat | but he had too much $work | ||
even when I tried to make a MoarVM workshop into $work, there was no room for that :-( | 10:41 | ||
need to be afk again, back in ~ half an hour& | |||
masak | I imagine 2015 will be more amenable to such a workshop. | 10:42 | |
brrt | let us hope so | 10:43 | |
masak | lizmat: actually, my mind didn't first reach for "MoarVM workshop", but for "tracking down and solving hard software problems workshop" | ||
maybe those are two wholly distinct things. or maybe those can be combined somehow. | |||
like, my idea was "you're facing a difficult software problem. normally you'd give up. but now you go, 'WWJD'? (What Would Jnthn Do)" | 10:44 | ||
10:44
dj_goku_ joined
10:45
baest left,
dj_goku left
|
|||
masak | basically en.wikipedia.org/wiki/Modelling_(psychology) -- we take jnthn's methods (design, implementation, and debugging) and distil them into a course. | 10:45 | |
10:45
baest joined
10:53
denis_boyun joined
10:54
bjz joined
|
|||
donaldh | In addition to WWJD, I would also like to learn more about What Has Jnthn Done So Far | 10:59 | |
11:01
tinyblak_ joined
|
|||
donaldh | A blocker for me working on JVM backend performance is the task to remove priorInvocation and I just don't grok it yet. | 11:01 | |
moritz | priori incantatem! | 11:03 | |
masak: 'WWJD'? go for a long walk, and ponder the problem! | 11:04 | ||
11:04
tinyblak left
11:05
bjz left
|
|||
JimmyZ would do more in MoarVM ... | 11:17 | ||
11:17
Ugator joined
11:20
bjz joined
|
|||
masak .oO( WW JimmyZ D ) | 11:21 | ||
FROGGS | WWPmD would also be most inspiring | 11:33 | |
masak | oh, I'd pay to go to that. | ||
11:34
jluis left
11:35
brrt left
11:37
bjz left
11:44
kaleem left,
haroldwu joined
11:45
haroldwu left,
haroldwu joined
|
|||
masak | last night before heading to bed, I ran into some design problems with 007. someone here on channel might be interested and/or have an idea: github.com/masak/007/issues/7 | 11:48 | |
11:49
prime joined
|
|||
vendethiel | masak: that's an issue we have in coffee/xxx as well. we insert IIFEs all over the place to circumvent it | 11:51 | |
masak | :( | ||
sergot | tony-o: I will take a look at this :) | ||
tony-o++ | |||
hi #perl6 o/ | |||
vendethiel | masak: sadly, it breaks down really fast. With generators, with return, with... | ||
11:51
bjz joined
|
|||
masak | sergocie! \o | 11:51 | |
vendethiel: I feel I'm missing a solid approach here. | |||
vendethiel | and sometimes, something that *should* put an expression (that's actually a statement) as a statement doesn't work.(example: return inside comprehensions won't work, even though it could, because we could unwrap it enough in most cases to have the return at the right place) | 11:52 | |
(and return really can't be used as an expression) | 11:53 | ||
so, yeah, you might need to create a new context/lexical scope "in an expression" to carry around what the macro has | 11:54 | ||
masak | I just added a comment to that effect. | ||
it seems a viable way forward -- my only fear is that it makes the AST "non-portable" in some way. | 11:55 | ||
vendethiel resumes reading | |||
masak | but that fear may be unfounded. | ||
sergot | masaku! \o | 11:58 | |
karma c | |||
vendethiel | you don't have anonymous subs in 007? | ||
11:58
xfix joined,
bjz left
|
|||
masak | we don't. | 12:00 | |
for two reasons, kind of. | |||
(a) more work, more special cases. | 12:01 | ||
(b) currently, sub declarations are statements, not expressions. | |||
12:02
jluis joined
|
|||
12:11
cognominal left
|
|||
psch | .tell japhb 02-lock.t passes on jvm when $l is locked before the final condsignalone and unlocked afterwards (as per stackoverflow.com/questions/15769220) | 12:19 | |
yoleaux | psch: I'll pass your message to japhb. | ||
psch | .tell japhb i don't know if that's how we want condvars to work on nqp though or if that should be abstracted away | 12:20 | |
yoleaux | psch: I'll pass your message to japhb. | ||
psch | also hi #perl6 | ||
lizmat | psch o/ | 12:22 | |
psch | lizmat \o | ||
12:28
sqirrel_ joined
12:29
bjz joined,
jack_rabbit left
|
|||
xfix | Subroutines are expressions. | 12:30 | |
Yes, even named. | |||
r: my &a = sub b { say "Subroutine!" }; a; b | |||
camelia | rakudo-{parrot,moar} c5dcdf: OUTPUT«Subroutine!Subroutine!» | ||
xfix | (although this is pointless, so it should be disallowed without `do` in my opinion) | 12:31 | |
std: my &a = sub b { say "Subroutine!" }; a; b | 12:32 | ||
camelia | std f9b7f55: OUTPUT«ok 00:01 142m» | ||
psch | xfix: what makes this pointless? the sub not being anon? | ||
xfix | Well, it's more likely that code like this is a bug. | 12:33 | |
But I guess it makes sense with `my` behaviour. | |||
while my $a = b() { } is completely fine. | |||
masak | xfix: with all due respect, you don't seem to know what you are saying right now. | 12:34 | |
xfix | Now that I think about it (must have been using too much Python) | ||
12:34
jluis left
|
|||
xfix | masak, yeah, I probably don't. | 12:34 | |
I agree. | |||
masak | xfix++ # taking criticism well :) | ||
xfix | I just realized the mistake while I was talking about it. | 12:35 | |
12:35
bjz left
|
|||
masak | xfix: anyway, in 007 subroutine declarations are statements currently, not expressions. | 12:35 | |
xfix | In Perl 5, my $a = sub b {} is disallowed, but I can see why code like that is allowed in Perl 6. | 12:36 | |
Anyway, JavaScript has both function statement and expression. | |||
masak | with somewhat differing semantics. | ||
xfix | Even if those semantics are different, I somewhat like the behaviour of (function b() {}), which declares anonymous function that can refer to itself. | 12:37 | |
masak | yes, definitely. | ||
the meme "all anon functions should be given a name" reached me (and I adopted it) sometime last year. | 12:38 | ||
(in JS) | |||
timotimo | that's mui importante | ||
xfix | I actually do that so too, because debuggers cannot recognize code like `Something.prototype.doSomething = function () {}` properly. | ||
Which is somewhat annoying. | 12:39 | ||
(perhaps something has changed lately) | |||
lizmat | .tell jnthn in #122896 it becomes evident that wrapping the sub in a traitmod on a Routine, segfaults on trying to run that routine in a precomped version | 12:40 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896 | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
lizmat | .tell jnthn this effectively bars things like "is cached" in the ecosystem | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
xfix | I also think that JavaScript should allow function () {}() as statement without having to use parentheses, instead of shouting SYNTAX ERROR, WRITE BETTER CODE. | 12:41 | |
12:41
sqirrel_ left
|
|||
xfix | Oh well, for a language designed in a week, JavaScript is not that bad. | 12:41 | |
(although I understand why JavaScript doesn't do that... it would confuse two different meanings of function keyword when named function syntax is involved) | 12:42 | ||
Could be fixed by determining if the function statement is token by itself, or if there are extra stuff, but it introduces another issue caused by function statements not having semicolons, and function expressions having them. | 12:44 | ||
`function a() {}(1)` is valid JavaScript syntax, after all. | 12:45 | ||
Compatibility is hard. Once the language is stable, you cannot really change anything. | |||
But I guess that `let` keyword will fix the situation a bit once web browsers implement it, and there won't be that (function () {})() idiom anymore. | 12:46 | ||
12:46
mst__ left,
mst__ joined
12:47
kaleem joined,
mst__ is now known as mst
|
|||
masak | xfix: you might want to try `(function () { console.log("OH HAI") }())` in your Chrome console. | 12:48 | |
xfix | Which is also somewhat ugly, because now there are two syntaxes to declare variables, `var` and `let`. `var` having function scope, and `let` having block scope. Compatibility is hard. | ||
masak, it prints OH HAI, doesn't it? | |||
(I don't have Chrome installed) | |||
masak | yes. | ||
xfix: it's not that putting `()` directly after a function declaration is disallowed, as such. it's just that it only works for the expression form. | |||
xfix | I know. | 12:49 | |
masak | then why do you expect it to work for the statement form? | ||
that makes no sense. | |||
xfix | Because it's also an expression, but I guess you are right. | ||
masak | no, it is not an expression. | ||
xfix | Well, function () {} is an expression or statement depending on whether it's first token in a statement. | 12:50 | |
masak | for all I care, with hindsight, JavaScript might have been better off wihtout the statement form of function declaration. | ||
xfix: right. and if it's a statement, then it's not an expression. and then you can't add `()` after it. | |||
(because the statement already finished, and statements also can't have an `()` after them like that) | 12:51 | ||
sjn | Huh, seems TimToady's talk at FOSDEM has been moved to the main track.. cool! | ||
oh, and hi, #perl6 :) | |||
xfix | Language design is interesting. | ||
tadzik | oh hai sjn | ||
xfix | Perl 6 has many syntax rules, but there are also simpler languages like Lisp. | ||
lizmat | re TimToady at FOSDEM: capacity of room is 1400 :-) | 12:53 | |
itz | given the average FOSDEM talk has people queueing down the hallway to get it that's probably just as well | 12:55 | |
lizmat | .tell jnthn re #122896 it feels like the original sub is not being serialized | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896 | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
12:56
xfix left
12:58
rindolf left
13:04
bjz joined
13:14
bjz left
13:23
bjz joined
13:42
Rounin left
13:49
pmurias joined
|
|||
pmurias | masak: why such a strong expression/statement seperation in 007 | 13:50 | |
in my experience when generating code the expression/statement seperation is just an annoyance | 13:51 | ||
13:52
skids left,
jack_rabbit joined
13:53
bjz left
13:54
bjz joined
14:03
kaare__ left
14:04
jack_rabbit left
|
|||
lizmat | is there a reason why we're not allowed to .print .say or .spurt to an IO::Socket ? | 14:08 | |
14:08
bjz left
|
|||
tadzik | perhaps to encourage thinking about bytes rather than strings | 14:08 | |
lizmat | and is there a reason why we cannot .slurp-rest from a socket ? | ||
I think they're all hysterical raisens | |||
lizmat is trying to merge the PIO role also into IO::Socket | 14:09 | ||
most of the internals already use the same nqp:: functions (except maybe on Parrot) | |||
so from that point of view, I don't see a reason not to merge | 14:10 | ||
14:16
tinyblak_ left,
tinyblak joined
14:25
bjz joined
|
|||
donaldh | lizmat: when I was implementing some of the socket stuff on the JVM backend, the differences looked hysterical. | 14:25 | |
14:27
jack_rabbit joined
|
|||
lizmat | donaldh: such as? | 14:37 | |
14:38
bjz left
|
|||
lizmat | donaldh: you mean at the nqp level? | 14:38 | |
donaldh | The differences you have mentioned. Lack of .print, .say or .spurt for example. As long as you can set an encoding and a linesep then I think it makes sense for IO::Socket and PIO to converge on the full set of methods | 14:39 | |
14:39
jack_rabbit left
|
|||
donaldh | Does it still make sense to call the implementation IO::Socket? Or should there be a common role, or base class? | 14:40 | |
it's been a while since I looked at it at al. | |||
14:41
xfix joined
|
|||
lizmat | in the newio spec branch, I'm trying to do just that: | 14:41 | |
all things related to paths are in a IO::Pathy role | |||
all things that work on handles, are in a PIO role | |||
see github.com/perl6/specs/blob/newio/S16-io.pod | 14:42 | ||
donaldh | Ah right, so some of the IO::Socket impl would be replaced by the PIO role? | ||
lizmat | just about everything, really | 14:44 | |
14:45
rindolf joined,
spider-mario joined
14:47
bjz joined
|
|||
dalek | ecs/newio: fbdc909 | lizmat++ | S16-io.pod: Tweaks |
14:47 | |
donaldh | lizmat++ | 14:48 | |
pmurias | masak: or is 007 supposed to compile to javascript? that would be the most valid reason for not having do | 14:49 | |
moritz | pmurias: iirc masak++ wanted to make problems obvious that Perl 6 often glosses over; the distinction between statements and expressions is just an instance of the more general problem | 14:50 | |
pmurias: ... which is that you can't stick every AST everywhere | |||
lizmat | pixelscommander.com/en/javascript/n...rformance/ # applies to just about any language I guess | 14:52 | |
14:52
kaleem left
14:57
brrt joined
15:01
tinyblak left
15:03
spider-mario left
|
|||
Ulti | m: say .2.nude.join: '/' | 15:07 | |
camelia | rakudo-moar c5dcdf: OUTPUT«1/5» | ||
Ulti just had fun playing with Rat and didn't realise how much stuff was in there CurtisOvidPoe++ | 15:08 | ||
lizmat | #jesuischarlie& | 15:09 | |
15:09
spider-mario joined
15:11
tinyblak joined
15:13
mr-foobar joined
15:16
kurahaupo left
15:21
bjz left
|
|||
donaldh | r: 'string' ~> 2 | 15:25 | |
camelia | rakudo-moar c5dcdf: OUTPUT«infix:«~>» not yet implemented. Sorry.  in sub infix:<~>> at src/gen/m-CORE.setting:7510 in sub infix:<~>> at src/gen/m-CORE.setting:7510 in block <unit> at /tmp/tmpfile:1» | ||
..rakudo-parrot c5dcdf: OUTPUT«infix:«~>» not yet implemented. Sorry.  in sub infix:<~>> at gen/parrot/CORE.setting:7518 in sub infix:<~>> at gen/parrot/CORE.setting:7518 in block <unit> at /tmp/tmpfile:1» | |||
15:26
abraxxa left
15:28
kurahaupo joined
15:29
skids joined
15:33
bjz joined,
tinyblak left
15:34
tinyblak joined
15:47
bjz left
15:52
bjz joined
|
|||
donaldh | Golfing the cause of NQPMatch serialization on JVM backend gist.github.com/donaldh/91a212b38725642131be | 15:56 | |
arnsholt | donaldh: That's an odd one. From the looks of it looks like it has to be a bug in the colonpair action or its call graph, no? | 15:58 | |
Er, no | 15:59 | ||
The fatarrow action, of course | |||
donaldh | Yes, but not everywhere. | 16:00 | |
16:00
rurban left
|
|||
donaldh | It has to be a toplevel sub or multi sub, not a class method, for example. | 16:00 | |
16:00
treehug88 joined
|
|||
arnsholt | Used in a toplevel sub, you mean? | 16:01 | |
donaldh | The behaviour occurs for 5 uses of X::NYI.new(...).throw in the setting. | 16:02 | |
yes, used in a toplevel sub. | |||
arnsholt | Very odd | 16:03 | |
donaldh | I can 'fix' the core setting by using colonpair syntax instead, for these 5 cases. | 16:04 | |
arnsholt | Yeah, but this is one of those bugs that smell like something that really should be fixed | ||
donaldh | indeed. | ||
arnsholt | I guess it has to be something funny going on with the "$<key>.Str" call in Actions.fatarrow? | 16:05 | |
16:05
bjz left
|
|||
donaldh | Well, it happens in Actions.add_inlining_info_if_possible when it hits a QAST::Want+{QAST::SpecialArg} | 16:07 | |
Actions.add_inlining_info_if_possible tries really hard to clear out any unwanted stuff like the $qast.node but in this situation the NQPMatch is leaking through. | 16:09 | ||
I can't figure out why, for the life of me. | |||
arnsholt | Odd | ||
But only for some cases of Want+SpecialArg, presumably | |||
donaldh | it seems like all of them. | 16:10 | |
PerlJam | Is there something wrong with rakudobrew build-panda or is it just me? It gets to '==> Reinstalling' and just sits there | 16:11 | |
moritz | PerlJam: which backend? | 16:12 | |
PerlJam | moar | ||
arnsholt | donaldh: Oh, if it's all of them I might actually know. I bet you "nqp::istype($node, QAST::Want)" (Actions.nqp:2742) is false, when it has the SpecialArg mixin | 16:13 | |
donaldh | Yeah, 5 cases of fatarrow results in 10 Want+SpecialArg with NQPMatch serialization. Eliminate those 5 fatarrow and then no Want+SpecialArg. | 16:14 | |
arnsholt: nope that's not it. Checked that. | |||
16:14
tinyblak left,
tinyblak_ joined,
rurban joined
|
|||
skids notes PANDA_SUBMIT_TESTREPORTS is only docced in blogs. Maybe a howto tab on the reports site and a README.md on the cpandatesters github. | 16:15 | ||
16:15
denis_boyun left,
bjz joined
|
|||
donaldh | I am checking nqp::istype($replacement, QAST::SpecialArg) inside the QAST::Want check and then dumping the $replacement, to get hints of where to find the offending fatarrow. | 16:16 | |
pyrimidine | PerlJam: I had a very similar problem, same backend. Only happened on my laptop (running Mac OS X, Mavericks) | ||
16:16
jluis joined
|
|||
pyrimidine | PerlJam: Ran it off my imac (also Mavericks) and it worked fine. | 16:17 | |
PerlJam | I'm running ubuntu 14.04 on a desktop fwiw | 16:18 | |
pyrimidine | huh | ||
I managed to trace it to IO::Socket::INET, but that's as far as I got. | 16:19 | ||
16:19
Alina-malina left
|
|||
pyrimidine | If I changed to the old URL (feather) it worked fine, but I think that's hard-coded. | 16:19 | |
16:20
Alina-malina joined
|
|||
brrt | fwiw, i mentally think of sockets as byte streams rather than string streams | 16:24 | |
wait a minute | 16:25 | ||
io is reaaaaally complicated | 16:27 | ||
16:28
zakharyas left
|
|||
brrt | i'll just go back to bitmangling | 16:28 | |
donaldh | :D | 16:29 | |
16:31
salv0 left
16:32
telex left
16:34
telex joined
16:35
H2O1 joined
|
|||
brrt | i don't envy lizmat++ for taking up the task | 16:35 | |
consider that a UDP socket is really a Supply of packets (or a Sink, if we have such a concept?) | 16:36 | ||
and that a TCP socket isn't really a stream but rather a Session | |||
masak | pmurias: what moritz++ said. | 16:38 | |
pmurias: (personally, I hope 007 never compiles to anything. that'd mean people have started taking it seriously in a way it was never meant to.) | 16:39 | ||
pmurias: the distinction between statements and expressions seemed to me at the time to make things easier. (notably, if there's no distinction, then everything can interact with everything in some sense. O(n**2) interactions.) | 16:40 | ||
16:40
jluis left
|
|||
masak | pmurias: it *still* seems easier in that way, even as I am re-evaluating that balance à la github.com/masak/007/issues/7 | 16:40 | |
16:40
jluis joined
|
|||
masak | pmurias: Lisp seems to me to pull off (very well) the trick of making everything an evaluable expression. but Perl 6 isn't and won't be a language where that's true -- therefore, exploring the distinction is a worthwhile goal of 007. | 16:41 | |
tony-o | what is 007 | 16:42 | |
masak | fwiw, I liked the idea of "stuttering" as a mechanism, and I hope it survives the realizations about scoping. | ||
tony-o: masak.github.io/007/ | |||
moritz | my impression is that every statement in Perl 6 can be used as an expression, and the distinction is purely syntactic | 16:43 | |
masak | yes, I think so. | ||
tony-o | interesting | ||
16:44
H2O1 left
|
|||
masak | moritz: but the fact that that is "easier said than done" is evicenced by the fact that RT contains at least half a dozen tickets on the theme "we evaluated this thing, but it contained a next/leave/BEGIN/(other exotic control flow) and caused a Big VM fail" | 16:45 | |
grocery store & | |||
16:46
donaldh left
16:50
Ugator left
16:54
tinyblak joined
16:57
rurban left
16:58
tinyblak_ left,
virtualsue left
17:03
tinyblak left
17:04
tinyblak joined
17:07
zakharyas joined
17:09
bjz left
17:10
bjz joined
17:15
rurban joined
17:16
tinyblak left,
tinyblak joined
17:23
bjz left
17:29
danaj left
17:31
brrt left
17:33
sirdancealot joined,
kjs_ left
|
|||
TimToady | statements are just a monadic relationship of expressions; trying to carry the notion of statements any further into the semantic system is just adding complication, not removing it | 17:35 | |
I don't know what "part of an expression" means in the chart | 17:36 | ||
dalek | p: f05a5d7 | (Geoffrey Broadwell)++ | t/concurrency/02-lock.t: Fix 02-lock.t braino that results in a LTA Java error under nqp-j; thanks psch++ for spotting this. |
||
p: f8ba48f | (Geoffrey Broadwell)++ | t/concurrency/01-thread.t: Reduce chance of interleaved TAP output in 01-thread.t |
|||
17:37
Mouq joined,
vendethiel- joined
|
|||
TimToady | I think both macros and quasioids should be associated with a syntax category, and those categories should be treated more like types than we do currently | 17:37 | |
17:37
kaleem joined
|
|||
TimToady | then your "stuttering" is simply a type conversion | 17:37 | |
and if there's no conversion provided, then an error is the natural outcome | 17:38 | ||
japhb | TimToady: I interpreted "part of an expression" as being in a subexpression of a larger expression, as opposed to being at the highest level of expression inside a statement. (Being the 'foo' in 'my x = foo' instead of the 'bar' in 'my y = 2 * bar') | 17:39 | |
yoleaux | 12:19Z <psch> japhb: 02-lock.t passes on jvm when $l is locked before the final condsignalone and unlocked afterwards (as per stackoverflow.com/questions/15769220) | ||
12:20Z <psch> japhb: i don't know if that's how we want condvars to work on nqp though or if that should be abstracted away | |||
TimToady | on the P6 syntax level, 'do' is just an example of such a category converter; it really does nothing else | ||
japhb: those are all just expressions | |||
japhb | TimToady: not in a language that does not treat assignment as an expression. | 17:40 | |
17:40
vendethiel left
17:41
vendethiel joined
|
|||
TimToady | that sounds more like 'part of a statement' than 'part of an expression' | 17:41 | |
17:42
vendethiel- left
|
|||
japhb | psch: As mentioned in the commit description, thanks for the 02-lock.t catch. My feeling is that not having the lock when you signal the condvar indicates a bug in the user code with high probability, so we shouldn't paper over it. However, the Java error is way LTA, so that should be caught and turned into a proper NQP/Perl 6 error. | 17:42 | |
17:42
danaj joined
17:43
gfldex joined
|
|||
japhb | TimToady: my point was that in 'my x = foo', 'foo' is a complete expression that is part of a statement, whereas in 'my y = 2 * bar', 'bar' is part of an expression that is itself part of a statement. (In, as I said, a language that treats assignment as a statement and not an expression.) | 17:43 | |
At least, that's how I interpreted masak's writing. | |||
TimToady | that still sounds like sloppy thinking to me; both of those are still going to be parsed by something like EXPR, it's just that * will do so recursively somehow | 17:46 | |
both of them *expect* an expressoin at that point | |||
maybe I just need more coffee | |||
17:49
kaleem left
17:53
bjz joined,
mvuets joined
17:55
rurban left
17:56
rurban joined
|
|||
TimToady | Enlish is also a language that makes a syntactic distinction between statements and expressions, and then let's you mush them all back together on the samentic level, as long as the listener can "cast" the return value into an appropriate context | 17:58 | |
examples abound, but my favorite: | |||
"I don't like your I-can-use-anything-as-an-adjective attitude." | |||
japhb | :-) | 17:59 | |
TimToady | *semantic | ||
japhb | .oO( semitic ) |
||
TimToady | how the heck did I get samentic? | ||
japhb | It's the same antics you always get into. | 18:00 | |
TimToady should become more antic-warian... | 18:01 | ||
18:03
dakkar left
18:04
treehug88 left
|
|||
dalek | p: 6dfafac | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Un-LTA condsignalone on an unlocked condvar. According to the Javadoc for ReentrantLock signalling only ever throws IllegalMonitorStateException when the Lock is not held. |
18:04 | |
18:05
jluis left
|
|||
psch | japhb: the discrepancy between mvm and jvm still puzzles me though | 18:05 | |
TimToady | lately I've been thinking of ; as just a syntactic operator that makes lists of expressions; it's the block context that turns those into the equivalent of a C comma operator; [] and () instead turn ; into a lol | ||
japhb | psch++ # Fast fix -- does condsignalall need the same treatment? | ||
psch: Agreed re: discrepency. Maybe libuv just doesn't try to detect this case? | 18:06 | ||
psch | japhb: uh, yes, it does :) | ||
need the fix that is | |||
japhb | nodnod | ||
TimToady: I like that way of thinking. | 18:07 | ||
18:07
tinyblak left
|
|||
dalek | p: 0713ffd | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Un-LTA candsignalall on an unlocked condvar. |
18:07 | |
japhb | psch++ again. :-) | 18:08 | |
TimToady | of course, block syntax is also the scaffolding for lexical scoping, and I can argue that this is perfectly natural, since lists of side effects need things to affect | ||
masak | TimToady: "part of an expression" means `1 + foo()` where `foo` is the macro. | ||
TimToady still thinks it's meaningless | 18:09 | ||
18:09
treehug88 joined
|
|||
TimToady | anywhere the parser expects an expression is functionally the same as any other place, to my mind | 18:10 | |
18:10
Mso150 joined
|
|||
TimToady | the important thing, I think, is to start regarding slot mismatches as type mismatches | 18:11 | |
18:12
pecastro left
|
|||
psch | japhb: logs.nodejs.org/libuv/2013-08-12#17:52:22.912 | 18:12 | |
18:13
FROGGS_ joined
|
|||
psch | so jvm was right in throwing, and libuv is just lenient | 18:13 | |
18:14
treehug88 left
|
|||
psch | s/right/simply more strict/ | 18:15 | |
japhb | nodnod | 18:16 | |
18:17
FROGGS left
|
|||
japhb | The thing is, it makes sense from the outside in a few cases to signal without being locked, but in terms of the low-level implementation, possibly less so. | 18:18 | |
18:21
treehug88 joined
18:24
bjz left
18:25
bjz joined
18:27
tinyblak joined
|
|||
TimToady | grammar rules already encode their slot and expected ast type as part of their name; this is why 'macro' as a keyword is kinda wimpy compared to the 'slang token' proposal | 18:27 | |
just as a well-typed grammar rule is the interface to the outer text, so too we need well-typed quasis to interface to the inner text | |||
and that probably needs to be declarative, since it will influence what is parsed inside the quasi | 18:28 | ||
once you have that, poking a typed quasi into a typed slot is a simple matter of type recognition/conversion | 18:29 | ||
the thing about these typed grammatical slots is that they not only say where the parse will start, but in what state the parse will be stopped | 18:30 | ||
psch | bringing jvm in line with mvm on the condsignal means implementing our own ReentrantLock and Condition... i have no clue if that'd be worth it, i can't judge how common the cases for signalling from the outside are for our async primitives | ||
dalek | kudo-star-daily: 0db39de | coke++ | log/ (10 files): today (automated commit) |
18:31 | |
rl6-roast-data: ca0e711 | coke++ | / (5 files): today (automated commit) |
|||
TimToady | I view the current macro thinking as kind of a groping forward in the struggle against accidental genericity without compromising intentional genericity | 18:32 | |
18:34
tinyblak left
|
|||
TimToady | which maps rather nicely onto type systems that provide a generic/specific continuum | 18:34 | |
masak | I wish I could be a part of this backlog, but I'm preparing a somewhat late dinner. | ||
18:34
tinyblak joined
|
|||
masak | best I can do is read and reply later :) | 18:34 | |
18:36
bjz left
18:38
vendethiel left
|
|||
TimToady | so anyway, I'm thinking we need some classes that reflect infix, prefix, statement, comment, etc. and not just operational how-to-parse info | 18:39 | |
18:42
treehug88 left
18:45
treehug88 joined
18:46
sirdancealot left
18:48
treehug88 left
|
|||
masak | yes. me too. | 18:48 | |
18:48
treehug88 joined
18:50
treehug88 left
18:51
fhelmberger left,
tinyblak left,
tinyblak_ joined,
treehug88 joined,
bjz joined
18:55
brrt joined,
rurban left,
treehug88 left
18:58
treehug88 joined
|
|||
pyrimidine | moritz, PerlJam: panda issue seems related to nqp::readlinefh and appear moarvm-specific. Testing JVM now. | 19:00 | |
Just tried installing Parrot for the first time in a while, and it craps out on icu | |||
FROGGS_ | yes, we complain now if icu is not there | 19:01 | |
pyrimidine | FROGGS_: makes sense. Problem is, OS X 10.9 and up have a system libicu installed which the installer doesn't find (no headers, icu-config). May have to fiddle with a local icu install | 19:04 | |
FROGGS_ | hmmm :/ | 19:05 | |
doing it right for osx is hard these days | |||
pyrimidine | FROGGS_: yep. I also thought about using homebrew, but 'brew install icu4c' indicates possible issues if installing a separate icu. fun :) | 19:06 | |
19:08
rindolf left
19:11
xfix left,
xfix joined
|
|||
japhb | OS X drives me nuts as a developer, because it doesn't even have the excuse of being not-unix. | 19:13 | |
19:14
denis_boyun_ joined
19:15
kaare__ joined
|
|||
japhb | TimToady: Interestingly, that type system macro thinking puts some more meat on my nebulous macro idea in which I used grammar rule names in a type-ish fashion. | 19:15 | |
b2gills | m: say {(^6).roll} ...^ 0 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«2 1 4 3 4 1 2 4» | ||
b2gills | m: say join '', ({ ('A'..'Z','a'..'z',0..9,Mu).roll } ...^ !*.defined); # password generator | 19:19 | |
camelia | rakudo-moar c5dcdf: OUTPUT«fYpGTdo9W7dJvNWas6ALbF9l9nZMH70w4y67SGnfQ0QdXodhRS8pqwjgeEqdtQXopf6DT1M97iCUZK» | ||
bartolin | hi, #perl6! | 19:24 | |
19:25
kjs_ joined
|
|||
japhb | o/ | 19:26 | |
bartolin | it looks that with commit 79e62b4 there came a 'NO-BREAK SPACE' character in a comment to src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java. since then it's sitting there in line 354 and busted my daily jvm builds :/ | ||
before that commit I was able to build jvm with LANG='' | 19:29 | ||
psch | bartolin: whoops. my advent post made me get used to that, sorry | 19:31 | |
i can PR that, but i'd say that's a bit silly for replacing a space | |||
bartolin | psch: I thought the same :-) maybe someone else can fix it | ||
otherwise psch++ for those commit | 19:32 | ||
19:33
brrt left
|
|||
bartolin | hmm, looking a second time that commit is a bit older. my builds started to fail three days ago only. but make dies with "src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java:354: error: unmappable character for encoding ASCII | 19:35 | |
FROGGS_ | hmmm, I dont spot it | ||
psch | bartolin: the commits have only been merged a few days ago | ||
FROGGS_ | 354 is: // Perl 6' .new creating a new CallFrame or something..? | 19:36 | |
bartolin | FROGGS_: yes, between 'Perl' and '6' there is a non breaking whitespace | ||
psch: ok, that explains it | |||
FROGGS_ | ahh, I see it :o) | ||
bartolin sees it very clearly | |||
dalek | kudo/nom: ac9c85e | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java: replace non breakable space with whitespace bartolin++ |
19:38 | |
bartolin | thanks a lot, FROGGS++ | ||
jnthn | evening, #perl6 | 19:43 | |
yoleaux | 12:40Z <lizmat> jnthn: in #122896 it becomes evident that wrapping the sub in a traitmod on a Routine, segfaults on trying to run that routine in a precomped version | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896 | ||
yoleaux | 12:40Z <lizmat> jnthn: this effectively bars things like "is cached" in the ecosystem | ||
12:55Z <lizmat> jnthn: re #122896 it feels like the original sub is not being serialized | |||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896 | ||
bartolin | FROGGS_: on another note: did you see that you got some wrongish test reports at testers.perl6.org from my daily smokes on freebsd? ugexe++ found them and helped me to narrow down the problem. i filed a rakudobug (RT #123563). | 19:45 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123563 | ||
jnthn | lizmat: I'm not immediately sure what's going on, but will but it on my todo list for once I'm back :) | ||
19:46
denis_boyun_ left
|
|||
bartolin | FROGGS_: I stopped to submit reports for now, but I wonder if you want to remove the unreliable reports ... | 19:46 | |
19:47
vendethiel joined
|
|||
jnthn | From the backlog, and on stability: while it is obviously an important goal, and also nice that we've improved performance sufficiently that it's no longer a top priority for so many folks, I don't think we've become *less* stable over the last year at the things we've long been able to do well. | 19:47 | |
Most of the instability is in concurency stuff - and thus in things that we simply didn't even have a year ago. | |||
vendethiel agrees | 19:48 | ||
fwiw, when I show benchmarks numbers now, people still say "slow", but it's "slow like ruby", not "slow like a snail" | |||
19:49
tgt joined
|
|||
jnthn | Most other stuff we have wasn't immediately trustworthy either, it's just that it's had chance to mature, and time spent on it. Concurrency has had a lot less time invested in it than it really needs. Once it gets that attention, things will be better. | 19:49 | |
jnthn is a bit frustrated that various things kept him from having a good amount of time on that in the latter part of 2014, but happy to report that his 2015 is looking rather better. :) | 19:50 | ||
19:51
zakharyas left
|
|||
jnthn | And yes, I agree with the sentiment in the backlog that we could do with finding ways I can do more knowledge-sharing to help spread the load. | 19:51 | |
19:55
raiph joined
19:57
PZt joined,
bcode left
19:58
bcode joined
|
|||
[Coke] fixes the rakudo-star-daily cronjob and kicks it off again. | 20:02 | ||
.ask moritz any luck with parrot hang on R*? | |||
yoleaux | [Coke]: I'll pass your message to moritz. | ||
FROGGS_ | bartolin: I have to find out in what way they are wrong first.... there was something about that in the clogs, right? | 20:04 | |
20:04
tinyblak_ left,
brrt joined
20:06
darutoko left
|
|||
bartolin | FROGGS_: the bug report has a link to a closed panda issues which has some more informations. apart from that there is a something in the irclogs (skid++ brought the problem up, actually): irclog.perlgeek.de/perl6/2015-01-07#i_9898147 | 20:06 | |
FROGGS_: in short, the summary (whether for build or tests was not reliable). e.g. some failing builds and tests where marked 'PASS' | 20:08 | ||
20:09
denis_boyun_ joined
20:10
panchiniak joined
20:12
[Sno] left
|
|||
japhb | jnthn: I meant stability in two senses (this got lost a bit in later discussions): Stability as in "doesn't crash, hang, eat all RAM, gate in Cthulhu, incorrectly execute the code as written, etc." and stability as in "fundamentals of language, such as lists and IO ops, aren't still changing". | 20:13 | |
jnthn: Lack of the latter is annoying, because it means building correct idiom habits becomes a bit of a footgun. | 20:14 | ||
jnthn | Yes, agree. | 20:15 | |
japhb | jnthn: Lack of the former is expected while major implementation bits are changing, but not having that form of stability at any point between major upheavals makes it very difficult to use the compiler in production, because you can't pick a "golden revision" that you lock production compiles to, until the next rock-solid revision comes about. | 20:16 | |
So that's part of how it became more important than performance. | 20:17 | ||
20:17
Mso150 left
|
|||
japhb | (for me) | 20:17 | |
20:18
Mso150 joined
|
|||
japhb | The other part is that the major features that I would use to work around straight-line slowness (all the various concurrency related features) are the ones that are least stable in that former sense, so I can't just go "Yeah, 1 thread runs at 10% the speed I need, but I can run a threadpool of 24 threads and be well into safety margin" | 20:19 | |
Note: None of this is intended to blame anyone for the situation. I'm just explaining why my priorities got inverted -- not because performance got fast enough for my use cases, but because it didn't improve *enough* for me to just rely on single-threaded performance by itself. | 20:21 | ||
20:25
denis_boyun_ left
|
|||
jnthn | Sure; good to understand why you're being pushed to the less stable things, though. | 20:26 | |
20:33
kjs_ left
|
|||
moritz | [Coke]: no progress :( | 20:34 | |
yoleaux | 20:02Z <[Coke]> moritz: any luck with parrot hang on R*? | ||
20:38
kjs_ joined
20:39
bjz left
20:40
bjz joined
20:45
molaf_ left
20:52
bjz left,
bjz_ joined
20:55
tinyblak joined
|
|||
muraiki | if instability means gating in cthulhu, I'm all for unstable | 20:56 | |
tony-o | is there a 'prompt' that hides the input? | ||
21:02
kjs_ left
|
|||
FROGGS_ | tony-o: "Update io_operators.pm" is not ideal as a commit message | 21:03 | |
tony-o | sorry, i got clicky | 21:04 | |
fixed | |||
FROGGS_ | tony-o: is then :hidden param specced? or is something else in that regard specced? | 21:05 | |
tony-o | i couldn't find it anywhere | ||
21:09
brrt left,
Mso150 left
|
|||
colomon was looking at a repo the other day that had no commit message more useful than "Update io_operators.pm" | 21:10 | ||
tony-o | i updated the message but closed it | 21:11 | |
21:14
Mso150 joined
21:15
denis_boyun_ joined
21:18
bjz_ left
|
|||
timotimo | good * #perl6 o/ | 21:19 | |
colomon | \o | ||
psch | o/ timotimo | 21:20 | |
21:30
raiph left
21:36
xfix left
21:42
panchiniak left
21:49
kjs_ joined
21:50
kjs_ left
21:51
raiph joined
21:59
kjs_ joined
22:06
skids left
|
|||
psch sleep & | 22:07 | ||
22:11
[Sno] joined
|
|||
b2gills | tony-o: I assume the point of :hidden was to stop the characters from being printed to the console as you type them | 22:16 | |
... which is not what that commit does | |||
dalek | kudo-star-daily: 19cb037 | coke++ | log/ (10 files): today (automated commit) |
22:18 | |
22:23
Mouq left
22:29
kjs_ left
|
|||
[Coke] is about to go on business travel somewhere where there is no PM. :( | 22:29 | ||
22:47
Mouq joined
22:48
virtualsue joined
22:49
ssutch joined
|
|||
masak | TimToady: backlogging now. | 22:52 | |
TimToady: in the `1 + foo()` example, the main point was that things wouldn't go well (in 007) if `foo()` inserted an `if` statement. | |||
(say) | |||
TimToady: whereas with `foo()` at the top level of the expression statement, you'd get away with it, with some Q-node stuttering. | 22:53 | ||
and in fact, you'd *have* to get away with it, because expressions are the only things that can call macros. so if that didn't work, there'd be no way to insert `if` statements. | |||
TimToady: but now that I read your comments about type mismatches, it sounds like you're in support of some things not being insertable in some slots. | 22:54 | ||
I like the idea about handling that through type matching. will need to think about that a bit further. | |||
22:55
raiph left
22:56
adu joined,
rurban joined
|
|||
masak | TimToady: a very concrete example of how parser state and Q node shape interact is in the expression parser. I've written down 007's world view here: github.com/masak/007/blob/master/operators.md | 23:01 | |
it's kind of like a reduced version of Perl 6's. | |||
ok, midnight. time for sleep. | 23:03 | ||
'night, #perl6 | |||
adu | hi masak | 23:04 | |
gnight | |||
I have a ? | 23:05 | ||
what are the advantages of using EXPR in HLL::Grammar? | 23:06 | ||
23:08
mvuets left
23:09
telex left
23:10
telex joined
|
|||
Mouq | adu: Compared to? | 23:12 | |
adu | Mouq: implementing it yourself? | 23:19 | |
23:23
denis_boyun_ left
|
|||
adu | why is it that $.HOW.HOW and $x.WHAT.WHAT don't work? | 23:26 | |
23:32
cognominal joined
|
|||
Mouq | adu: It may or may not be faster, and is, I assume, pretty robust. cons: pretty much undocumented api, possibly hard to understand | 23:32 | |
m: say 1.HOW.HOW | 23:33 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«No such method 'gist' for invocant of type 'NQPClassHOW' in sub say at src/gen/m-CORE.setting:16653 in block <unit> at /tmp/aC29oAV2U_:1» | ||
Mouq | m: say 1.HOW.HOW.name | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Too few positionals passed; expected 2 arguments but got 1 in any name at gen/moar/stage2/nqpmo.nqp:1201 in block <unit> at /tmp/ZXhseU7Ora:1» | ||
Mouq | m: say 1.HOW.HOW.^name | ||
camelia | rakudo-moar c5dcdf: OUTPUT«NQPClassHOW» | ||
adu | what does ".^" do? | ||
23:34
treehug88 left
|
|||
japhb | adu: You can roughly think of a.^b as syntactic sugar for a.HOW.b(a) | 23:35 | |
adu | ok | ||
so it's kind of like a metaclass method invokation | 23:36 | ||
japhb | And the reason 1.HOW.HOW fails is that you cross the border between Perl 6 and NQP implementation, and a lot of the convenience methods one comes to expect in Perl 6 objects don't exist in NQP land. You can usually get what you want with more effort though, as Mouq++ showed. | ||
23:36
cognominal left
|
|||
japhb | adu: Yeah, basically. | 23:37 | |
*'say 1.HOW.HOW' fails | |||
23:38
cognominal joined
|
|||
adu | I need to understand Rubyish | 23:41 | |
23:43
virtualsue left
23:48
cognominal left
23:49
tgt left
23:56
silug joined
23:58
jack_rabbit joined,
Rounin joined
|