The Return of the Journal : pugs.blogs.com/ | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 Set by stevan on 23 December 2005. |
|||
Tman | so does the SVN system allow changes directly to the trunk or do committers have to branch out and let an admin of some sort merge their changes? | 01:00 | |
avar | directly to the trunk | 01:01 | |
Tman | interesting | ||
avar | although that probably depends on how you set up the repository, but by default... | ||
Tman | well I mean for pugs | ||
how much abusement do you see? | 01:02 | ||
avar | none? | ||
Tman | cool | 01:03 | |
I was just wondering, since I read about the project and its openness | |||
or whatever you want to call it | 01:04 | ||
audreyt | "anarchy" is how I call it, but whatever :) | ||
nothingmuch: pugs.blogs.com/audrey/2005/12/why_d...e_jou.html | |||
# the reason(s) of the journal move | |||
avar | people probably commit bad stuff once in a while, but not on purp | ||
audreyt | yeah, and there's at least 3~4 people constantly watching every diff | 01:05 | |
since commits are announced on the channel here | |||
avar | audreyt: that bot should say which file was modified though.. | ||
like CIA | |||
although it's easy to find out | 01:06 | ||
audreyt | avar: nod... there's a knob to turn on reporting of subdirs | ||
Odin-LAP | audreyt: Anarchist? | 01:07 | |
audreyt | but it's noisy already, and "svk desc HEAD" works happily | ||
Odin-LAP: yeah, publicly so, as listed on my wikipedia page | |||
Odin-LAP | audreyt: Hmmm. | ||
Individualist anarchism. Always struck me as a solid line of reasoning that didn't really dare going all the way. *grin* | 01:09 | ||
Tman | was svnbot6 made specifically for this channel? | 01:10 | |
I want one for my project =) | 01:11 | ||
avar | Tman: on freenode? | ||
Tman | yup | ||
Odin-LAP | It was, wasn't it ... exercise for perl6 IRC module, or somesuch? | ||
avar | Tman: why not just use CIA? | 01:12 | |
Tman | never heard of it :p | ||
avar | /join #commits | ||
Tman | thanks | ||
avar | you can get a bot like that for your channel and repository for free | ||
cia.navi.cx/ | |||
Tman | awesome :D | 01:13 | |
Odin-LAP | audreyt: Anyway. In that case, there's a lingering question. What do you think of the distinction made, by some, between 'property' and 'possession'? | 01:18 | |
audreyt | re | 01:20 | |
Odin-LAP: I don't see a difference, frankly. | 01:21 | ||
otoh, as a non-native english speaker, I may have missed some nuances. | 01:22 | ||
Alias_ | I second that | ||
;) | |||
There's another hundred or so lines of M:I docs now... covers the all_from-related things, requires, build_requires, and no_index | 01:23 | ||
audreyt | Alias_: oooh oooh | ||
Alias_ | But that's it | ||
Odin-LAP | The distinction is arbitrary, really. In general usage, the two don't signify very different ideas. | ||
Alias_ | One or two more chunks of doc and I think I'll be ready to bleat to the world about Task:: | ||
audreyt | Odin-LAP: I'm not familiar with the arbitrary distinction then | ||
Odin-LAP | The author who proposed the distinction made an analogy, though. "The lover is possessor, the husband proprietor." | 01:24 | |
Alias_ | audreyt: Also, XML generation works now for PITA::Report all the way out to the top tag | ||
audreyt | Alias_: wow, you've been productive | ||
Alias_ | audreyt: Just working on the parser side and got sidetracked by bugs in IO-stringy, which I might need to take over :/ | ||
audreyt: No commercial work you see, a week off does wonders. | 01:25 | ||
audreyt | Odin-LAP: I grok the proprietor bit, but not the possessor bit ;) | ||
Alias_ | Did I mention there's a centralised API for sending SMS now too... | ||
SMS::Send :) | |||
audreyt | now if it's "processor", that I understand... | ||
nice :) | 01:26 | ||
Alias_ | Of course, my minion just dropped in to fix a server and brought Aeon Flux and Lord of Ward with him... so I'll be useless for a few hours | ||
War | |||
Odin-LAP | audreyt: Possessor is someone who possesses something. :p | 01:27 | |
Alias_ | also generally implying ownership | ||
audreyt | Odin-LAP: but in the case of love, it's more like "possessed" | 01:28 | |
Odin-LAP: now, if my obssession on pugs makes me the possessor of pugs, that's certainly something I can relate to | |||
Odin-LAP | The distinction is that a possessor is the 'owner' of something by virtue of using it. Proprietor is the 'owner' by virtue of being, for some reason or other, legally entitled to its control. | ||
That was an analogy ... not the exact difference. :p | 01:29 | ||
audreyt | Odin-LAP: oh. then I'd argue "possessor" is a really weak work of it. "shares" or "is part of" or "user" or "developer" works better | ||
s/work/word/ | |||
Alias_ | benevolent dictator | 01:30 | |
Odin-LAP | audreyt: In the context of intellectual property, yes. I didn't invent the words. :/ | ||
audreyt | in any case... I'm all for things that grows more the more people use it. aka commons. :) | 01:31 | |
Odin-LAP | The distinction comes from Pierre-Joseph Proudhon, and the translation from Benjamin Tucker, who both did their important works over a century ago. :( | 01:32 | |
Heh. :) | |||
Alias_ | audreyt: collective | ||
"father of the collective" | 01:33 | ||
audreyt | nod, now I begin to remember my Proudhon. otoh, I don't think the idea of comparing intellectual works to private properties is hip during his era, so the context have changed somewhat | ||
Odin-LAP screams "commies!" | |||
audreyt screams "lptties!" | |||
Alias_ | er... "mother of the collective" | ||
.patch | 01:34 | ||
audreyt | I thought you'd prefer "evil genius over the minions collective" | ||
Alias_ | minions aren't a collective... they may be drones but don't contribute intelligence | ||
Odin-LAP | audreyt: Yeah. "Intellectual property" is a bit of mess-up in this context. It depends on which simile you'll drive in which direction. Do you move "owner" to the arena of authorship, or "author" to the arena of ownership? | ||
Alias_ | In this case, you steer the ship less, so hive mind is more appropriate | 01:35 | |
audreyt | ahh, I see you have been in touch with less advanced minion forms | ||
Alias_ | You prefer anarchy, I prefer things to work first time :) | ||
audreyt | my (unsuspecting) minions are all as intelligent as I am :) | ||
Odin-LAP: I much prefer lwall's use of "author" | 01:36 | ||
Odin-LAP | audreyt: Hm. How does he use it? | 01:37 | |
audreyt | granted there's more than a bit of christianity in his use of authorship, but somehow I think it's a much more fit metaphor | ||
from perl5/README: | |||
Just a personal note: I want you to know that I create nice things like this | |||
because it pleases the Author of my story. If this bothers you, then your | |||
notion of Authorship needs some revision. But you can use perl anyway. :-) | |||
The author. | |||
Odin-LAP | Heh. | 01:38 | |
Odin-LAP has, perhaps unfortunately, come to the conclusion that he cannot believe the christian narrative. | 01:40 | ||
avar | refering to god? | ||
Odin-LAP | But I understand where he's coming from. | ||
audreyt | avar: yup | 01:41 | |
Odin-LAP: I think he had refactored his narrative into something I can empathize with | |||
interviews.slashdot.org/interviews/...3222.shtml | |||
A) God exists, and B) God is good to people who really look for him. | 01:43 | ||
now, if you really look for something, it's highly likely that you'll perceive that something becomes good to you. | 01:44 | ||
so I have no problem with that :) | |||
Odin-LAP | Hmm. | ||
Yes. Maybe. | |||
avar | It doesn't make sense to me that an omniscient being would tell you to be "good", because by definition 1. it already knew what you were going to do 2. what do you is by extension completely under its power since it's omniscient it would have done something differently if it wanted different results, and it knew the results before hand because it's ... omniscient | 01:46 | |
does that make sense?;) | |||
Odin-LAP | Look, my mother is a born-again christian. She's been quite active at church since I can remember. Through much of my childhood, I went to 'sunday school'. It just ... didn't catch. | ||
audreyt | avar: I think omniscience is overrated... especially on the future part | 01:47 | |
avar | I like some religions, like Buddhism, but I think Christianity mainly focuses on setting rules for you and keeping you in check | ||
audreyt | avar: I watch all commits to pugs, and I have _some_ control of what the next commit would be, but I have no idea what other people are going to do :) | ||
avar | like "god loves you", and "fuck with god and you go to hell" ;) | ||
audreyt: well, you're not omniscient;) | 01:48 | ||
audreyt | avar: my point being an author's omniscience of her characters doesn't really mean she's omnipotent on how to move them... there are limits, and there are really bad novelauthors. | ||
Odin-LAP | Omniscience, omnipotence and a purely benovelent nature, to me, don't seem to match the world we live in. | ||
Alias_ | avar: Many religions feature heavily rules to make your life better the rulers couldn't consistently prove, "So trust us and do it anyway" | ||
"Don't kill, don't lust after your neighbour's wife, no pig meat, etc" | 01:49 | ||
audreyt | at one time pig meat may really be harmful to health. | ||
Alias_ | it very much can be | 01:50 | |
avar | audreyt: the premise is that if you're omniscient there's by definition nothing you can't anticipate, and know before hand | ||
since every variable in the world and how it reacted to everything else would be known to you | |||
It's kind of like if I were the best programmer in the world and were to write a program that segfaults, declare that the program should be sent to hell for its sins which were quite obviously my fault;) | 01:51 | ||
Alias_ | IF you operate within the framework of religion, you cannot drawn an accurate conclusion | 01:52 | |
audreyt | avar: but once you've written a program that is computationally as unpredictable as you are -- or even better than you (seed AI) | ||
avar | Or kick it out of the garden of eden because I gave it certain input and it reactedin a certain way;) | ||
*reacted | |||
audreyt | avar: then the omnisicnec of its source code doesn't give you much :) | ||
avar | audreyt: Okey let's presume that, but again the creator would be omniscient and would therefore know what input the AI would get before hand and by extension know how the AI reacted to it and what it would do... | 01:54 | |
That's my main problem with christianity, it sounds too much like a kid with a magnifying glass smiting ants | 01:55 | ||
with the kid being god and the ants being the humans | |||
Alias_ | And read Genesis, it's bizarre | ||
Odin-LAP | Omniscience is, literally, knowing *everything*. You don't have omniscience "regarding" something, or "of" something. There is no other definition or understanding of the term. | ||
The Bible's god has Dissociative Personality Disorder. | 01:56 | ||
audreyt | Odin-LAP: but there is something unknowable, and an omniscience being cannot know those. :) | ||
Odin-LAP | audreyt: Not at all. If there are things which are unknowable, there cannot be an omniscient being. | ||
audreyt | Odin-LAP: oh, just like the typical father figure as featured in in childhood psychology. | ||
our definitions differ then :) | |||
Odin-LAP | omni = all, scient = knowing; if something cannot be known, then by extension nothing can be all-knowing. :p | 01:58 | |
audreyt | if something can kill every being, can it kill pi? | ||
Odin-LAP | Is the irrational number a 'being'? | 01:59 | |
audreyt | and is an omnievitor impossible because of pi? :) | ||
Alias_ | If Pi falls in a wood and nobody is alive to here it, is it still irrational? | ||
audreyt | Odin-LAP: aha, and I mean that there's some objects that does not have the .to_know method defined | ||
i.e. they are not in the Knowable role | |||
avar | If Richard Stallman speaks and nobody hears him, does he make a sound? | ||
audreyt | and so omniscience doesn't apply to those things in my definition, and that's fine to me | 02:00 | |
avar | audreyt: An omniscient being knows *everything*, if there's something it doesn't know it doesn't fall under the definition | 02:01 | |
audreyt | avar: unless he is somehow deaf, somebody must have heard him | ||
Odin-LAP | audreyt: If they cannot be known, they cannot factor into anything else. They cannot influence knowable things, for that would make them knowable. | ||
audreyt | Odin-LAP: as a Wittgenstein admirer, I must respectfully disagree :) | ||
(i.e. things can be shown but not known) | 02:02 | ||
avar | audreyt: If you think an omniscient being can't know some things then by extension doesn't it know nothing at all, since everything can affect everything else? | ||
i.e. if they were to coexist in the same universe | 02:03 | ||
audreyt | avar: how things affect other things in general is, I think, one of things that cannot be known :) | ||
Odin-LAP | audreyt: Hmm. If an unknowable influences a knowable, you will know that the influence occurs. Therefore, even if you do not know exactly what it is, you will know that something is there. Since an omniscient being will have perfect knowledge, disregarding time, it will know of the influence - even before it occurs. | ||
audreyt | Odin-LAP: the "influence" part is one of the unknowables... that makes me a mystic, and I think this line of argument doesn't quite apply anymore :) | 02:04 | |
Odin-LAP | Hrm. I see. | 02:05 | |
audreyt | (I also perceive causal systems as illusory, fwiw.) | ||
<- learned the "scientific" reasoning system and related vocabularies relatively late | 02:06 | ||
Alias_ | <- still hasn't | ||
audreyt | lol | 02:07 | |
Alias++ | |||
Alias_ | I had to bootstrap my own belief system from first principles. Took me till 22 | ||
avar | mm, | ||
that's one of the problems with arguing with religion, it isn't falsifiable;) | |||
Alias_ | ah, but that's only if you accept the premise of it's existance | 02:08 | |
When analysed as a non-biological life form, it displays elegant similarity to other forms of life | |||
audreyt | and life forms in general doesn't do the Falsifiable role. | 02:09 | |
Alias_ | It's not self-evident, it doesn't appear fully formed. It evolves... | ||
Odin-LAP | Meh. The *problem* with arguing with religion is that argument is based on rationality; religion isn't. | ||
Of course, you may have an issue with rationality, I don't mind that. | |||
audreyt | Odin-LAP: I see you have a pass-by-value argument style :) | ||
Odin-LAP | But it certainly makes sustained arguments easier. ;) | ||
avar | yeah | 02:10 | |
Odin-LAP | audreyt: Hm? | ||
audreyt | in pass-by-reference, where words are more like chess pieces, rationality is optional | ||
avar | "x is true just because" as opposed to "x is true because..." | ||
Odin-LAP | Hmmmm. Philosophy is very much playing with words. | ||
audreyt | eg. I think the game of Go's goal is to make pretty patterns. | ||
Alias_ | There is but one truth, math. It's the one thing that deals with truth provably | 02:11 | |
Odin-LAP | Russell wanted to fix them, though. I'm not sure that was a good idea. | ||
audreyt | Derrida thinks the same for philosophy :) | ||
Alias_ | And Haskell is math in code form, thus is you can prove it in Haskell, it is truth | ||
avar | audreyt: thanks for that /. interview b.t..w | ||
audreyt | avar: np :) | ||
Alias_ | Now implementing relgion in Haskell, THAT's an interesting problem | ||
Odin-LAP | Alias_: Actually, mathematics is *not* verifiably concerned with truth. Mathematics is concerned with mathematics, and has its own definition of truth, which is quite distinct form epistemological truth. The fact that mathematics has a strong empirical relationship with what we call 'reality' is admittedly not entirely coincidental, but it's not an inherent feature... | 02:13 | |
Alias_ | true | 02:14 | |
audreyt | cf. this paper: | 02:15 | |
www.lecb.ncifcrf.gov/%7Etoms/Hammin...nable.html | |||
which I like a lot | |||
"The Unreasonable Effectiveness of Mathematics" | 02:16 | ||
bbiab | 02:19 | ||
Odin-LAP | Religion, defined as the belief in some superior principle which has defined form outside of human mentality, is perhaps the most dangerous concept ever to appear in this world. | ||
Alias_ | Maybe, but then god lives in the unknown, and as the unknown recedes, so does god. | 02:21 | |
Otherwise we see reality disfunctions | |||
Odin-LAP | Alias_: If God really did exist, it would be necessary to abolish him. (Mikhail Bakunin) | ||
Alias_ | And then religion evolves to hande the change in the location of the unknown | ||
Odin-LAP | Though I'd consider myself an agnost. I believe that the question of god's presence or absence is undecideable, and irrelevant to us. | 02:22 | |
Alias_ | indeed | ||
Fundamentalist Agnostic | |||
avar | Odin-LAP: same here;) | 02:23 | |
Odin-LAP | You might say that. I take a similar stance regarding free will, actually. We cannot know if free will is real, or mere illusion. | ||
audreyt | ...or even means anything operationally. | 02:24 | |
Alias_ | But at some point, it becomes unproductive to continue pondering until further evidence appears | ||
Odin-LAP | audreyt: Hmm? | ||
audreyt | Odin-LAP: I've yet to come across with a verifiable operational definition of free will. | 02:25 | |
Odin-LAP | Hmmm. | 02:27 | |
The ability to make decisions non-deterministically, I'd think. But how do you know if something is nondeterministic? | 02:28 | ||
Alias_ | Our form of decision making is just a compensation | 02:29 | |
Odin-LAP | That's the problem. The question is undecidable. | ||
Alias_: Hm? | |||
Alias_ | complex nondeterministic questions require a complexity-derived answer | ||
Hence, our brains | |||
ETOOMANYPHDS | 02:30 | ||
audreyt resists the temptation to invoke wolfram | 02:31 | ||
no disrespect meant, but to me his name does conjure a mental image of a wolf with lots of RAM. | 02:33 | ||
audreyt goes back hacking Rules support. | 02:34 | ||
Debolaz goes back to trying to make pugs work on FreeBSD with pkgsrc. | 02:49 | ||
Which haskell doesn't seems to like. | |||
audreyt | fbsd does pkgsrc now? | 02:50 | |
I thought it's a nbsd thing. | |||
Debolaz | audreyt: pkgsrc works on many platforms. But for some reason I've not been able to figure out, it doesn't seem to be related to any environment variable or parameter, the test compilations done by Makefile.PL fails when run from pkgsrc, but succeeds when run manually. | 02:57 | |
I've been able to narrow it down to ghc not passing the proper arguments to ld in the former case, but I can't figure out why. | 02:58 | ||
More specifically, -L/usr/pkg/lib/ghc-6.4.1 is passed on ld when not run through pkgsrc, which makes it work, but for some reason, something makes ghc substitute it for something else that doesn't seem tied to any environment variable or parameter when pkgsrc executes Makefile.PL | 03:00 | ||
And right about now, I'm hating haskell. :P | |||
audreyt | heh. | 03:02 | |
which Cabal version does pkgsrc have? | |||
Debolaz | /usr/pkg/lib/ghc-6.4.1/package.conf: | 03:03 | |
Cabal-1.0 | |||
audreyt | hm, ancient cabal shipped as default | 03:04 | |
also, did you run manually as yourself or as root? | |||
also, upgrading Cabal may help. | 03:05 | ||
haskell.org/cabal/download.html | |||
Debolaz | I guess it's worth mentioning that I had to port ghc to pkgsrc myself since the stock version in pkgsrc only works on NetBSD. At least there is an irony to all of this, I read in an interview with Autrijus that parrot was more problematic to compile on FreeBSD.. parrot works flawlessly. :) | ||
I ran this as root. | |||
audreyt | heh, the irony :) | ||
bug reports go here -- hackage.haskell.org/trac/hackage -- also #haskell may help, esp. if SyntaxNinja (the cabal guy) is around. | 03:06 | ||
it worked flawlessly on freebsd... but I guess that's because one of GHC core team hackers hacks fbsd | 03:07 | ||
stevan_: yo | 03:08 | ||
Debolaz | I'll try installing the new cabal first, then I go bother them. :) | ||
audreyt | cool :) | 03:09 | |
Debolaz | It will probably end up being some minor detail I'm overlooking, it get the feeling it usually is. | 03:10 | |
audreyt | ah, the quest for Just Works :) | 03:11 | |
Alias_ | Gawd IO-stringy is a mess :( | 03:18 | |
avar | interviews.slashdot.org/comments.pl...id=4207979 | 03:36 | |
audreyt | avar: that's a very good creation myth on par with FSM :) | 03:43 | |
avar | It's the most internally consistant theory of creation I've read yet;) | 03:47 | |
_tcc | I got banned from #perl lol. | 05:03 | |
Can someone help me with something? | |||
I changed something and I screwed everything up. | |||
Alias_ | why | 05:05 | |
_tcc | Because I am stupid. | ||
svnbot6 | r8494 | Darren_Duncan++ | r1670@Darren-Duncans-Computer: darrenduncan | 2005-12-27 23:14:05 -0800 | 07:17 | |
r8494 | Darren_Duncan++ | /ext/Rosetta-Incubator : begun converting current generic string exceptions to specific LKT ones; added 10 messages to LKT/L/en.pm, upgraded Message class in LKT.pm, added 3 private methods | |||
08:25
jiing_ is now known as jiing
|
|||
clkao | seen audreyt | 10:02 | |
jabbot | clkao: audreyt was seen 6 hours 18 minutes 53 seconds ago | ||
GeJ | wow YAML::Syck 0.03 already in the ports... that's fast | 10:08 | |
Grrrr bows | 10:12 | ||
clkao | Grrrr++ | 10:14 | |
GeJ | Ah, there's the guilty one... | 10:17 | |
Grrrr++ | |||
indeed | |||
gaal | say, remember the PLEAC stuff? where'd the p6 version go? | 11:04 | |
it seems to have been eaten completely :-( | 11:28 | ||
svnbot6 | r8495 | audreyt++ | * Text.Parser.Rule: All PGE nodes represented as Haskell structures. | 11:33 | |
r8495 | audreyt++ | Next step is to found PArrows equivalents... | |||
gaal | ah, just renamed (doh) svn.openfoundry.org/pugs/examples/cookbook/ | 11:34 | |
rafl | Juerd: Boring, isn't it? | 12:09 | |
12:10
rafl_ is now known as rafl
|
|||
rafl | The following code croaks with this error. Why? "*** foo: openFile: resource busy (file is locked)" | 12:14 | |
{ my $fh = open($file, :r) or die; } { my $fh = open($file, :w); } | |||
Shouldn't the file be closed as soon as I leave the scope of the first block? | 12:15 | ||
audreyt | because out of scope timely destruction can no longer be guaranteed. | ||
otoh, it makes sense to declar IO types to be GC'ed away on end of scope. | |||
write a test? | |||
I'll add it to PIL^N runcore. the current runcore have to call an expensive performGC | 12:16 | ||
which we tried, but crashes on OSX a lot | |||
rafl | Why can't that be guaranteed anymore? | 12:17 | |
OK. I'll write a test. t/pugsbug/? | |||
Alias_ | audreyt: aaaaalmost there... | 12:19 | |
r0nny | yo | 12:26 | |
Alias_ | audreyt: ftp://pause.perl.org/incoming/PITA-Report-0.02.tar.gz | ||
audreyt: So now about those minions :) | |||
r0nny | audreyt: howz the object system now ? | ||
audreyt | rafl: because we are not refcounting | 12:28 | |
r0nny: Role support is in, I had not started container types | |||
plan to do it tomorrow after $work | |||
after container types (which should be straightforward) is ArgList and SigList | 12:29 | ||
and then we can hook it to parser | |||
r0nny | hmm | ||
so in about a week everything should be fine, to continue ? | |||
audreyt | that's the plan | ||
but I'm sidetracked to this PGE clone thing | |||
but I'm finishing it as we speak | 12:30 | ||
shouldn't take too long | |||
r0nny | hf :) | ||
and if it works again, im going to have fun :) | |||
audreyt | :D | 12:31 | |
svnbot6 | r8496 | rafl++ | r24288@ata: rafl | 2005-12-28 13:29:30 +0100 | 12:40 | |
r8496 | rafl++ | * Added a test for closing open files if the filehandle goes out of scope. | |||
gaal | audreyt: yo. didn't quite grok FFI and writing c in Haskell yet but am at $work soooo.. manana :) | 12:55 | |
Juerd | rafl: Yea | 12:56 | |
gaal | also: evalling yaml could use SyckNodes for intermediate structures and avoid coupling with pugs altogether. The other direction won't work, of course, since emitYaml needs to be Val -> IO String | ||
and each node in the Val is another Val | 12:57 | ||
audreyt | gaal: yup. | 13:01 | |
although | |||
you can first do a | |||
Val -> Eval SyckNode | |||
and go from there | |||
rafl | Juerd: The syntax made me kind of sick. | 13:02 | |
gaal | audreyt: and place that where? in Pugs.Prim.Yaml or in Data.Syck? | ||
audreyt | P.P.Y | 13:03 | |
Juerd | rafl: I didn't have many problems with the syntax, to be honest. I just hate #() and alike syntaxes. | 13:04 | |
gaal | Do you have an example for a project that does more FFI work, btw? FastPackedString does, but the thing I was looking for was allocating memory inside a haskell function (to do keep the output buffer around via a "bonus" struct) | ||
Juerd | rafl: What made me sick is the waaaay to high level of programming, for the web. | ||
audreyt | gaal: you probably want "alloca" or even "malloc/free" | 13:05 | |
Juerd | Ignoring HTTP is simply not an option, if you want to ever be able to debug problems that are caused by bad clients. | ||
audreyt | or even better, write some inline C | ||
and the just import it in | |||
gaal | also: I will start with a haskell String, but it probably makes sense to use FPS for accummulating emitted yaml. The only thing is, does it make sense for one Data. to depend on another? | 13:06 | |
eeep, is alloca the alloca I think it is? I refuse to use that :-) | |||
audreyt | it's not that bad | ||
it's scoped | |||
freed on the next action | |||
alloca :: Storable a => (Ptr a -> IO b) -> IO b | |||
the Ptr a never escapes | |||
gaal | I refuse to use it in "real" c too | 13:07 | |
audreyt | what's wrong with it? | ||
gaal | it has the right semantics, but the wrong portability etc. | ||
audreyt | oh. the FFI one should be happily portable and strongly typechecked | 13:08 | |
in any case, inline C is probably best bet. | |||
just like XS. | |||
gaal nods | 13:09 | ||
Juerd | "Just like XS" doesn't make people feel at ease, I guess ;) | ||
rafl | Juerd: Some of the squeak features were neat, though. | 13:18 | |
Juerd | Certainly. | 13:30 | |
But my opinion is that if you don't want to program for the web, you should just not program for the web. Don't make the web into something that it is not, because that will hurt extraordinarily when you try to support multiple user agents. | 13:31 | ||
svnbot6 | r8497 | audreyt++ | * Text.Parser.OpTable: Allow partial matches as well as whole matches. | 13:43 | |
r8497 | audreyt++ | * Text.Parser.Rule: ~80% of PGE's rule syntax parsed! | |||
audreyt | bbiab... | 13:46 | |
gaal | very minor probably, but what's this doing? | 13:56 | |
# type Name = FastString | |||
(Text.Parser.Rule) | |||
scook0 | gaal: makes Name an alias for the type FastString | 14:21 | |
(was that your question?) | |||
gaal | scook0: it doesn't appear to be used anywhere :)_ | 14:23 | |
scook0 | gaal: it was used in a previous revision (which I had open when I answered) | 14:24 | |
gaal | audreyt: in YAML::Syck, does syck free bonus nodes automatically, or does Dump leak a struct emitter_xtra on every catch? | ||
scook0: okay, I probably missed it (my vgrep is buggy) | 14:25 | ||
s/catch/Dump()/ | |||
type :: Thought -> String -- also buggy | 14:26 | ||
also: what magic do you use that lets you not have inc/Module/Install in your YAML-Syck svn repo? | 14:28 | ||
svn ignore lists? :) | 14:29 | ||
gaal figures out the magic | 14:36 | ||
stevan_ | audreyt: ping | 14:56 | |
hola nada mucho | 14:59 | ||
15:00
stevan_ is now known as stevan
|
|||
nothingmuch | hola estevan | 15:01 | |
15:34
integral_ is now known as integral
|
|||
gaal | audreyt: ping | 15:34 | |
is anyone else getting compilation errors on Data.FastPackedString not finding fpstring.h ? | 16:06 | ||
stevan | gaal: I had that issue once before,.. I dont recall the fix though | 16:07 | |
actually I think it had to do with the makefile, and getting something into my PATH correctly | |||
this was for "make pili" though | |||
gaal | yes, that time it was fixed | ||
i remember | |||
i think i know what's up now though.... let's see. | 16:08 | ||
hmm no :( | |||
urp, "make pili" doesn't respect config.yml's optimize setting. | 16:09 | ||
stevan | that is because PIL is a rough and tumble mini-language,.. it has no respect for piddly little "data serialization languages" like YAML,.. in fact,.. it spits on YAML ! *spit* | 16:10 | |
gaal | probably not a problem though, it's so small | ||
heh. | |||
adding -Isrc/cbits manually fixed this, but I want to know if this is happenning only to me, and where's the right place to stick this in. | 16:15 | ||
how do I avoid circular this dependency? Pugs.Prim.Yaml needs Data.Syck, but my Val -> Eval SyckNode which Data.Syck needs will live in P.P.Y. | 16:19 | ||
s/(circular) (this)/$2 $1/ | 16:20 | ||
svnbot6 | r8498 | audreyt++ | * Text.Parser.Rule: Support for proper rule construct precedence: | 17:02 | |
r8498 | audreyt++ | (Alternation > Conjunction > Concat > Quantified > Term) | |||
r8498 | audreyt++ | * Successful compilation for noncapturing parts of Rules. | |||
r8498 | audreyt++ | Capturing and binding will have to wait until tomorrow... | |||
r8498 | audreyt++ | * Text.Parser.OpTable: Support for Infix AssocList. | |||
tewk | cleq | 17:11 | |
u789ikl | 17:35 | ||
u789ikl | 17:36 | ||
17:50 | |||
gaal | ?eval for 1 .. 4 -> {say} | 19:22 | |
19:22
evalbot_8476 is now known as evalbot_8498
|
|||
evalbot_8498 | OUTPUT[ ] undef | 19:22 | |
gaal | ?eval my $x; for 1 .. 4 -> {$x ~= $_} $x | ||
evalbot_8498 | \"perl6perl6perl6perl6" | ||
Juerd | ?eval "perl6"x4 # ;) | ||
evalbot_8498 | Error: unexpected "4" or "x" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | 19:23 | |
Juerd | Awwh | ||
gaal | ?eval my $x; for 1 .. 4 -> $i {$x ~= $i} $x | ||
evalbot_8498 | \"1234" | ||
gaal | FWIW: on the command line, "for 1 .. 4 -> {say}" does something very wrong | ||
s/command line/REPL/ | 19:24 | ||
well. on the command line it doesn something else that's wrong. | |||
Juerd | Which command line? | 19:25 | |
gaal | -e | 19:26 | |
./pugs -e 'for 1 .. 4 -> {say}' => <SubPrim(&Num::ceiling)> four times | |||
in the REPL, in contrast, $_ is leaking. | |||
Juerd | 19:27 | ||
gaal | ? | 19:28 | |
(was that a unicode zero-width-whitespace? :) | 19:29 | ||
Juerd | gaal: Zero bytes even! | 19:44 | |
gaal | how do you send that in irc? | 19:49 | |
Juerd | Not at all :) | 19:50 | |
I added a real ASCII space to overcome that limitation | |||
But it is surrounded by several zero byte zero width spaces. | |||
Count the bytes if you don't believe me :) | 19:51 | ||
gaal | welcome, anatolyv! | 20:48 | |
anatolyv | thanks! | ||
gaal | so, the invitation is on its way to you. let's start with the parser, it's a very simple change there. | 20:49 | |
in Pugs.Parser, find the function tightOperators | 20:51 | ||
anatolyv nods | |||
gaal | around line 1045 | ||
this feature needs no parser code, just letting the parser know this symbol is valid. | 20:52 | ||
anatolyv | more like like 1384 here I think | ||
gaal | so where you see preOps " = ! + - ** ~ ? +^ ~^ ?^ \\ " | 20:53 | |
stick a ^ as the last element of that list | |||
anatolyv | done | ||
gaal | I chose that line because that's where the operator comes in the precedence table in S02 | ||
right. now you have to write the code that's dispatched for this op. go to Pugs.Prim | 20:54 | ||
anatolyv nods | |||
gaal | this is where we keep the haskell builtins | ||
the structure of this file is pretty simple: there are a few functions, op0, op1, .. op4 | |||
each one has zillions of guards, in each case with the string representing the op. | 20:55 | ||
anatolyv | i guess op1 is what we need to modify? | ||
gaal | yes; and also the very bottom of the file where there is a biiiig list of builtins | 20:56 | |
anatolyv | around like 217 | ||
anatolyv nods | |||
gaal | anatolyv: 217 is exactly right | ||
now the lucky thing is that ..^ is already defined | |||
so we don't have to write any list code ourselves, just curry off whatever that does. | 20:57 | ||
anatolyv | \\n List non ..^ safe (Scalar, Scalar) | ||
gaal | okay, yes, mimic that, but: | ||
1. change "non" to "spre", meaning this is a prefix op and the parser did some of the work for us | 20:58 | ||
2. change "(Scalar, Scalar)" to "(Scalar)" | |||
note, btw, that when you do add ops with arity > 1, the space there is significant | |||
... unless somebody fixed that, which is not a bad idea :-) | 20:59 | ||
anatolyv | right | ||
gaal | so find op2 "..^" | ||
anatolyv | op2 "..^" = op2RangeExclRight | ||
gaal | op1 "^" is equivalent to 0 ..^ <something> | 21:00 | |
anatolyv ndos | |||
gaal | so basically we just need to curry | ||
anatolyv nods, even. | |||
gaal | op1 "^" = op2RangeExclRight 0 is *almost* correct | ||
anatolyv | that's what I was thinking about | 21:01 | |
op1 "..^", you mean. | |||
gaal | btw - we're again lucky that the arguments are in the right order, that is, the left operand is the one that's fixed at 0 | ||
no: we're defining op1 "^" | |||
to be a curried version of op2RangeExclRight | 21:02 | ||
anatolyv | oh, right. | ||
gaal | "op2RangeExclRight 0" means sub { op2RangeExclRight(0, shift) } | ||
(..whcih in perl 6 will be written simply "{ op2RangeExclRight(0, $^num) }" :-) | 21:03 | ||
anatolyv | OK :) | ||
gaal | so, try compiling that; it won't work but the error message is good to know | 21:04 | |
anatolyv | going to try, yes. Just fixing a little mistake in the list down the bottom first, I messed that line up a bit. | ||
src/Pugs/Prim.hs:217:28:No instance for (Num Val)arising from the literal `0' at src/Pugs/Prim.hs:217:2 | 21:06 | ||
gaal | right. so, what the error message obscurely means is that there's a type error with op2RangeExclRight | 21:08 | |
if you peek at 1215 you'll see | |||
op2RangeExclRight :: Val -> Val -> Eval Val | |||
this means op2RangeExclRight takes two Vals and returns a Val action | |||
anatolyv | right | ||
0 is not a Val? | 21:09 | ||
gaal | the important thing here is that Val is not a native haskell type, it's a pugs value | ||
so we need to wrap up 0 to be a Val | |||
in this case, it's very simple | |||
replace "0" with "(VNum 0)" | |||
while it compiles, I'll explain: | 21:10 | ||
anatolyv | oh, that simple? | ||
I'm trying to find where VNum is defined. | |||
gaal | you know about data types, right? | ||
anatolyv | yes. | ||
gaal | Pugs.Types, line 137 has | 21:11 | |
type VNum = Double | |||
which means VNum is "really" a haskell double | |||
but something else is going on | |||
Pugs.AST.Internals, line 623 | 21:12 | ||
the "Val" datatype encapsulates values. | |||
VNum is a data constructor there | |||
anatolyv | I see (I think) | 21:13 | |
gaal | so when you say VNum 0, you get a Val (of the VNum variant). | ||
anatolyv nods | |||
gaal | the confusing bit is that the data constructors are almost all named for the type that they hold | ||
anatolyv | it did compile this time, and I tested it. Sort of. :) | ||
gaal | but these are different symbols | 21:14 | |
right, there's a bug in pugs in a nearby place: | |||
don't do for ^4 { say } | |||
do for ^4 -> $x { say } | |||
errr | |||
say $x | |||
anatolyv | actually for ^4 { say $_; } seems to work fine | 21:15 | |
or for ^4 { say } for that matter | |||
gaal | cool! | 21:16 | |
so now (or ideally, before we did this :-) we can write some tests | |||
anatolyv | :) | ||
gaal | uh, let's look in t/ ... | 21:17 | |
anatolyv | t/operators I would guess? | ||
gaal | ah, yes | ||
t/operators/range.t | |||
anatolyv | range.t, yes | ||
did a grep on ..^ :) | |||
gaal | :) | ||
\.\.\^, annoyingly :) | 21:18 | ||
anatolyv | exactly | ||
gaal | ?eval [~] ("\\" xx Inf) Y "..^".split("") | ||
evalbot_8498 | pugs: out of memory (requested 1048576 bytes) | 21:19 | |
gaal | tsk, tsk, no laziness. | ||
that will one day work though. | |||
anymoose. | |||
anatolyv | heh | ||
hmm. let me try to figure out the test part. | |||
tell me how to run it to check though. | |||
gaal | ah that's the fun part | 21:20 | |
setenv PERL6LIB blib6/lib ; setenv HARNESS_PERL ./pugs | |||
prove t/operators/range.t | |||
well that isn't the fun part. the fun part is, you write the test before you get the feature to work, and mark the test :todo | 21:21 | ||
anatolyv | well. setenv only for those of us using disrep*cough* shells :) | ||
gaal | at first, it doesn't compile | ||
yeah yeah | |||
then it doesn't pass | |||
then you see the sweet sweet words, "5 tests UNEXPECTEDLY SUCCEEDED" | |||
anatolyv | how do I mark the test :todo? can you point me towards an example? | 21:22 | |
gaal | there are two ways. one is in a test call: | ||
is "42", "43", "space shifted", :todo<feature> | 21:23 | ||
the other way is to predeclare at the top of the test script all tests you want to "force_todo" | |||
force_todo 5, 6; | 21:24 | ||
anatolyv | hmm, ok | ||
gaal | force_todo is mostly just useful when preparing for a release | ||
anatolyv | however, I'm getting: Internal error while running expression: *** unexpected "r" | ||
before even changing anything in range.t | 21:25 | ||
gaal | hmm! | ||
anatolyv | at <interactive> line 1, column 19 | ||
gaal | interactive? what's your command line? | 21:26 | |
anatolyv | I just set variables, ran ./pugs, and types prove t/operators/range.t in it | ||
prove t/operators/quoting.t | 21:27 | ||
err | |||
getting the same mistake on any prove, always in line 1, column 19. seems my pugs is broke in some way. | |||
gaal | ah, no | ||
anatolyv | ah | ||
quotes! | 21:28 | ||
gaal | run prove from the command line | ||
not via pugs | |||
anatolyv | oh | ||
gaal | prove is a p5 tool, but it can use other "perls" than its own | ||
actually it can run anything that emits TAP, so if you want to do TDD in java... | |||
anatolyv | a, d'oh | 21:29 | |
I misread your line because I'm so unused to the setenv's | |||
gaal | :) | ||
export ANATOLY=MOOSE | |||
anatolyv | t/operators/range....ok 20/20# Looks like you failed 1 tests of 20 t/operators/range....FAILED test 8 | ||
gaal | prove -v it | 21:30 | |
that shows which tests failed | |||
ah | |||
it did say test 8 | |||
yes, that fails for me too. | |||
anatolyv | it fails on carried chars, yes | ||
ok, so now I add one of my own? | |||
gaal | just put som "is" lines at the bottom | 21:31 | |
when you're done, update the plan | |||
in our Test.pm, there's no such thing as no_plan | 21:32 | ||
so you must say plan 22 or something like that. | |||
anatolyv | where? | ||
gaal | okay, I can confirm that this subtest has failed on an older pugs too, so it's not a bug we injected. | ||
plan? near the top of the file | 21:33 | ||
before the first test | |||
i happened to have a pugs for doing that, but you can also go to smoke.pugscode.org/ to make sure | |||
I showed you how those are linked to the tests themselves, right? | 21:34 | ||
anatolyv | ok, I don't understand. 22 will be the total number of tests after I add mine? | ||
gaal | assuming you add two, yes :-) | ||
the purpose of "plan" is just to let the harness know if a test script had crashed before the last test ran | 21:35 | ||
anatolyv nods | |||
gaal | otherwise it might think that since (say) 4 tests passed, the complete file passed. | ||
add as many tests as you like | 21:36 | ||
I suppose testing against a negative number (or zero) should be useful -- they should produce a null range | 21:37 | ||
although from our implementation it should obviously work | |||
anatolyv | hmm, I can't really see the point of adding more than one here. unless... something like ^0 should produce a null range I guess. | ||
heh | |||
gaal | but once the test is written, it can service different implementations: either | 21:38 | |
1. pugs, if somebody refactors | |||
2. a different compiler altogether that wants to borrow our test suite | |||
anatolyv | right | ||
gaal | so of course nobody overdoes the tests, but sometimes one extra "has *got* to pass!" can turn useful. | 21:39 | |
anatolyv | I've added 3 | 21:41 | |
gaal | out Test.pm is richer than p5 Test::Simple (or Test::More), though very much similar to them | ||
anatolyv | ^5 should be 0..4, ^1 should be (0) as the boundary condition, and ^0 should be () | ||
gaal | if you know Test::Exception, we have lives_ok and dies_ok too | 21:42 | |
anatolyv | hmm, I vaguely remember it. OK. | ||
gaal | we don't have Test::Deep, but we often use is $x.perl, $y.perl to approximate that | ||
anatolyv | ok 21 - unary ^num produces the range 0..^num | ||
ok 22 - unary ^ on the boundary ^1 works | |||
ok 23 - unary ^0 produces null range | |||
these messages look ok to you? | |||
gaal | looking good! let's commit :) | 21:43 | |
anatolyv | alright :) | ||
gaal | btw don't forget to validate your invitation | ||
anatolyv | doing that right now | ||
done | 21:45 | ||
gaal | svnbot6: ?check | ||
it's feeling kinda sleepy | 21:46 | ||
did you commit? | |||
anatolyv | not yet | 21:47 | |
gaal | ah :) | ||
anatolyv | you'll have to walk me through that, svn still feels new | ||
gaal | svn ci | ||
anatolyv | in the top level dir? | ||
gaal | yes | ||
anatolyv | then I write a commit message? before --This line, and those below, will be ignored-- | 21:48 | |
gaal | yup, and :wq | ||
something like | |||
* added unary ^ (0..^num shortcut) operator | |||
anatolyv | how will it know who I am? don't I have to config svn first? | ||
gaal | nope, it's magic :) | 21:49 | |
it'll ask you on your first checkin. | |||
anatolyv | hmm, alright :) | ||
gaal | and store the auth data in the repo. no more CVS recheckouts just because you'd used anonymous :) | ||
s/repo/working copy/ | 21:50 | ||
anatolyv | hmm | ||
doesn't seem to be authenticating me | |||
gaal | what are you getting? | 21:51 | |
anatolyv | well, it asked me the password for my local login first :) after that failed, it re-asked username, password, and failed the check, now it's tried again, thought a long time, and wrote: | ||
svn: MKACTIVITY of '/pugs/!svn/act/0e9ab592-0209-0410-9497-ebf9d9afe9e1': authorization failed (svn.openfoundry.org) | |||
gaal | when it asked for a username, did you give it the pugs username? | 21:52 | |
anatolyv | the one I registered on rt.openfoundry.org just a minute ago. | ||
gaal | hmm, that should have worked | ||
anatolyv | magic never works reliably :) | 21:53 | |
I'll try to re-login there to check my password | |||
gaal | try to ci again, maybe it's just some slowness in openfoundry. | 21:54 | |
anatolyv | openfoundry does seem sluggish. it won't log me in: Unverified account. Please verify your account first. - though I verified it twice by now, successfully. | ||
I hope it's not using memcached! | 21:55 | ||
anatolyv shudders. | |||
gaal | lol | ||
actually it's an excellent candidate for that! | |||
it's (a) slow and (b) perl | |||
anatolyv | right | ||
gaal | all those SVN::Web views can certainly be cached | 21:56 | |
btw, I recently noticed that very new versions of GLib have a new slab allocator | 21:57 | ||
anatolyv | nope, still can't log in. I guess it's best to wait until morning, then mail the admin if it still doesn't work. | ||
and svn ci still doesn't work. | |||
gaal | some of the admins are on this channel :) and luckily they're in GMT+7 and should be awake in a few hours | 21:58 | |
anatolyv | I won't be :) | ||
gaal | too bad, because you won't be able to see this work: | 21:59 | |
?eval for ^4 -> $i { say $i } | |||
evalbot_8498 | Error: unexpected "f" expecting program not a class name or reserved word | ||
gaal | ?eval for 0..^4 -> $i { say $i } | ||
evalbot_8498 | OUTPUT[0 1 2 3 ] undef | ||
gaal | you know our evalbot? | ||
anatolyv | I guess I do now :) | 22:00 | |
gaal | ?eval moose => 42 | ||
evalbot_8498 | ("moose" => 42) | ||
gaal | well, I hope you had fun apart from this last hiccup. Welcome aboard! :) | 22:02 | |
anatolyv | thank you :) | ||
nnunley | gaal: what does the ^ do in the range? | 22:06 | |
gaal | nnunley: it defaults to starting from 0, and having the range not include the operand | ||
a..^b === a..(b-1) | |||
nnunley | Cool. | ||
[a..b) | |||
gaal | ^b == 0..^b | ||
right. | |||
but ranges are integral :) | 22:07 | ||
nnunley | True. | ||
Would be messy if they were real. | |||
anatolyv | not necessarily | ||
hmm | |||
nnunley | You'd have to give an epsilon. | ||
gaal | could be stipulated by lexical pragma. | 22:08 | |
anatolyv | ah, right, ranges are integral but ~~ can match them as if they were real | ||
gaal | you mean 0..1 ~~ 0.5 => true? | 22:10 | |
anatolyv | it seems it should be | 22:11 | |
according to S3 | |||
gaal | right, cool. | 22:12 | |
anatolyv | but actually I'm failing to grok it | ||
1^..^2 is an empty range | |||
quoting S3: "Ranges are not autoreversing: 2..1 is always a null range, as is 1^..^2." | 22:13 | ||
"However, smart matching against a Range object smartmatches the endpoints in the domain of the object being matched," | |||
gaal | right (some people think that's a mistake btw) | ||
anatolyv | "so 1.5 ~~ 1^..^2 is true." | ||
so think about it for a second, what this implies | |||
1^..^2 is a null range in integers, but not null in reals: in reals it's (1..2) | 22:14 | ||
but until we do the matching, we just have a Range object | |||
this implies that we can't store e.g. 3^..^8 as a Range 4..7 | |||
gaal | point. | 22:15 | |
anatolyv | not sure how pugs does it, but Range has to be smarter than that | ||
and allow exclusion of an endpoint as a primitive notion inside it. | |||
?eval 1.5 ~~ 1^..^2 | 22:16 | ||
evalbot_8498 | bool::false | ||
anatolyv | :) | ||
gaal | I don't think it deals with it at all yet: Ranges are nowhere serialized, and smartmatchin against them probably dosen't work yet. | ||
anatolyv | ?eval 1.5 ~~ 1..2 | ||
evalbot_8498 | bool::false | ||
anatolyv | ah, well, it doesn't match at all | ||
right | |||
gaal | ?eval 3 ~~ 0 .. 10 | ||
evalbot_8498 | bool::false | ||
anatolyv | what do you mean by nowhere serialized? | ||
heh, it doesn't even match integers. | |||
gaal | there is no "Range" type at all in pugs. | ||
anatolyv | what's 1..4? | 22:17 | |
a list | |||
I see :) | |||
gaal | not quite... 1 .. 4 evaluates to a list | ||
anatolyv | pugs> :d 1..4 App &infix:.. (: 1, 4) | ||
ah, that's the syntax tree, sorry | 22:18 | ||
VList [VInt 1,VInt 2,VInt 3,VInt 4] | |||
gaal | that's the evaluation, yes. | 22:19 | |
anatolyv | are there built-in object types in pugs, in general, just not Range? Things like Int Str etc.? Or those are missing too? | ||
gaal | I think order in that department is for the next milestone | 22:21 | |
anatolyv | ok | ||
gaal | AFAIK, it's still an open question what this means: my Int $x = "not an int" | 22:22 | |
(coersion or error) | |||
anatolyv | hmm | ||
gaal | likewise sub foo (Int $x) etc. | ||
anatolyv | ?eval (1..4).say | 22:23 | |
evalbot_8498 | OUTPUT[1234 ] bool::true | ||
gaal | yes, that's a pretty major issue to still be open :) | ||
anatolyv | ?eval 1..4.say | ||
evalbot_8498 | OUTPUT[4 ] (1,) | ||
gaal | ?eval 1 .. (4.say) | 22:24 | |
evalbot_8498 | OUTPUT[4 ] (1,) | ||
anatolyv | what happens when i run (1..5).say, how does (1..5), a VList, automagically turns into an object which has a method say? | ||
gaal | I'm not familiar enough with the details, but there's no special treatment for say here; the magic is in the dot. | 22:26 | |
avar | gaal: you can have my Int $x = undef though | ||
last I checked | |||
gaal | avar: that will almost certainly be allowed even if "my Int $x = 'eep'" is not | 22:27 | |
I do wonder how Perl is going to express not-nullable types though. | 22:28 | ||
...did I see Int! somewhere? | |||
avar | hah | 22:34 | |
my !Int $x = "everything but Int"; | |||
gaal | ?eval my !Int $x = "everything but Int"; | 22:35 | |
evalbot_8498 | Error: unexpected "!" expecting qualified identifier, variable name or "(" | ||
gaal | yeah, this isn't specced yet I think. | ||
avar | I know, but it would be pretty insane if it were;) | ||
gaal just parsed that the way avar meant. ha! | |||
yeah, it would most certainly be insane :-) | 22:36 | ||
avar | I wonder if it would be useful somehow... | ||
like, if you promised to not make something an array or a hash if the compiler could make some worthy optimizations of that... | 22:37 | ||
gaal | doubtful. just limit it to one type | ||
avar | my !Array or !Hash $x = "foo"; | ||
yeah, I know, like I said, insane;) | |||
gaal | that's Any :) | ||
you mean !Array and !Hash | |||
avar | ah, that;) | 22:38 | |
gaal | okay, I think it's time for me to sleep too :) | ||
see you later :) | |||
avar | cya | ||
gaal | good night & | ||
tewk | ll | 23:56 |