←2010-04-09 2010-04-10 2010-04-11→ ↑2010 ↑all
00:01:01 <Sgeo> With the FFI issue, it seems it would be bad to make public API functions use fastcall
00:01:10 -!- augur has joined.
00:01:36 <pikhq> Windows has 3 or 4 different calling conventions in its public API, BTW.
00:02:10 <fizzie> It's a bit of a microsoftism, in the sense that I think GCC got it to be compatible with MS __fastcall. Though I'm not entirely sure of the history.
00:02:11 <Sgeo> o.O that sounds.. annoying
00:02:42 <coppro> ugh, being sick sucks :(
00:03:47 <Sgeo> coppro, feel better soon
00:04:26 <coppro> I certainly hope so :/
00:05:03 <Sgeo> coppro, there's a possbility you won't? :(
00:05:24 <coppro> well, I've been fighting this damn thing on and off for two weeks
00:05:46 <Sgeo> coppro, see a doctor?
00:05:56 <coppro> have; says it
00:05:59 <coppro> *says it's just a cold
00:06:06 <coppro> feels like just a cold too
00:06:43 <Sgeo> As long as it really IS just a cold
00:07:22 <alise> It's... CANCER
00:08:17 <coppro> that would seriously suck :(
00:09:28 <coppro> why do I hate myself?
00:09:56 <Gregor> It's from all that copprophilia.
00:10:58 * pikhq groans
00:12:32 <coppro> no sane human being could possible want to do what I am doing right now... therefore I am insane
00:12:46 <oerjan> but logical.
00:13:05 <alise> coppro: what are you doing?
00:13:19 <coppro> playing IWBTG
00:13:22 <alise> :-)
00:13:40 -!- Tritonio_GR1 has quit (Read error: Connection reset by peer).
00:14:15 <alise> coppro: that's only valid classically, I think
00:14:42 <coppro> okay... I've made it past the up-falling apples
00:14:48 <alise> pfft, that's easy
00:15:12 <coppro> now for the clouds :(
00:15:24 <alise> wimp, that part of the game is easy
00:15:49 <coppro> lol
00:18:05 <alise> it would be nice to have a logical operation that didn't need parenthesising
00:18:11 <alise> like with nand you still need delimiters of some sort
00:18:12 <coppro> you must be using some dictionary I don't know of
00:18:26 <Ilari> coppro: More vitamin D? :->
00:18:26 <alise> but if we had an operation where we could specify either left or right associativity
00:18:38 <alise> and have it stand in for all our operations
00:18:51 <alise> then we could just say a logical expression is a list of variables and quantifiers, pretty much
00:20:03 <alise> i tihnk that's impossible though :(
00:20:04 <alise> *think
00:28:57 * Sgeo despises seeded grapes
00:29:16 <coppro> what about seeded bananas?
00:29:54 <Sgeo> How ARE you supposed to eat these damn things?!?
00:30:20 -!- augur has quit (Ping timeout: 276 seconds).
00:31:11 <Sgeo> Me: Can I just swallow the seeds? Dad: No. Me: What will happen if I do? Dad: Nothing
00:31:19 -!- augur has joined.
00:36:21 <oerjan> that sounds like a problem with your dad, not the seeds.
00:36:37 <oerjan> i suggest sending him in for repairs.
00:36:49 <alise> pi - sqrt(pi)^2 = -0.0000000000000008881784; this thing really shouldn't be called "real"
00:37:07 <Sgeo> oerjan, so, does that mean I should just eat the damn seeds?
00:37:08 <oerjan> unreal arithmetic
00:37:27 <oerjan> if you want to
00:39:25 <oerjan> on the flip side, i vaguely recall a long time ago my dad said one _should_ eat the cores of apples. i also vaguely recall recently reading apple seeds _are_ poisonous.
00:40:41 <coppro> Apple seeds contain trace amounts of cyanide
00:40:49 <coppro> but they are undigestable in any case
00:40:53 -!- MizardX has joined.
00:41:06 * Sgeo finds a video called "how to eat seeded grapes properly"
00:41:22 <oerjan> saved by the internet :D
00:42:15 <Sgeo> Not that helpful
00:42:25 <Sgeo> He goes over what DOESN'T work
00:42:53 * oerjan vaguely recalls when he had seeded grapes, he just ate the damn seeds
00:42:58 <Sgeo> http://www.associatedcontent.com/article/961122/how_to_eat_nonseedless_grapes.html
00:43:31 <oerjan> i think chewing the seeds was a bit mixed experience, though
00:43:50 <fizzie> Nonseedless, what a nice way to put it. Why not unnonseedlessless?
00:44:14 <fizzie> Maybe "how to eat seedy grapes" would have had the wrong connotations.
00:44:35 <Gregor> Sgeo: lawl wtf
00:44:50 <Gregor> I ate "non-seedless" grapes for years, we grew them in our back yard :P
00:44:55 <Gregor> The proper way to eat them ... is to eat them :P
00:45:09 <Sgeo> Including the seed>?
00:45:42 <alise> This is so complicated for Sgeo!
00:45:48 <alise> And how /do/ you open a banana anyway?
00:46:14 <oerjan> hm i've heard there's been some recent progress on banana opening technique
00:46:24 <oerjan> as in, the way i've always done it is not the best
00:46:39 <pikhq> alise: Sledgehammer.
00:46:46 <alise> the problem with the monkey technique is that... I forget
00:46:51 <alise> there's something wrong with it, anyway
00:46:53 <pikhq> Heavier the better.
00:47:00 <alise> so i'd stick to what you're doing
00:47:14 <oerjan> (i usually make a small break by the stem, then unwrap)
00:47:48 <oerjan> alise: it's probably messy or something
00:48:04 <alise> http://www.flickr.com/photos/philgyford/4505748943/sizes/o/
00:48:04 <myndzi> |
00:48:04 <myndzi> /<
00:48:07 <oerjan> they're _monkeys_ after all
00:48:14 <oerjan> thank you, myndzi
00:48:45 <Sgeo> What's wrong with eating the peel, exactly?
00:48:54 <Sgeo> (Not that I eat banana peels)
00:49:36 <oerjan> alise: they shouldn't use 100%, that looks unprofessional and makes us think they grew up in north korea or something
00:50:08 <oerjan> i expect it's somewhat stringy?
00:50:35 <oerjan> also probably covered in pesticides
00:51:33 <Sgeo> I don't think monkeys care about pesticides so much
00:51:55 <oerjan> probably why they're endangered.
00:53:07 <oerjan> wait, he actually suggests blowing the seeds out of your mouth
00:54:17 <oerjan> i guess it goes with the outside recommendation from earlier.
00:54:36 <oerjan> this seems ill-adapted to norwegian conditions.
00:54:53 <pikhq> Completely tangential, but: http://forums.mtgsalvation.com/attachment.php?attachmentid=104059&stc=1&d=1270799424 RoE is going to be awesome.
00:55:32 <Sgeo> Steam, for the moments where it worked, showed RoE in My games, as a trial thing
00:55:40 <Sgeo> Too bad I can't get Steam to not crash
00:56:50 <pikhq> Sgeo: Rise of the Eldrazi?
00:57:04 <Sgeo> pikhq, not sure
00:59:15 <coppro> pikhq: indeed!
00:59:43 * coppro thinks he'll actually be playing at the prerelease
01:00:24 <oklopol> augur: i thought your comment about grammars was more interesting than the conversation around it
01:00:34 <augur> :x
01:00:38 <augur> sewing grammars!
01:02:26 <oklopol> yes that one
01:02:36 <augur> its quite interesting
01:02:46 <augur> wanna hear about them? :x
01:02:52 <alise> NO
01:03:04 <oklopol> i was just leaving, give me a there line explanation (short lines)
01:03:09 <oklopol> *three
01:03:44 <augur> ok here goes
01:03:57 <oklopol> okay i won't count that as one cuz i like you.
01:05:03 <augur> a sewing grammar consists of two sets of n-dimensional string vectors like <a, b, 0> (where 0 is the empty string); one set is the basis, the other is the rules.
01:06:22 <augur> vector concatenation is what you expect, e.g. <a,b,c> + <x,y,z> = <ax,by,xz>. the vector language of the grammar is just the basis closed under right-concatenation with the rules
01:06:57 <augur> e.g. b + r0 + r1 + ... for b in the basis, and r0, r1, ... in the rules
01:07:13 <augur> the string language is the set of strings generated by applying some function to the members of the vector language
01:07:58 <oerjan> i'm sorry we'll have to ignore that last line, you went over quota
01:08:03 <oklopol> :P
01:08:04 <augur> :P
01:08:29 <augur> so just as an example, take the classic non-CF language a^n b^n c^n
01:08:48 <oklopol> taken
01:09:03 <oerjan> that has no solutions for n > 2. i know this!
01:09:14 <augur> let the basis be just <0,0,0>, and let the rules be just <a,b,c>, and let the string-generating function be f<x,y,z> = xyz
01:09:35 <oklopol> yeah
01:09:47 <augur> <0,0,0> + <a,b,c> + <a,b,c> + ... is <a^n, b^n, c^n>, obviously.
01:09:54 <oklopol> obviously
01:10:03 <augur> or take a^n b^m c^n d^m
01:10:17 <oklopol> <a, 0, c, 0> and <0, b, 0, d>
01:10:26 <augur> let the basis be <0,0,0,0> and let the rules be <a,0,c,0> and <0,b,0,d>
01:10:27 <augur> yep.
01:10:29 <augur> and there you go.
01:10:48 <oklopol> i wish we had more courses about grammarness
01:11:07 <augur> or take the word duplicate language ww for w in {a,b}*
01:11:18 <oklopol> <a, a> for all letters
01:11:22 <augur> B = <0,0>, R = <a,a>, <b,b>
01:11:23 <augur> :)
01:11:41 <augur> sewing grammars: pretty easy.
01:12:05 <oklopol> also i find it intriguing, what can you express with it?
01:12:10 <augur> now, how you get more traditional CF languages i dont know.
01:12:10 <oklopol> i guess depends on f
01:12:28 <augur> the paper i learned about them from just addressed these kinds of phenomena
01:12:37 <oklopol> for palindromes, just make f reverse the latter one
01:12:37 <augur> balanced nested parens, for instance? no clue.
01:12:53 <oklopol> i think that's why they let you have a function and not just concatenation in the end
01:12:59 <augur> true. the problem with having f as a non-concatenative function is that it could be almost anything
01:13:08 <oklopol> sure
01:13:17 <oklopol> that's why "i guess depends on f"
01:13:21 <augur> yeah
01:13:23 <augur> anyway
01:13:27 <augur> go to sleep oklopol. :p
01:13:38 <oklopol> well not so much sleep as algebra
01:13:43 <oklopol> well, maybe sleep too
01:14:14 <oklopol> thanks for showing me the ways of sewing ~~~>
01:20:24 <augur> algebra!
01:23:57 <oerjan> algae bras
01:36:58 <alise> Huh, Caml was developed to implement Coq.
01:37:17 <alise> ML, on the other hand, originated in LCF (later HOL, Isabelle, etc.).
01:37:20 <alise> Proof war!
01:45:37 <augur> alise: thats rather interesting
01:46:32 <Sgeo> Making a language in order to implement a language?
01:47:00 <augur> Sgeo: it makes sense
01:47:12 <alise> well, proof systems are really complex
01:47:18 <augur> indeed
01:47:20 <alise> so you want an expressive functional language to do it in
01:47:40 <alise> so actually making caml then making coq is way less effort in the long run than e.g. writing coq in c
01:47:46 <alise> (and longer-lasting bitrotwise)
01:47:54 <Sgeo> Why not Haskell?
01:48:05 <augur> or some other language. i imagine that imperative languages might be useful for some sorts of logic
01:48:48 -!- BeholdMyGlory has quit (Remote host closed the connection).
01:49:46 <alise> Sgeo: didn't exist at the time
01:49:51 <alise> + not very performant,
01:49:55 <alise> + personal taste
01:49:58 <alise> but yeah, this was way before haskell
01:50:00 <alise> late 80s early 90s
01:51:21 <augur> haskell debuted 5 years after caml, just fyi. caml: 1985, haskell: 1990
01:51:46 <Sgeo> Should I attempt to learn O'Caml?
01:52:06 <augur> yes.
01:52:25 <augur> i need a name for a language phenomena
01:52:29 <augur> anyone care to help? :X
01:52:35 <augur> well, its not really a language phenomena
01:52:52 <Sgeo> Any way to avoid tutorials that assume I've never seen a functional language before?
01:52:53 <augur> its a formal property of certain kinds of grammars, but it relates to linguistic phenomena
01:54:46 <Sgeo> Any reason to learn O'Caml when I know Haskell
01:55:20 <augur> Sgeo: diverse perspective.
01:55:46 <pikhq> Sgeo: O'Caml has objects.
01:55:59 <pikhq> You can drink the OOP coolaid.
01:56:06 <pikhq> Koolaid, too.
01:56:19 * augur drinks pikhq's Koolaid
01:56:48 <Sgeo> http://www.post-gazette.com/pg/10099/1048991-67.stm?cmpid=newspanel1 I'd drop TV in a heartbeat
01:57:10 <augur> i have a TV.
01:57:11 <oerjan> augur: you mean the phenomena of using -a plural nouns in the singular?
01:57:12 <Sgeo> I mean, I almost never turn on a TV, I use Hulu. If it came down to Hulu vs. rest of the Internet, I would drop Hulu
01:57:13 <augur> its connected to my PS2.
01:57:30 <augur> oerjan: no. i presume you mean "data" as a singular?
01:57:30 -!- Oranjer has joined.
01:57:33 <Sgeo> s/Hulu/Hulu and .. other means of watching shows/g
01:57:39 <oerjan> augur: and, _phenomena_
01:59:13 <augur> well, its work pointing out that both of those words are loan words, and so its invalid to say that it's an -a plural. it's merely an irregular plural, english has no class of -a plurals as an actual class of the language, they exist only epiphenomenally as an artifact of the source language.
01:59:38 <augur> second, "phenomena" is an accepted, tho less common, singular form of the word
01:59:59 <augur> third, "data" in many dialects is a mass noun (like milk), hence "the data is" ~ "the milk is"
02:00:54 <pikhq> I still prefer "the datum is".
02:01:14 <pikhq> But, then, I'm a nerd who thinks English isn't complex enough. :P
02:01:29 <augur> english morphology isnt complex, this is true
02:01:46 <augur> but then, neither is latin or greek, in the grand scheme of things.
02:04:42 <augur> but english has plenty of complexity syntactically
02:04:55 <augur> if you want some introductions to this complexity, i would be happy to provide. :)
02:05:18 <pikhq> Sure, why not?
02:05:56 <augur> :o
02:06:08 <augur> my favorite example is extraction islands and parasitic gaps
02:07:23 <Oranjer> :O
02:07:31 <augur> so you can do these things like extract sub-elements, right
02:07:32 <augur> for instance
02:07:45 <augur> John saw [the man] ==> [the man] that John saw ___
02:07:51 <Sgeo> To add two floats together you need to use a different operator, +. (note the trailing period).
02:07:54 <Sgeo> That sounds fun
02:07:57 <Sgeo> :(
02:08:07 <augur> and you can do it from both subject and object position
02:08:18 <augur> [the man] saw John ==> [the man] that ___ saw John
02:08:29 <augur> but you can only do it once
02:08:32 <augur> so for instance
02:09:25 <augur> [the man] saw [the woman] ==> [the man] that ___ saw [the woman] ==> ... ==> John saw [the man] that ___ saw [the woman] =/=> [the woman] that John saw [the man] that ___ saw ___
02:09:48 <augur> pikhq: make sense?
02:10:13 <augur> not the why behind it, but just the fact of the matter
02:10:38 <Sgeo> What's with the ;; thing?
02:10:56 <pikhq> augur: o.O
02:11:01 <augur> what?
02:11:03 <alise> Sgeo: stop trying to learn ocaml.
02:11:07 <alise> it's not a very good language
02:11:20 <pikhq> That's about it.
02:11:26 <alise> but, also, don't diss things like that; they're design choices
02:11:34 <augur> pikhq: i presume you understand roughly what im showing with "John saw [the man] ==> [the man] that John saw ___"
02:11:35 <augur> yes?
02:11:48 <pikhq> Yeah.
02:12:31 <augur> and i presume you get what i'm showing with "[the man] that the woman saw ___ ==> John saw [the man] that the woman saw ___"
02:12:32 <augur> yeah?
02:12:57 <pikhq> "o.O" is not a reaction of not understanding.
02:13:07 <augur> oh ok :p
02:13:15 <augur> its an expression of "thats fucking weird"?
02:13:43 <pikhq> Yes.
02:13:51 <augur> want some more weirdness? :)
02:14:22 <oerjan> Sgeo: ignoring syntactic ugliness is a prerequisite for learning ocaml
02:14:47 <augur> John saw [the man] before he met him ==> [the man] that John saw ___ before he met him
02:14:52 <augur> but
02:15:10 <augur> well no lets say not "met him" but "met the woman"
02:15:32 <augur> John saw the man before he met [the woman] =/=> [the woman] that John saw the man before he met ___
02:15:35 <pikhq> English's syntax is crazy when you actually think about it.
02:16:11 <augur> to some degree. its quite well behaved, but it has a bunch of bizarre phenomena. this one actually is apparently a universal phenomena of language, but
02:16:13 <Sgeo> Hm. Should I switch to speaking Lojban?
02:16:23 <augur> so you see how that last one is weird?
02:16:39 <pikhq> Yeah.
02:16:39 <augur> you cant extract out of an adverbial clause "before he met the woman"
02:17:25 <augur> ok now watch this
02:17:44 <augur> suppose that john saw the woman before he met that same woman
02:17:46 <augur> now:
02:18:00 <augur> [the woman] that John saw ___ before he met ___
02:19:39 <augur> whats up with that, huh
02:20:11 <augur> if you extract out of the main clause object position, having the gap in the adverbial object position is no longer bad
02:21:24 <augur> the examples of that sort of thing multiply when you look at the different positions for the different gaps.
02:24:53 -!- zzo38 has joined.
02:25:47 <zzo38> Can you write a music using Bohlen-Pierce notes?
02:26:28 <augur> what is a music.
02:28:13 <zzo38> Bohlen-Pierce music is music that the notes follow 3^(n/13) instead of 2^(n/12)
02:28:42 <augur> your grammar is horrible
02:28:47 <Oranjer> I think I heard of that!
02:28:59 <Oranjer> on my local college radio station, I believe
02:29:02 <Oranjer> that or NPR
02:30:31 <oerjan> zzo38: sorry about that, i got augur wound up by criticising _his_ english
02:30:44 <Gregor> Your Englishes all are sucks.
02:30:44 <oerjan> it's all my fault, really
02:30:58 <augur> oerjan: yes only my english was grammatical, and you're not a native speaker. ;)
02:31:20 <oerjan> augur: hasn't prevented me from correcting native speakers before
02:31:33 <zzo38> I think anarchy golf is broken (it is now maintenance?), did I break it by setting the PID too much?
02:31:41 <pikhq> Oerjan speaks better English than many a native speaker.
02:31:54 <oerjan> well writes
02:31:57 <pikhq> Well. At least types it. No idea how well he speaks it out loud. :P
02:31:57 <augur> true, but it DOES mean that your judgments are not reliable. your book knowledge might be, but your judgments are not.
02:32:43 <oerjan> augur knows english when he sees it. also, pornography.
02:32:51 <augur> :)
02:32:57 <augur> its true tho
02:33:03 <Gregor> Do most people NOT know pornography when they see it?
02:33:17 <augur> you can have exquisite book knowledge of english, but your intuitions about english will never match a native speakers
02:33:19 <Gregor> "There are all these naked people putting their body parts into each other in this picture ... what's going on?"
02:33:23 <augur> the same is true for any language
02:33:28 <pikhq> augur: Dude, all that's merely a matter of how much correct English he's seen. Of course, hardly any non-native speaker is going to be exposed to the foreign language as much as a native speaker is...
02:33:42 <augur> pikhq: no, it doesnt matter how much correct english he's seen
02:33:54 <zzo38> I don't like to watch pornography
02:34:09 <augur> there are certain things that are not possible for a non-native speaker to get, for some reason.
02:34:29 <augur> at least not without extreme attention given to the issue in question
02:35:26 * Sgeo goes to play some Worms
02:35:42 <augur> its a difference between knowledge of facts of the language, vs knowledge of the procedure that resulted in those facts
02:36:24 <augur> native speakers possess procedural knowledge that is independent of the particulars, and hence they can produce judgments for arbitrary expressions
02:36:43 <Oranjer> can this procedural knowledge ever be taught to a non-native speaker?
02:36:53 -!- oerjan has set topic: DO NOT FEED THE AUGUR | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:36:54 <augur> second-language speakers, on the other hand, learn things as facts about particular words or constructions
02:36:59 <Gregor> Oranjer: Yarly
02:37:03 <augur> Oranjer: some of it can, some of it cant.
02:37:12 <augur> we dont actually _understand_ the procedural knowledge, so
02:37:18 <Gregor> Some of it can, some of it Kant.
02:37:54 -!- augur has set topic: DO NOT FEED THE AUGUR | /augur eats oerjan | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:38:05 <oerjan> yipe
02:38:14 <Gregor> Let's go back to porn :P
02:38:22 -!- augur has set topic: DO NOT FEED THE AUGUR | /augur eats oerjan out | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:38:25 <Gregor> Or is that what you mean tby "eat"
02:38:27 <Gregor> Hahaha
02:38:29 <Gregor> Win.
02:38:34 <augur> ;)
02:38:46 <augur> i aims to please
02:40:05 -!- oerjan has set topic: Topic closed by the moral police | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:40:17 -!- augur has set topic: Topic closed by the moral police | fuck the police | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:41:05 -!- Gregor has set topic: Topic closed by the moral police | fuck the police | (pics or it didn't happen) | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:42:07 -!- augur has set topic: Topic closed by the moral police | fuck the police | (pics or it didn't happen) | http://www.motherrussiasdaughters.com/images/euro-pornstars/euro-babe_2.jpg | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
02:42:34 <Gregor> I like the dagger style :P
02:42:50 <Gregor> Also, you came up with that link in a distressingly short amount of time :P
02:43:22 <augur> google images: "police uniform sex"
02:43:22 <oerjan> you think i just said augur knows his pornography for no reason, do you?
02:43:34 <augur> i know my google-fu, more accurately.
02:43:38 <Gregor> IIRC, that's not HIS pornography :P
02:43:43 <oerjan> OR SO YOU CLAIM
02:43:45 <augur> decidedly not.
02:43:53 <oerjan> sorry, the "his" was a typo
02:44:04 <augur> actually it wasnt
02:44:05 <oerjan> or misremembering, rather
02:44:07 <augur> its just a different his.
02:44:15 <oerjan> argh
02:44:33 <augur> english lets you say "I know my X" to mean "I know a lot about X"
02:44:53 <augur> as opposed to meaning "I know the X that belongs to me"
02:45:07 <augur> similarly for other possessive pronouns.
02:45:16 <Gregor> I was just riffing off the ambiguity :P
02:45:41 * augur riffs off gregor's ambiguity
02:45:43 <augur> ;o ;o ;o
02:46:03 * Gregor rips off augur's ambiguity
02:46:18 <augur> :x
02:46:22 <augur> hot
02:46:32 <Gregor> Did I say "ambiguity"?
02:46:35 <Gregor> I meant "clothes"
02:47:25 <Gregor> Can we go back to English now? X-P
02:47:43 <augur> also consider pied piping
02:48:23 <augur> ofcourse its considered bad form to strand your prepositions, eg "who(m) are you talking to" vs. "to who(m) are you talking"
02:48:50 <augur> but in some cases, you have to do more than just move the preposition along with the WH phrase
02:48:53 <Gregor> Oh pffft.
02:48:58 <Gregor> To consider that bad form is quite outdated.
02:49:09 <augur> true, but it was an example of pied piping
02:49:11 <oerjan> Gregor: hey, i was trying to subtly get us _away_ from English, here. and failing miserably.
02:49:19 <alise> To whom is it that you are speaking?
02:49:21 <augur> where you bring the extra but (the preposition) with you
02:49:27 <augur> but consider
02:49:32 <Gregor> This is the kind of language up with which I cannot put.
02:49:33 <oerjan> hot piping pies
02:49:36 <augur> "john was shocked by a book about joan of arc" is acceptable, but if you want to ask who the book is about
02:49:46 <augur> "who was john shocked by a book about"
02:49:48 <augur> this is pretty horrible
02:49:59 <augur> and it doesnt get better by pied piping the preposition:
02:50:06 <augur> "about who was john shocked by a book"
02:50:07 <augur> also horrible
02:50:13 <augur> but if you take the whole NP its fine:
02:50:16 <alise> A book about Joan of Arc John was shocked by; to whom it is that you are speaking is John.
02:50:18 <augur> "a book about who shocked john"
02:50:19 <Gregor> Police police police police police police police.
02:50:21 <oerjan> dammit s/hot piping/piping hot/
02:50:26 <alise> Gregor: XD
02:50:35 <alise> Police, in Buffalo
02:50:39 <alise> HAWT BEASTIALITY
02:50:40 <augur> we,, sorry, "a book about who was john shocked by"
02:50:44 <alise> a ni way
02:50:47 <alise> i'ma go now
02:50:53 <alise> see you cool dudes tomorrowz
02:50:58 <augur> alise: see you
02:51:14 -!- alise has quit (Quit: Leaving).
02:51:36 <augur> "john read about about joan of arc"
02:51:52 <augur> =?=> "who did john read a book about"
02:52:08 <augur> =?=> "about who did john read a book"
02:52:20 <oerjan> whomsoever
02:52:22 <augur> =/=> "a book about who did john read"
02:52:40 <augur> so here youve got pied piping that is _bad_
02:53:05 <augur> noone understands this phenomena/on either
02:53:43 <Gregor> The famous Dr. Daniel Noone understands most everything.
02:54:00 <augur> its true
02:55:55 <augur> Daniel Noone is an ancestor of Noonien Soong
02:56:06 <Gregor> Booh hiss at Trek references :P
02:56:16 <augur> you should see this paper im working on
02:56:24 <Gregor> Boo hiss at working on things.
02:56:25 <Gregor> >_>
02:56:34 <augur> my example sentences are all star trek references
02:56:54 <augur> specifically, instead of using the classical example "brutus stabbed caesar", i have "worf stabbed gowron"
02:57:02 <augur> insted of "a small brown dog" its "a small brown targ"
02:57:26 <Gregor> Ow.
02:57:27 <Gregor> My brain.
02:57:30 <Gregor> I needed that for thinking.
02:57:41 <oerjan> thinking is overrated.
02:58:18 <Gregor> Druhhhhhhh
02:58:49 <zzo38> I invented how to make up Pokemon Red on 8x8 ASCII only display with 7 buttons it works fine
02:58:55 <augur> ive decided that im going to use example sentences, in a series of papers, such that if you collected the example sentences together in order of appearance
02:59:12 <augur> they actually outline a plot of an episode of some random scifi show
03:00:46 <zzo38> OK, I like that idea a bit
03:00:58 * Gregor sobs silently to himself in the corner.
03:02:06 <augur> my intention is to make the sequence of sentences unassuming, so that you wouldnt realize whats going on unless you're astute
03:02:13 <zzo38> seq 100 1100 > /dev/dsp
03:02:24 <augur> e.g. using farscape, babylon 5, firefly, efc, etc.
03:02:27 <augur> less well known scifi
03:02:55 <augur> that way, if someone comes up to you afterwards and indicates that they recognize the story, you've discovered a fellow nerd
03:03:00 <augur> and made a new friend
03:03:32 <zzo38> augur: Yes I suppose that helps. But first you have to figure out the best way to make the example like that
03:03:41 <Gregor> s/friend/stalker/
03:03:43 <augur> its not that hard
03:03:49 <augur> Gregor: theres a difference?
03:03:53 <Gregor> <augur> But gimme a minute!
03:03:58 <Gregor> Damn, you put another line in there.
03:04:01 <Gregor> Ruined my nonsense zinger.'
03:04:07 <augur> :)
03:04:15 <augur> i aims to displease
03:04:31 <Gregor> Basically, you aim to alter net pleasure.
03:04:42 <zzo38> Once I was testing some computer and I typed in: yes > /dev/dsp
03:04:56 * Gregor does that :P
03:05:05 <Gregor> Well that's unpleasant.
03:05:32 <zzo38> You can type yes yyyyyyy to make it lower pitch
03:05:40 <zzo38> The more "y" you add, the low pitch
03:06:38 <augur> is this in bash?
03:06:45 <Gregor> Sure.
03:07:43 <augur> thats useless
03:08:15 <augur> allit does is loop printing yyyyyyy
03:08:16 <augur> :|
03:08:29 <zzo38> But you can put > /dev/dsp
03:08:36 <augur> oh ok
03:08:36 <zzo38> And then it will sound
03:08:54 <augur> permission denied! D:
03:09:01 <augur> whats /dev/dsp
03:09:31 <zzo38> I think you might also be able to use > /dev/audio or | aplay -t raw
03:09:31 <Gregor> 42nd notes. Just calculated that. Friggin' Chopin.
03:09:45 -!- lament has joined.
03:09:55 <augur> ah well, im on a mac so
03:10:13 <Gregor> Dood, they're the 7-tuplets of triplets! WTFWTF *boom*
03:10:15 <zzo38> Use the equivalent mac command, I don't know what it is
03:10:20 <augur> neither do i :D
03:10:34 <Gregor> Doesn't Mac have OSS?
03:10:36 <zzo38> Probably "yes" is the same, though
03:10:44 <augur> Gregor: have you implemented the theory in Generative Theory of Tonal Music yet?
03:11:01 <Gregor> augur: Nope!
03:11:07 <augur> lame
03:11:08 <augur> do so!
03:11:12 <Gregor> augur: I've chosen to implement my fingers onto this piano instead.
03:11:20 <augur> o ok
03:26:29 -!- oerjan has quit (Quit: Later).
03:32:42 -!- zzo38 has quit (Remote host closed the connection).
03:34:42 -!- Oranjer1 has joined.
03:35:34 -!- Oranjer has quit (Ping timeout: 264 seconds).
04:06:25 -!- augur has quit (Ping timeout: 264 seconds).
04:14:00 -!- augur has joined.
04:27:45 -!- lament has quit (Quit: lament).
04:35:02 -!- Oranjer has joined.
04:37:58 -!- Oranjer1 has quit (Ping timeout: 264 seconds).
04:40:30 -!- Quadrescence has quit (Ping timeout: 245 seconds).
04:43:00 -!- Quadrescence has joined.
04:47:44 <Sgeo> Would it be entirely wrong to say that a VM is an interpreter for machine code?
04:50:14 <coppro> no
04:55:58 -!- oklopol has quit (Read error: Connection reset by peer).
04:56:20 -!- oklopol has joined.
05:04:26 -!- Alex3012 has joined.
05:08:33 -!- augur has quit (Ping timeout: 276 seconds).
05:10:09 -!- oerjan has joined.
05:11:53 -!- oklofok has joined.
05:12:27 -!- oklopol has quit (Ping timeout: 276 seconds).
05:15:19 -!- Guest_126 has joined.
05:15:45 -!- Guest_126 has quit (Quit: Disconnected from OpenPilot Forums).
05:28:10 -!- augur has joined.
05:32:51 -!- Oranjer has left (?).
05:33:01 -!- Quadrescence has quit (Ping timeout: 252 seconds).
05:42:41 -!- Quadrescence has joined.
05:43:17 -!- lament has joined.
05:47:49 -!- lament has quit (Client Quit).
05:57:44 -!- oerjan has quit (Quit: leaving).
07:58:25 -!- oerjan has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:16 -!- kar8nga has joined.
08:12:43 -!- gm|lap has joined.
08:21:01 -!- Gracenotes has quit (Remote host closed the connection).
08:58:00 -!- jcp has quit (Ping timeout: 276 seconds).
09:07:37 -!- coppro has quit (Quit: I am leaving. You are about to explode.).
09:16:29 -!- oerjan has quit (Quit: leaving).
09:29:14 -!- kar8nga has quit (Remote host closed the connection).
09:38:27 -!- lament has joined.
10:10:55 -!- Gracenotes has joined.
10:22:40 -!- tombom has joined.
10:44:45 -!- lament has quit (Quit: lament).
11:18:03 -!- augur has quit (Ping timeout: 260 seconds).
12:02:03 -!- adam_d has joined.
12:05:36 -!- gm|lap has quit (Quit: ilua).
13:03:24 -!- adam_d has quit (Ping timeout: 240 seconds).
13:12:09 -!- BeholdMyGlory has joined.
13:15:53 -!- Tritonio_GR has joined.
13:19:09 -!- alise has joined.
13:20:34 <alise> Good morning!
13:28:20 <alise> Cool, G(12) > G_64 where G = goodstein function.
13:28:25 -!- Quadrescence has quit (Ping timeout: 245 seconds).
13:28:31 <alise> Admittedly it has a rather more complex definition.
13:29:18 -!- Quadrescence has joined.
13:29:21 -!- Quadrescence has quit (Changing host).
13:29:21 -!- Quadrescence has joined.
14:07:00 <alise> http://upload.wikimedia.org/wikipedia/commons/1/15/Champernowne_CF.png the champernowne constant has a pretty fucked up continued fraction
14:07:05 <alise> that last term isn't even the complete one
14:09:03 -!- kar8nga has joined.
14:48:18 * alise plays with Prolog
14:54:54 <oklofok> coool
15:07:43 -!- oerjan has joined.
15:11:26 <alise> wow symbolic differentiation in prolog is like... stupidly fucktardedly easy
15:11:56 <alise> d(X, X, 1).
15:11:57 <alise> d(X, Y, 0) :- \+ X = Y.
15:11:57 <alise> d(U+V, X, A+B) :- d(U,X,A), d(U,V,B).
15:11:57 <alise> d(U*V, X, (U*A) + (V*B)) :- d(V,X,A), d(U,X,B).
15:11:57 <alise> d(U/V, X, (V*A) / (U*B) / (V^2)) :- d(U,X,A), d(V,X,B).
15:11:57 <alise> d(U^V, X, (V*(U^(V-1))) * A) :- d(U,X,A).
15:12:18 <alise> err omit that X,Y,0 line I just added it and it messes things up
15:12:31 <alise> ?- d(x^2, x, R).
15:12:32 <alise> R = 2*x^ (2-1)*1.
15:12:53 <alise> foo(X,R) :- d(X^2,X,E), R is E.
15:12:53 <alise> ?- foo(34, R).
15:12:53 <alise> R = 68.
15:15:48 <oerjan> what's \+ ?
15:16:26 <alise> \+ X succeeds iff X fails
15:16:27 <alise> but ignore that line; it breaks stuff
15:16:27 <alise> I need to condition on X being a symbol
15:16:34 <alise> otherwise every differentiation gets the extra possibility R = 0
15:16:40 <alise> because of what your variables could be
15:16:44 <oerjan> heh
15:16:44 <alise> ?- d(X*Y,Y,X).
15:16:45 <alise> X = 1,
15:16:45 <alise> Y = 1*** ;
15:16:45 <alise> X = ** * 1+** * 1,
15:16:45 <alise> Y = ** * 1+** * 1 ;
15:16:46 <alise> ERROR: Out of local stack
15:16:49 <alise> (where ** represents "anything")
15:16:54 <alise> so 1*** is 1*something
15:17:14 <alise> (i.e. "what values for X and Y make the derivative of X*Y over Y equal to X?")
15:18:00 <alise> I like how we use the fact that arithmetic isn't automatically evaluated to return a symbolic expression, but we can then easily numerically evaluate it
15:18:06 <alise> because it's just the tree structure of prolog arithmetic
15:18:41 <oerjan> i think your U^V is wrong
15:18:46 <alise> btw if you use UPPERCASE VARIABLES as the variables for d it enumerates all the possible cases for the variable and the result... which is often not what you want
15:18:51 <oerjan> unless V is a constant
15:19:04 <alise> d(x^x, x, R) otoh will give you the expression
15:19:06 <alise> oerjan: yes...
15:19:12 <alise> I need to figure out how to express is-constant
15:19:26 <alise> oerjan: I think I can express it as: "V does not mention the variable"
15:19:36 <oerjan> no, you just need to use the multivariable chain rule properly :)
15:19:55 <alise> yeah but i'm lazy
15:20:47 <alise> and this is nice and short
15:20:57 <oerjan> d(U^V) = V*(U^(V-1))dU + ln U * U^V * dV
15:21:48 <alise> Fiine.
15:22:17 <alise> oerjan: but log is floating-point in prolog :(
15:22:20 <alise> oh, wait, that's only if you evaluate it
15:22:24 <alise> so the symbolic result will be precise
15:22:28 <alise> ha! this is perfect
15:22:53 <alise> oerjan: I hope that prolog uses the same precedence as your expression
15:22:57 <alise> (I really suck at operator precedence)
15:23:05 <alise> I know I have redundant parens in
15:23:09 <alise> (U*A) + (V*B)
15:23:13 <alise> and I think in (V*A) / (U*B)
15:23:44 <alise> oerjan: that rule broke my system
15:23:58 <alise> you can do d(X^2, X, R)
15:24:01 <alise> but not d(x^2,x,R)
15:24:38 <oerjan> you lack a rule for constants
15:25:18 <oerjan> also, division has a bug, should be (V*A - U*B) / (V^2) iirc
15:25:36 <alise> er right
15:25:39 <alise> i suck at mentally parsing things :(
15:25:54 <oerjan> hm or is that the wrong sign...
15:26:13 <alise> that is right i think
15:26:45 <alise> term_variables(+Term, -List)
15:26:45 <alise> Unify List with a list of variables, each sharing with a unique variable of Term.47This predicate used to be called free_variables/2 . The name term_variables/2 is more widely used. The old predicate is still available from the library library(backcomp). The variables in List are ordered in order of appearance traversing Term depth-first and left-to-right. See also term_variables/3. For example:
15:26:46 <oerjan> i'm unsure of the order of the terms
15:26:46 <alise> :)))
15:26:47 <alise> that sounds helpful
15:27:08 <alise> oerjan: i just looked it up that's right
15:27:12 <oerjan> ok
15:27:33 <alise> dammit, term_variables only works for UPPERCASES
15:27:42 -!- tombom_ has joined.
15:28:00 <oerjan> well of course, those are the variables, duh
15:29:01 <alise> yes
15:29:05 <alise> but I support differentiation on littles too
15:29:07 <alise> :P
15:29:08 <alise> d(X, Y, R) :- atom(X), \+ X = Y -> R is 0 ; R is 1.
15:29:20 <alise> (you can do this as two, shorter rules but then d(x,x,R) says R = 1 and then false which is irritating)
15:29:28 <alise> so will your ^ rule work now?
15:30:35 <oerjan> well i don't know why it didn't work the first time, how do you encode it?
15:30:44 -!- tombom has quit (Ping timeout: 276 seconds).
15:32:34 -!- adam_d has joined.
15:34:16 <alise> d(U^V, X, V*(U^(V-1)) * A + log(U) * U^V * B) :- d(U,X,A), d(V,X,B).
15:36:52 <oerjan> looks right to me
15:36:55 <oerjan> food ->
15:39:30 <alise> oerjan: it works at the expense of totally breaking things
15:39:41 <alise> because I basically have to add the default rule that d(x) = 1
15:42:15 <alise> oerjan: also at the expense of, you know, not actually giving correct results
15:43:24 <oerjan> but you _already_ have d(X,X,1)
15:45:31 <alise> nope
15:45:34 <alise> just changed things:
15:45:40 <alise> constant(X, Y) :- number(X) ; atom(X), \+ X = Y.
15:45:40 <alise> d(X, Y, R) :- constant(X, Y) -> R is 0 ; X = Y -> R is 1.
15:46:05 <alise> ?- d(x^2,x,E).
15:46:05 <alise> E = 2*x^ (2-1)*1+log(x)*x^2*0.
15:46:10 <alise> that *0 is fucking everything up
15:46:16 <alise> paren issue?
15:46:53 <oerjan> um that's correct, that term is supposed to cancel out when the exponent is a constant
15:47:24 <oerjan> (log(x)*x^2*0)
15:47:32 <oerjan> + has lowest precedence
15:49:00 <alise> then how come foo(n,R) = 0 for all n? given
15:49:05 <alise> foo(X,R) :- d(X^2,X,E), R is E.
15:49:09 <alise> or is your rule in addition to the previous one?
15:52:02 <oerjan> what rule
15:52:18 <oerjan> what do you mean by "all n"
15:52:55 <oerjan> if you evaluate foo(3,R), say, then of course you are doing d(3^2, 3, E) which is nonsense
15:53:19 <oerjan> you cannot substitute values until _after_ you have differentiated with a proper variable
15:54:23 <alise> this worked before though :)
15:54:27 <alise> with the other rules you can use uppercase vars too
15:54:58 <oerjan> only by luck. if you differentiated 3*x at x=3 it would break
15:55:53 <alise> hmm, right
15:57:10 -!- FireyFly has joined.
15:57:56 <alise> oerjan: but prolog has no function to substitute lowercase atoms does it?
15:58:44 <oerjan> i don't know, but i'm sure you can write one
15:59:26 <alise> that's a shame though I thought it was so awesome :(
15:59:26 <alise> oerjan: mind -
15:59:29 <oerjan> upper case i more efficient since it's essentially in-place update
15:59:34 <alise> d(X^2,X,E) with no constraints on X (e.g. argument) should work
15:59:40 <alise> it enumerates all the possible input pairs and output expressions
15:59:42 <oerjan> *is
15:59:53 <alise> ?- d(X^2,X,E).
15:59:54 <alise> X = ** ^ 2,
15:59:54 <alise> E = 1 ;
15:59:54 <alise> E = 2*X^ (2-1)*1+log(X)*X^2*0 ;
15:59:54 <alise> X = ** + **,
15:59:55 <alise> E = 2* (** + **)^ (2-1)* (1+1)+log(** + **)* (** + **)^2*0 ;
15:59:57 <alise> X = ** + **,
15:59:58 <alise> E = 2* (** + **)^ (2-1)* (1+ (1+1))+log(** + **)* (** + **)^2*0
16:00:27 <oerjan> eek :D
16:00:46 <alise> oerjan: writing a substitution function probably won't be so easy, as i have to handle variadic stuff
16:00:53 <alise> prolog should just be LOGICALLY CURRIED :)))
16:01:12 <oerjan> also i didn't say there _wasn't_ a function to substitute lowercase atoms, i said i didn't know
16:01:44 <Quadrescence> fuk currying
16:01:49 <alise> oerjan: i looked and couldn't find one
16:02:02 <alise> oh wait, d only ever generates function expressions with two arguments
16:02:03 <alise> convenient
16:02:07 <alise> and the function is always constant
16:03:21 * alise wonders why subst(X, X, Y, Y).
16:03:21 <alise> subst(F(A,B), X, Y, F(A2,B2)) :- subst(A,X,Y,A2), subst(B,X,Y,B2).
16:03:21 <alise> doesn't parse
16:03:23 <alise> the second line in particular
16:03:49 <alise> oerjan: I wish you could do it for uppercase vars it'd be a lot prettier
16:04:25 -!- FireyFly has changed nick to FireFly.
16:04:27 <oerjan> um why can't you
16:04:47 <alise> because you can't bind X
16:04:47 <alise> or wait
16:04:48 <alise> can you do
16:04:56 <alise> d(X^2, X, E), X is 34, R is E.
16:04:56 <alise> ?
16:05:04 <oerjan> sure
16:05:16 <oerjan> *X = 34
16:05:24 <oerjan> iirc
16:05:28 <alise> hmm problem is that generates the correct result /but/
16:05:43 <alise> then it says it has more terms
16:05:44 <alise> and going on loops
16:05:46 <alise> (trying every other number to see if it's 34)
16:06:40 <oerjan> the problem is d/3 tries to substitute values for X
16:06:42 <alise> apart from that it works
16:06:53 <alise> ah you can just put ! after
16:06:58 <alise> foo(Xv,R) :- d(X^2, X, E), X = Xv, R is rational(E), !.
16:07:28 <alise> ?- foo(pi, R).
16:07:28 <alise> R = 6.28319.
16:07:29 <alise> (I removed the rational())
16:07:39 <alise> still, it seems cleaner to do it with x
16:07:45 <alise> because then we can do more symbolic jiggery-pokery
16:08:43 <alise> still, this is awesome
16:08:49 <alise> imagine how awkward it would be in C :-)
16:09:08 <Quadrescence> alise: Which prolog do you use?
16:09:16 <alise> SWI
16:09:20 <Quadrescence> thought so
16:09:33 <Quadrescence> I might play with prolog a little more today. I haven't in so, so long
16:09:39 <alise> gprolog sort of doesn't feel terribly prologish to me and i think has weird names for some procedures I use intuitively
16:09:45 <alise> all the ones that aren't gprolog or SWI just seem really 90s
16:09:49 <alise> (or completely dead)
16:09:55 <alise> (or tied to some stupid platform)
16:10:15 <alise> sisctus is probably fine i've never tried it though
16:10:15 <oerjan> alise: you may want to start with d(X, Y, Z) :- var(X), !, something...
16:11:09 <alise> define something :P
16:11:47 <oerjan> that thing with constant above, perhaps
16:12:01 <alise> so unify the two? or two separate ones?
16:12:09 <alise> if I unify them then d(x,x,E) won't work
16:12:11 <alise> (nor d(x,y,E)
16:12:11 <alise> )
16:12:31 <alise> anyway constant(X, _) always fails if X is a var
16:12:34 <alise> because X is neither a number nor an atom
16:13:00 <oerjan> alise: well rewrite the case anyway, the point is _not_ to substitute the first argument ever
16:13:10 <alise> d(X, Y, A) :- var(X), !, X = Y -> A = 1.
16:13:11 <alise> d(X, Y, A) :- constant(X, Y) -> A = 0 ; X = Y -> A = 1.
16:13:14 <alise> is that acceptable?
16:13:23 <alise> i mean I'm not quite sure what you want it to do
16:13:31 <oerjan> oh hm
16:13:40 <oerjan> well i guess
16:13:58 <alise> constant(X, Y) :- number(X) ; atom(X), X \= Y.
16:14:01 <alise> is this the function at risk of substituting?
16:14:43 <oerjan> the risk of substituting is in _all_ the d clauses for specific functions
16:15:03 <alise> i see
16:15:03 <oerjan> whenever you pass an (upper case) variable as the first argument
16:15:09 <alise> but I'm stil not sure what you want me to do!!
16:15:11 <alise> *still
16:15:40 <oerjan> i want you to prevent that substitution by doing a check for the first argument being variable, then cutting and handling it specially
16:16:01 <alise> yes -- but specially how?
16:16:09 <Deewiant> Cutting is lame
16:16:12 <alise> do you want to break that d(X^2, X, E) generates all the possible in/out pairs?
16:16:16 <alise> if so, I hate you and all your children
16:16:33 <oerjan> oh in that case move along, nothing to see here :D
16:16:42 <Deewiant> :-D
16:16:42 <oerjan> i thought that was a bug
16:17:34 <alise> lol
16:17:37 <alise> no that's awesome
16:17:52 <alise> I still need to figure out how to write
16:17:54 <alise> subst(F(A,B),...
16:17:57 <alise> without syntax erroring
16:18:33 <oerjan> there is a predicate for breaking up terms into head + list of arguments
16:18:44 <alise> but you can't pattern match?
16:18:45 <alise> super fucking lame :(
16:18:55 <alise> anyway oerjan since when are you a prologer?
16:19:10 <oerjan> very barely
16:19:21 <Gregor> "very barely" is not a time.
16:19:42 <oerjan> although for a long time i guess. i'm not quite sure, may have been already in high school
16:19:55 <pikhq> Gregor: It is very barely a time.
16:20:08 <oerjan> (that i found a book on it. i'm pretty sure i didn't have an actual implementation)
16:21:18 <alise> Evaluate Expr. Although ISO standard dictates that A=1+2, B is A works and unifies B to 3, it is widely felt that source-level variables in arithmetic expressions should have been limited to numbers. In this view the eval function can be used to evaluate arbitrary expressions.53The eval/1 function was first introduced by ECLiPSe and is under consideration for YAP.
16:21:19 <alise> widely felt my ass
16:21:26 <alise> (LULZ INNUENDO)
16:23:42 <Gregor> Why Father Widely ... whyyyyyy
16:23:48 <alise> :D
16:23:58 <alise> oerjan: hmm I dislike your exponential rule because there is no precise evaluation for log in Prolog
16:24:03 <alise> because it has no precise irrational type
16:24:15 <alise> maybe I should reinstate my other one only for the case where V is constant
16:24:55 <oerjan> perhaps.
16:26:25 <alise> or just accept that the world is imprecise
16:27:01 <alise> aha
16:27:05 <alise> Term =.. [Funtor|Args]
16:27:08 <alise> *Functor
16:28:57 <alise> ?- subst(x^(x-x), x, y, R).
16:28:57 <alise> R = y^ (y-y) ;
16:28:57 <alise> false.
16:28:57 <alise> yay hooray
16:29:07 -!- MigoMipo has joined.
16:30:52 <alise> ?- subst(2*(x-y) + 0, x, flower, E).
16:30:52 <alise> E = 2* (flower-y)+0 ;
16:30:52 <alise> false.
16:30:52 <alise> ?- subst(2*(x-y) + 0 + (x*log(x/y)), x, flower, E).
16:30:52 <alise> false.
16:30:56 <alise> ok, so I need to handle single arg functions too :P
16:32:03 <alise> i'm thinking that prolog would make an excellent CAS
16:34:37 * alise wonders how you're meant to do a map in prolog
16:36:37 <alise> I was hoping it'd be something awesome, like
16:36:48 <alise> member(X, L), Y is X+1, assert(member(Y, L2))
16:36:51 <Sgeo> A YouTube video that I left in a tab overnight spontaneously decided to start playing
16:42:35 <alise> oerjan: is it healthy to try and remove "foo ; false" things?
16:42:36 <alise> like you get the one right result then a false
16:42:42 <alise> I'm trying to change my code to stop it
16:44:30 <oerjan> um
16:45:55 <oerjan> i don't know whether that is possible.
16:46:31 <alise> it is if you fuck with your code a lot :D
16:46:32 <alise> "I've tried to teach people autodidactism, but I've realized they have to learn it for themselves." --shapr
16:46:44 <oerjan> false is what afaiu what you get when there _are_ no more results
16:47:04 <alise> oerjan: well yeah
16:47:16 <alise> but i mean if you tweak your program so that prolog thinks that there cannot be any more results
16:47:18 <alise> (as opposed to maybe there might be)
16:47:20 <alise> it doesn't bother to prompt
16:47:23 <alise> so you get no falses
16:47:30 <oerjan> oh.
16:47:41 <oerjan> well i guess that's just a matter of adding cuts...
16:48:27 <alise> yeah :P
16:49:16 <oerjan> but then you need to be careful not to ruin your actual wanted multiple results
16:49:27 <alise> yeah
16:49:38 <alise> urgh, i shouldn't have defined a map function
16:49:40 <alise> bugs everywhere
16:49:44 <alise> how am i meant to dooo this
16:49:48 <alise> manually recursive function?#
16:50:20 <oerjan> i don't know
16:51:48 <alise> ?- d(x^2, x, E), subst(E, x, 42, E2), R is E2.
16:51:49 <alise> E = 2*x^ (2-1)*1+log(x)*x^2*0,
16:51:50 <alise> E2 = 2*42^ (2-1)*1+log(42)*42^2*0,
16:51:50 <alise> R = 84.0 ;
16:51:50 <alise> false.
16:51:50 <alise> yay!
16:52:03 <alise> this is beautiful
16:52:25 <Sgeo> Making an Algebra system in Prolog?
16:52:52 <alise> well
16:52:52 <alise> i just implemented differentiation :P
16:52:53 <alise> but yeah i suppose i might do that
16:53:19 <alise> constant(X, Y) :- number(X) ; atom(X), X \= Y.
16:53:21 <alise> d(X, Y, A) :- constant(X, Y) -> A = 0 ; X = Y -> A = 1.
16:53:21 <alise> d(U+V, X, A+B) :- d(U,X,A), d(U,V,B).
16:53:21 <alise> d(U*V, X, (U*A) + (V*B)) :- d(V,X,A), d(U,X,B).
16:53:21 <alise> d(U/V, X, (V*A - U*B) / (V^2)) :- d(U,X,A), d(V,X,B).
16:53:22 <alise> d(U^V, X, V*(U^(V-1)) * A + log(U) * U^V * B) :- d(U,X,A), d(V,X,B).
16:53:24 <Quadrescence> alise: can I see your diff program?
16:53:28 <Quadrescence> is that it?
16:53:29 <alise> Quadrescence: yes, see above :P
16:53:30 <alise> yes
16:53:50 <Quadrescence> is subst() a predefined func?
16:53:55 <alise> ?- d(x^(x/2), x, E).
16:53:55 <alise> E = x/2*x^ (x/2-1)*1+log(x)*x^ (x/2)* ((2*1-x*0)/2^2).
16:54:02 <alise> Quadrescence: it doesn't handle functions other than those enumerated so it's not "production ready"
16:54:05 <alise> i'll show the whole file
16:55:40 <alise> http://pastie.org/912899.txt?key=f9lcfe9rul5yb1kzk4czg
16:55:48 <alise> if you evaluate symbolically like in foo2, the only cuts you need are the two in subst
16:55:57 <alise> (otherwise everything has one more potential result which always fails)
16:56:00 <alise> that's just aesthetics though
16:56:06 <alise> more convenient when using the REPL
16:56:10 <alise> for foo you really do need the ! though
16:56:18 <alise> otherwise it loops forever trying every number and failing because it isn't Xv :-)
16:57:12 <alise> Quadrescence: you can also use this procedure to do a (really crappy) "search" for derivatives:
16:57:13 <alise> ?- d(X*Y, X, Y).
16:57:14 <alise> X = ** * 1,
16:57:14 <alise> Y = 1 ;
16:57:14 <alise> X = ** * 1+** * 1,
16:57:14 <alise> Y = ** * 1+** * 1 ;
16:57:15 <alise> ERROR: Out of local stack
16:57:26 <alise> (** meaning "anything that follows the rules of the function", I think)
16:57:45 <alise> also d would be better if it accepted any expression that doesn't mention the variable as constant but it doesn't
16:58:15 <alise> still, despite its flaws i think it shows just how awesomely awesome prolog is
16:58:55 <alise> Quadrescence: If I were trying to make this actually useful for anything I'd start by, say, making the code handle function compositions and then doing cases for sin and the like
17:00:03 -!- Alex3012_ has joined.
17:00:08 <alise> also it makes some assumptions...
17:00:11 <alise> ?- d(x/x, x, E).
17:00:12 <alise> E = (x*1-x*1)/x^2.
17:00:15 <alise> like x is not 0
17:00:48 <Quadrescence> alise: Yeah, I am aware, jeez what do you take me for, sum kinda idoit???
17:00:54 <alise> and really there should be a simplification function so that it says things like "-1" instead of "(x*0-1*1)"
17:01:00 <alise> Quadrescence: aware of what?
17:01:40 <Quadrescence> alise: idk
17:01:44 <alise> okay :P
17:02:10 -!- Alex3012 has quit (Ping timeout: 245 seconds).
17:03:48 -!- Alex3012 has joined.
17:04:03 <Gregor> He's Alex ...
17:04:05 <Gregor> FROM THE FUTURE
17:04:11 <Gregor> (1002 years in the future)
17:04:42 <alise> Dun dun DUNNNNNNNNNNN
17:04:53 <oerjan> he's come here to investigate why civilization collapsed
17:05:36 <oerjan> unfortunately the people in 3012 don't understand cosmic irony
17:06:06 <Gregor> It takes more than 1000 years to rediscover cosmic irony.
17:06:13 <oerjan> yeah
17:06:32 <Gregor> (It does not, however, take 1000 years from an apocalypse to discover time travel)
17:06:33 -!- Alex3012_ has quit (Ping timeout: 265 seconds).
17:06:36 <oerjan> 1003 years to be exact.
17:07:39 <oerjan> Gregor: depends how deep the apocalypse
17:08:23 <Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
17:09:06 <oerjan> well you need to remove all knowledge that could be used to rebuild civilization fast...
17:11:35 <alise> `addquote <Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
17:11:50 <HackEgo> 146|<Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
17:14:55 <alise> [[ N*Sync is the best band ever! => For all bands xx, N*Sync is better than band x (or, x=N*Sync). A quick listen can easily show this statement false.]]
17:16:25 <alise> [[ A buggy line from a song (Everybody Loves My Baby, Jack Palmer and Spencer Willson, 1924): Everybody loves my baby; My baby don't love [anybody] but me. => For all persons x, x loves my baby. For all persons y, if my baby loves y, then y is me. If true, one can conclude the speaker is his own baby, and is narcissistic. ]]
17:16:29 <alise> this is the best page about basic quantifiers ever
17:17:18 -!- oerjan has quit (Quit: leaving).
17:28:15 <alise> ?- d(x^x^x,x,E), subst(E, x, 42, E2), R is E2.
17:28:16 <alise> ERROR: Out of global stack
17:28:17 <alise> a deficiency
17:29:04 <alise> although that's just in is
17:29:15 <alise> so you could fix it by substituting, e.g. something better at arithmetic :P
17:29:25 <alise> (given a few dozen oodles of memory naturally)
17:29:33 <alise> still stack overflows suck
17:30:38 <alise> (other operations merely cause overflow)
17:56:28 -!- Tritonio_GR has quit (Quit: Leaving.).
18:00:19 <alise> oh lol ** doesn't mean anything
18:00:22 <alise> it means infinite :D
18:00:29 <alise> nesting
18:04:59 -!- oerjan has joined.
18:05:26 <alise> heh, zeilbeger would so approve of using prolog to do stuff
18:05:44 <alise> it's proved if you ran "seq(N), \+ prop(N)" for a while and it hasn't spit out a counterexample
18:14:03 <alise> oerjan: apparently var(X) is very unsound
18:14:04 <alise> logic-wise
18:14:22 <alise> and \+ plus copy_term/2 plus ! can express var/1
18:14:34 <alise> so cut really is quite insidious...
18:14:40 <oerjan> yeah
18:15:29 <alise> quite obvious really (that var/1 is unsound; \+/1, copy_term/2 and !/0 doing var/1 is new to me)
18:15:40 <alise> foo(X) :- var(X), X=1, then foo(X): X = 1, but foo(1) fails
18:15:52 <alise> although
18:15:53 <oerjan> why would you need copy_term...
18:15:58 <alise> oerjan: i don't know, but oleg said it
18:16:05 <alise> are you going to question oleg?
18:16:11 <alise> "With var/1, logic programming becomes programming in inconsistent logic." <-- well prolog /is/ turing complete...
18:16:19 <alise> Prolog's built-in negation predicate \+/1 is just as dangerous as var/1: indeed, negation can express var/1 in one line:
18:16:20 <alise> vr(X) :- \+ \+ (X=0), \+ \+ (X=1).
18:16:22 <alise> oh
18:16:24 <alise> oerjan: i see
18:16:26 <alise> \+/1
18:16:26 <alise> OR
18:16:28 <alise> copy_term/2
18:16:29 <alise> OR
18:16:30 <alise> !/0
18:16:34 <alise> can all express var/1 on their own
18:16:37 <alise> now THAT is scary!
18:16:51 <oerjan> well i knew \+ could be expressed with ! and fail
18:17:06 <alise> Prolog's built-in negation predicate \+/1 is just as dangerous as var/1: indeed, negation can express var/1 in one line:
18:17:08 <alise> vr(X) :- \+ \+ (X=0), \+ \+ (X=1).
18:17:08 <alise> Only a variable can be, alternatively, unified with two distinct atoms (e.g., 0 and 1). The double-negation is symptomatic. The evaluation of ?-vr(X). succeeds with the answer X=_G180 (the variable X remains unbound). Goals vr(0), vr(1), vr(2), vr([0]), and vr([X|Y]) all fail.
18:17:08 <alise> In the above example, the cause of unsoundness is obvious: the negated goal \+ (X=0) binds an existing free variable. This is called ``floundering''. Some Prolog systems report a run-time warning or an error in this case (floundering is not decidable statically). SWI Prolog, which is used for all tests here, lets floundering go undetected.
18:17:14 <oerjan> \+ X :- X, !, fail.
18:17:15 <alise> so basically negation makes prolog consistent
18:17:16 <alise> hah!
18:17:20 <oerjan> \+ X .
18:17:49 <alise> and what use is prolog without negation...
18:17:51 <alise> ok, some use, but not that much
18:18:39 <alise> and yeah fail can express it
18:18:54 <alise> oerjan: you do not even need ! I think?
18:18:57 <alise> nt(X) :- X -> fail ; true.
18:19:04 <alise> so basically I'm learning that 99% of prolog is inconsistent
18:19:11 <Sgeo> What's terrible about expressing var/1 on one line?
18:19:20 <alise> Sgeo: var/1 makes prolog's logic inconsistent
18:19:27 <Sgeo> Oh
18:19:31 <alise> For uniformity, we use the name vr/1 and define it here as the alias to the built-in var/1. We first ask the question if there is a value of X that makes foo(X) derivable from the current database of rules and facts. The Prolog system says yes and gives one such value, 1:
18:19:32 <alise> ?- foo(X).
18:19:32 <alise> X = 1
18:19:32 <alise> Yes
18:19:32 <alise> ?- foo(1).
18:19:34 <alise> No
18:19:36 <alise> If we verify the answer and check if indeed foo(1) is derivable from the current knowledge, we get the answer no. With var/1, logic programming becomes programming in inconsistent logic. We cannot generally trust any results.
18:19:51 <alise> The well-known elegant implementation of lambda-calculus in Prolog relies on copy_term/2. Because of that, copy_term/2 is the least objected to. Alas, copy_term/2, too, expresses var/1, also in one line:
18:19:52 <alise> vr(X) :- copy_term(X,0), copy_term(X,1).
18:19:56 <alise> Finally, cut, by itself expresses var/1:
18:19:56 <alise> noteq(X,X) :- !, fail.
18:19:56 <alise> noteq(_,_).
18:19:56 <alise> vr(X) :- (noteq(X,0), !, fail); (noteq(X,1), !, fail); true.
18:19:59 <Sgeo> What does var do?
18:20:44 <alise> var(X) succeeds iff X is a free variable; X remains unbound
18:20:47 <alise> so e.g. var(X) but not var(1)
18:20:53 <oerjan> alise: -> ; can be defined with ! as well. i sort of think of ! and fail as more primitive.
18:20:56 <alise> which lets us distinguish whether we're searching for instances of X
18:20:59 <alise> or checking if 1 satisfies it
18:21:02 <alise> in foo(X) :- ...
18:21:03 <alise> oerjan: true
18:21:13 <Sgeo> That.. doesn't sound that useful
18:21:14 <alise> I've just been tihnking of -> and ; as language constructs
18:21:15 <alise> *thinking
18:21:54 <Sgeo> Although I guess when it comes to functions that return stuff through a free variable or something, it's a nice sanity check
18:21:54 <oklofok> ais523: brain ping
18:22:15 <alise> Sgeo: it's basically for practical purposes
18:22:27 <alise> like, you want to avoid pathological really-high-complexity behaviours
18:22:35 <alise> when prolog tries searching
18:33:02 <alise> so now I'm on a prolog kick :P
18:33:22 <Deewiant> prolog-funge?
18:39:52 <alise> Deewiant: I considered that momentarily: but the slowness would be unbelievable.
18:40:03 <alise> And, besides, it's not really suited for that.
18:40:11 <alise> You never solve any constraint problems in Befunge.
18:41:11 <Deewiant> So how's the ml-funge doing
18:43:07 <alise> It turns out I only work on things that take my fancy at this very second :)
18:43:33 <Deewiant> Bah :-P
18:43:47 <alise> Deewiant: Well, hey, give me motivation. :P
18:45:12 <Deewiant> You get to beat AnMaster at speed? I don't know.
18:46:01 <alise> Deewiant: You did that with D, and Tango at that.
18:46:11 <alise> And Tango is possibly the worst code ever.
18:46:19 <alise> No challenge at all :)
18:46:34 <Deewiant> Tango is pretty good IMO
18:46:50 <Deewiant> The issues are mostly in the GC (which does not originate in Tango)
18:47:13 <Deewiant> And my workaround for that was to use C malloc/realloc/free :-P
18:52:17 -!- augur has joined.
19:00:08 -!- Tritonio_GR has joined.
19:07:48 -!- b3n4dd1 has joined.
19:12:48 -!- lament has joined.
19:13:43 -!- jcp has joined.
19:15:10 -!- oklofok has changed nick to oklopol.
19:17:31 -!- b3n4dd1 has left (?).
19:31:58 -!- augur has quit (Ping timeout: 264 seconds).
19:32:35 -!- lament has quit (Quit: lament).
19:38:17 -!- aschueler has joined.
19:41:50 <alise> oerjan: do you know if there is a predicate that will let me check if a certain thing is a predicate of a certain arity?
19:41:58 <alise> say I'm given foo/1, could I say foo-is-a-predicate-with-arity-1?
19:42:17 <alise> like as a test
19:42:27 <alise> ispredicate(X) :- predwitharity(X, 1)
19:42:53 <oerjan> ("barely", he said)
19:43:26 <oerjan> i distinctly recall SWI had an index
19:43:27 -!- coppro has joined.
19:43:46 <oerjan> and predicates organized by subject
19:44:58 <alise> yeah but it's hopeless to look up :)
19:45:07 <alise> i keep finding almost-but-not-quites :((
19:47:11 -!- Tritonio_GR has quit (Ping timeout: 260 seconds).
19:49:37 -!- Tritonio_GR has joined.
19:50:36 <oerjan> http://www.swi-prolog.org/pldoc/doc_for?object=section%282%2c%274.14%27%2cswi%28%27%2fdoc%2fManual%2fexamineprog.html%27%29%29
19:56:25 <oerjan> alise: ^
19:57:29 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
19:57:35 <alise> find(x) := { ircsay("oerjan: " x "?"); awaitreply() }
19:57:55 <alise> i actually stumbled upon that page before though :-D
19:58:05 <alise> though i don't see that it has what i want?
19:58:17 <oerjan> current_predicate?
19:58:35 <alise> ah
19:58:37 <alise> current_functor
19:58:43 <alise> oh, predicate would work better
19:59:04 <alise> so:
19:59:13 <alise> current_predicate(X/N), current_functor(X, 1).
19:59:14 <alise> well
19:59:15 <alise> X/1
19:59:37 <alise> oh, then current_functor is redundant
19:59:57 <oerjan> you'd think
20:00:21 <alise> ?- forall(predicate_, P, forall(empty, X, call(P,X))).
20:00:21 <alise> true.
20:00:39 <alise> forall P:A=>Prop : forall X:Empty : P X
20:00:47 <alise> where empty(_) :- fail.
20:00:51 <alise> predicate_(X) :- current_predicate(X/1).
20:00:52 <alise> and
20:00:55 <alise> forall(S,X,P) :- \+ (call(S,X), \+ call(P)).
20:01:22 <alise> you can also use forall(requirements,foo) where all variables are substituted -- this is built into SWI and so you can sweep the evil negation under the carpet
20:01:40 <alise> then:
20:01:41 <alise> ?- forall(predicate_(P), forall(empty(X), call(P,X))).
20:01:42 <alise> true.
20:03:10 <alise> nice that we have such reasoning tools in a "dumb" constraint solver
20:03:37 <AnMaster> Deewiant, you might want to update the fungicide page btw. I pushed the alternative IP list thing. Still, to really become faster I need a new funge space. But that will have to wait for a bit due to lack of time for something as complex.
20:03:43 <alise> hmm wait isn't forall(S,X,P) :- \+ (call(S,X), \+ call(P)). exists
20:04:02 <Deewiant> AnMaster: Maybe make a release?
20:04:21 <AnMaster> Deewiant, no time currently. I don't think I will make one very soon.
20:04:32 <AnMaster> messing around with sf.net, freshmeat and so on takes some time
20:06:09 <AnMaster> Deewiant, does fungicide test stack stack begin/end much? If not that might be interesting
20:06:21 <alise> (forall x, P) = (~exists x, ~P), so if \+ (call(S,X), \+ call(P)) is exists x:S, P
20:06:24 <alise> then forall is...
20:06:33 <alise> \+ \+ (call(S,X), \+ \+ call(P))
20:06:56 <alise> lol I can prove that there exists an element of the empty set such that false but not that forall elements of the empty set...
20:07:06 <alise> maybe i should just use forall
20:07:43 <AnMaster> Deewiant, remember the alternative IP list needs to be explicitly enabled. Since it turned out to use more memory for "normal" programs
20:08:01 <Deewiant> How much more?
20:08:45 <AnMaster> Deewiant, it is due to larger constant basically. For large number of threads it is insignificant
20:09:00 <alise> wait no
20:09:03 <alise> \+ (call(S,X), \+ call(P))
20:09:03 <Deewiant> How much more?
20:09:04 <alise> is right
20:09:10 <alise> "there is no example of S such that not-P"
20:09:15 <AnMaster> but I think it may hit 500 kB extra due to creating a pool to allocate from
20:09:19 <AnMaster> something around that size
20:09:43 <AnMaster> plus a small increase since it uses pointers. So 4 or 8 bytes extra per IP
20:09:48 <AnMaster> depending on pointer size
20:09:51 <alise> ?- forall(empty, X, (X, \+ X)).
20:09:51 <alise> true.
20:09:52 <Deewiant> You haven't even measured the difference and you're making it a compile-time optional optimization? Sigh...
20:09:52 <alise> heyhey, it works
20:10:09 <AnMaster> Deewiant, I have measured it. I just don't remember the values off the top of my head
20:10:24 <Deewiant> In any case, less than a megabyte...
20:10:40 <alise> I would love to see AnMaster's perfect OS. Actually, no, I really wouldn't
20:10:41 <Deewiant> Seems pointless to leave it an option
20:10:43 <alise> s/$/./
20:11:07 <AnMaster> Deewiant, yes. And on my pentium3 system (which is where I test 32-bit x86) it was measurably slower on "few threads" programs
20:11:26 <alise> hmm well
20:11:28 <AnMaster> used life.bf to test with
20:11:38 <AnMaster> ~20% slowdown
20:11:49 <alise> (\+ \+ foo(X)) is exists X such that foo(X)
20:11:55 <alise> example,
20:11:58 <alise> exists_true(X) :- bool(X), X.
20:11:59 <Deewiant> 20% for one bigger memory allocation? Makes no sense
20:12:01 <AnMaster> Deewiant, on my core 2 duo it wasn't measurably slower for life.bf
20:12:11 <alise> \+ \+ \+ \+ foo(X) = forall foo(X) then :-)
20:12:16 <AnMaster> Deewiant, correct, but I suspect cache effects
20:12:40 <alise> which doesn't work
20:12:45 <alise> eh what I have works
20:12:50 <AnMaster> Deewiant, since it wasn't measurable on a core 2 duo, some cache or branch prediction effect seems likely
20:12:58 <Deewiant> If you're worried about old small-cache processors lump it in some kind of EMBEDDED_SETTINGS :-P
20:13:14 <AnMaster> Deewiant, well, my desktop is still a sempron
20:14:08 <AnMaster> Deewiant, the systems I test on are: pentium 3 @ 996 MHz (x86), Sempron 3300+ @ 2 GHz (x86_64), Core 2 Duo @ 2.26 GHz (x86_64)
20:14:56 <AnMaster> cache sizes are: Sempron: 128 kB, Pentium 3: 256 kB, Core 2 Duo: 3072 kB
20:15:03 <AnMaster> that is according to /proc/cpuinfo
20:15:11 <AnMaster> I don't know if the last one is per-core or not
20:15:24 <AnMaster> there is one such line for each core, so it may be
20:16:10 <Deewiant> I don't think it is
20:16:22 <AnMaster> anyway, since those are the ones I have available I'm not surprised if your results doesn't match mine. Especially not for the Pentium 3 box
20:16:35 <AnMaster> does pentium 3 even do branch prediction?
20:17:41 <Deewiant> The original Pentium did branch prediction
20:18:02 <AnMaster> in my experience my pentium 3 box seems to gain a lot more from profile feedback compilation than the newer systems do.
20:18:26 <AnMaster> perhaps it's predictor is cruder
20:19:03 <Deewiant> If you had a Pentium 4 it'd probably gain even more, since they can take over a 100 cycles to recover from a misprediction :-P
20:19:21 <AnMaster> Deewiant, alas I don't have one any more. One day it's heat sink wasn't enough
20:19:30 <AnMaster> it was *charred* when I opened the case.
20:19:36 <Deewiant> :-)
20:23:02 -!- augur has joined.
20:23:57 <Gregor> http://www.youtube.com/watch?v=DQV8jUpjRm0 MINDRAPE TIME
20:25:44 <AnMaster> anyway another good reason to make the new one an option is that it isn't as well tested yet.
20:26:53 <AnMaster> Deewiant, anyway a test like {}{}{} possibly both with some data to copy and with no copy might be interesting. I assume ccbi2 will be fast with it?
20:27:33 <AnMaster> also perhaps a {-rep-}-rep that is {{{{{{{ ... }}}}}}}
20:27:39 <AnMaster> like y-rep-n I guess
20:29:09 <AnMaster> Deewiant, memory wise I know cfunge will use a lot on that, since with 32-bit cells the initial funge stack is 4 pages + a few bytes to keep track of stack top, stack array size and such
20:30:16 <AnMaster> speed wise it shouldn't do too bad. CCBI1 will probably do extremely badly, CCBI2 I have no idea. the interesting bit will be watching rcfunge[12] and language::befunge
20:31:28 <alise> oerjan: whoa
20:31:32 <alise> oerjan: my differentiator integrates too
20:31:41 <alise> well sort of...
20:31:47 <alise> ?- d(E, x, x*0+2*1).
20:31:48 <alise> E = x*2 ;
20:31:48 <alise> false.
20:31:48 <alise> ?- d(E, x, 2).
20:31:48 <alise> false.
20:31:49 <AnMaster> (there is some more optimisation I could do on memory allocation if it would turn out to be required, but I haven't seen any such cases yet)
20:31:55 -!- alise has left (?).
20:31:58 -!- alise has joined.
20:32:06 <oerjan> i expect that to be rather unreliable :D
20:32:17 <alise> oerjan: naturally; it will only accept inputs in the exact form that it outputs
20:32:19 <AnMaster> oerjan, ?
20:32:27 <AnMaster> oerjan, who was that to?
20:32:31 <alise> me
20:32:37 <oerjan> YOU WILL NEVER KNOW
20:32:42 <oerjan> darn
20:32:50 <AnMaster> oh alise I expect.
20:33:05 <oerjan> NO ONE EXPECTS ALISE
20:33:16 <AnMaster> heh
20:33:32 <AnMaster> oerjan, nice monty python reference.
20:33:46 <oerjan> LIES
20:33:59 -!- Alex3012_ has joined.
20:34:22 <alise> ?- d(E, x, 1/x*x^ (1/x-1)*1+log(x)*x^ (1/x)* ((x*0-1*1)/x^2)).
20:34:23 <alise> E = x^ (1/x).
20:34:24 <alise> JUST LIKE A MAGIC
20:35:06 <AnMaster> Deewiant, why did you make the lines dashed in the memory graphs? the light blue cfunge-32 was hard enough to see against the light grey background as it was before. Now it is near impossible
20:35:24 <AnMaster> rcfunge2 is even harder to see
20:35:30 <oerjan> he wanted the graphs to be dashing, obviously
20:35:35 <AnMaster> oerjan, hah
20:36:45 -!- Alex3012 has quit (Ping timeout: 276 seconds).
20:36:47 -!- Alex3012_ has changed nick to Alex3012.
20:38:28 <Deewiant> AnMaster: Because previously some lines were identical
20:38:41 <AnMaster> hm
20:38:47 <AnMaster> Deewiant, select more visible colours then?
20:38:57 <Deewiant> I do not select the colours, gnuplot does
20:39:07 * alise adds - differentiation
20:39:30 <alise> d(U+V, X, A+B) :- d(U,X,A), d(U,V,B).
20:39:30 <alise> whoops, spot the bug
20:39:40 <AnMaster> Deewiant, can't you give it a colour scheme by some command line option or something iirc? Also I think it selects for white bg, not gray bg
20:39:50 <AnMaster> which may cause the default to be suboptimial
20:39:52 <Deewiant> AFAIK I can't
20:40:11 <Deewiant> And yes, it does, but it unfortunately also sets a transparent bg on the svgs, which I haven't looked into fixing
20:40:21 <AnMaster> gnuplot> help colornames
20:40:23 <AnMaster> [...]
20:40:26 <AnMaster> See `set palette`, `linestyle`.
20:40:46 <AnMaster> Deewiant, seems you can.
20:41:03 <Deewiant> Set palette looks complicated.
20:41:34 <AnMaster> Deewiant, so it does
20:42:18 <AnMaster> Deewiant, on the other hand, gnuplots docs generally looks complex. Due to being quite verbose I guess.
20:42:49 * alise adds sin, cos, log differentiation...
20:45:07 <AnMaster> Deewiant, but yes, with sane colours for that background (and probably ones that work reasonably for white too, you might want to view it directly, I do when firefox decides to make it small) non-solid lines is indeed better.
20:45:18 <AnMaster> but the current colours are piss poor.
20:45:52 <Deewiant> For postscript I had a sed that replaced a yellow (yellow on white! completely invisible) in the .ps with an earlier-used colour (which was fine for dashed)
20:46:09 <AnMaster> Deewiant, hm.
20:46:22 <AnMaster> Deewiant, you could do sed for svg too
20:46:24 <Deewiant> Do you have issues with other colours than the cyan? :-P
20:46:56 <AnMaster> Deewiant, well, the one for rcfunge2 is even worse than the one for cfunge-32,
20:47:42 <AnMaster> Deewiant, plots/horizontal-p.b98/10000000/line-memtime.svg show some rcfunge-like effects for ccbi2 it seems? Any idea why?
20:47:43 <Deewiant> Ah right, that yellow.
20:47:56 <AnMaster> Deewiant, no rcfunge1 is yellow
20:48:12 <AnMaster> Deewiant, stinkhorn is quite bad too
20:48:17 <AnMaster> the colour I mean
20:48:26 <Deewiant> Right, that yellow is the one I meant.
20:48:39 <Deewiant> IMO the rcfunge2 one is fine
20:48:47 <AnMaster> but yeah: cfunge-32, rcfunge2 and stinkhorn are near invisible. (well not rcfunge2 when it goes up/down/up/down)
20:49:06 <Deewiant> I can see rcfunge2 very clearly :-P
20:49:06 <AnMaster> Deewiant, this is on my desktop display
20:49:09 <AnMaster> let me try my laptop
20:49:16 <AnMaster> it has worse colour reproduction
20:49:19 <Deewiant> But yes, monitors and eyes vary so meh
20:49:40 <AnMaster> well depends on angle of viewing
20:49:50 <AnMaster> my desktop monitor has pretty wide viewing angle
20:49:53 <Deewiant> That too, yes
20:49:56 <AnMaster> much wider than my laptop
20:50:16 <Deewiant> All in all colours in SVGs should be selectable by the web browser just like they are for text :-P
20:50:31 <AnMaster> Lenovo didn't waste money on two things at least: the built in speakers and the screen
20:50:47 <AnMaster> Deewiant, eh?
20:51:10 <Deewiant> text in HTML*
20:51:13 <AnMaster> Deewiant, oh btw, that red of ccbi1 is of varying width on my laptop
20:51:17 <AnMaster> unlike on my desktop
20:51:38 <AnMaster> as in, it is thinner when it goes horizontally than when it climbs
20:51:53 <alise> http://pastie.org/913291.txt?key=lbuqu2b1boebwbep7707iq woot
20:51:58 <alise> what fun toys.
20:52:00 <AnMaster> Deewiant, could be due to higher DPI in the laptop perhaps?
20:52:04 <alise> well, toy, singular.
20:52:05 <AnMaster> Deewiant, or older firefox
20:52:22 <Deewiant> AnMaster: It looks such here. Don't know why, don't really care.
20:52:25 <alise> oh, look: foo no longer works.
20:52:28 <alise> I don't really care, though
20:52:36 <AnMaster> Deewiant, hm
20:52:58 <alise> http://pastie.org/913294.txt?key=mef5jrherk5iytbbn98kyg
20:53:11 <AnMaster> Deewiant, any idea about that rcfunge-ish allocation pattern for ccbi2 in plots/horizontal-p.b98/10000000/line-memtime.svg though? Something related to the gc?
20:53:18 <AnMaster> (I assume you use the gc in some parts still?)
20:55:07 <AnMaster> Deewiant, btw in the table below it indicates it ran more runs with ccbi2 than with cfunge? why? It doesn't seem to be "run as many times as possible until timeout" because it doesn't add up to the timeout
20:55:16 <AnMaster> both cut off way below that
20:55:21 <Deewiant> Have you read the rankings page?
20:55:21 <AnMaster> seems unfair :/
20:55:31 <AnMaster> Deewiant, yes but I don't remember anything about that bit
20:55:36 <Deewiant> Read it again.
20:57:48 <alise> yay my derivative works for a complex expression... well
20:57:51 <alise> with a large margin of error
20:58:04 <alise> 3015981 ~= 3.01298e+06
20:58:09 <AnMaster> Deewiant, not mentioned on the main rankings page(?) I'm talking about the "ran" column for individual problems sizes for a given problem-
20:58:13 <AnMaster> s/-$/./
20:58:40 <AnMaster> Deewiant, like the last table at http://users.tkk.fi/~mniemenm/befunge/fungicide-rankings/horizontal-p.b98.html
20:58:41 <Deewiant> Right, it's under "Measurements" on the Fungicide page
20:59:03 <AnMaster> Deewiant, you said the *rankings* page just a few lines ago
20:59:10 <AnMaster> not odd I couldn't find it then
20:59:22 <Deewiant> Yes, my mistake
21:00:11 <AnMaster> "If the time was less than a minute, it is run once more. This result is discarded. (A sort of cache-cleaning thing between the memory and time measurements.) Then, ten time-measured runs are performed."
21:00:29 <Deewiant> Yes and?
21:00:32 <AnMaster> eh, why only the disarcd-run for that. Why not for the larger sizes too?
21:00:39 <Deewiant> Because it'd take forever
21:00:58 <AnMaster> Deewiant, did that discarded run change the timing at all btw?
21:01:01 <Deewiant> If it takes 3 hours to run I'm not going to run it three times just to watch it timeout
21:01:03 <AnMaster> timings*
21:01:23 <Deewiant> Maybe a bit
21:01:31 <Deewiant> Can't remember, may not've looked at it
21:02:28 <AnMaster> should have tested that before IMO. Seems silly to do it without any indication of that it is actually needed ;P
21:03:17 <Deewiant> It seems sensible since there are likely some cache effects due to the memory-measuring process
21:03:21 <AnMaster> Deewiant, anyway, yn-rep and y-rep-n will be a bit faster too now than what is shown in the rankings
21:04:03 <Deewiant> I decided to it before finding out that some things take eons to run
21:04:12 <AnMaster> hah
21:04:15 -!- lament has joined.
21:04:21 <Deewiant> So then I dropped it for the longer times
21:04:33 <Deewiant> Why is there porn in the /topic, by the way?
21:04:46 <AnMaster> weird
21:04:48 <Gregor> Why would there ever not be?
21:05:01 <AnMaster> Deewiant, well that would be ccbi1, rcfunge, language-befunge and pyfunge?
21:05:03 <Deewiant> I don't know, it just hasn't always been there
21:05:07 <AnMaster> (not the pron, no)
21:05:26 <AnMaster> I guess stinkhorn for the y stuff too
21:05:29 <Gregor> It's either my fault or augur's fault :P
21:05:35 <Deewiant> It's augur's
21:07:41 <Deewiant> AnMaster: Re. the jittery memory allocation it could even be seeing something in the middle of a realloc
21:08:10 <Deewiant> But no, can't obviously say for sure what it's about
21:08:41 <alise> if I use cut to stop my program erroring, that's bad isn't it :-)
21:08:56 <alise> augur put the pornographic material in the topic in response to the fuck the police
21:09:43 <AnMaster> Deewiant, true
21:09:54 <Deewiant> alise: I was about to say that I knew that and then I made the connection
21:10:19 -!- AnMaster has set topic: Topic closed by the moral police | fuck the police | (pics or it didn't happen) | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
21:10:26 <alise> :-)
21:10:39 <AnMaster> (after all there are minors in here)
21:10:53 <oerjan> poor innocent minors
21:11:10 <oerjan> http://pastie.org/913294.txt?key=mef5jrherk5iytbbn98kyg
21:11:11 <AnMaster> (yes I saw that about moral police, I saw the irony in that before I did the topic change)
21:11:20 <oerjan> whoops
21:11:27 <AnMaster> oerjan, yes, like ehird. Very innocent.
21:11:36 <AnMaster> oerjan, what was that?
21:11:45 <oerjan> accidental right click
21:11:50 <AnMaster> it looks more like ehird's coding style to me
21:11:58 <AnMaster> oerjan, *right* click? Not middle click?
21:12:11 <oerjan> it's what putty uses
21:12:23 <AnMaster> oerjan, you can change that in the putty settings
21:12:28 <AnMaster> to be the usual middle for paste
21:12:50 <Gregor> See, but it's my fault because I put "(pics or it didn't happen)" there :P
21:12:59 <alise> oerjan: wait what did you change?
21:13:00 <alise> oh
21:13:07 <AnMaster> oerjan, I always found anything else confusing back when I used putty
21:13:10 <alise> AnMaster: how does it look like my coding style?
21:13:14 <alise> it's how you're meant to write prolog
21:13:16 <oerjan> i don't have a middle button. in fact i don't even have a mouse here
21:13:33 <AnMaster> oerjan, what then do you have without three buttons?
21:13:48 <AnMaster> can't be a laptop, they have three buttons too nowdays don't they?
21:13:49 <oerjan> a trackpad
21:14:24 <AnMaster> oerjan, hm, my thinkpad has three mouse buttons. Wait actually it has three buttons on the upper set (meant for use with the trackpoint) but two for the lower set (meant for use with the touchpad)
21:14:33 <AnMaster> never noticed that before
21:14:34 -!- augur has quit (Ping timeout: 264 seconds).
21:14:36 <alise> middle /mouse/ button
21:14:49 <AnMaster> I guess it is because I hardly ever use the touchpoint
21:14:49 <alise> AnMaster: so how is it my coding style :))
21:14:52 <AnMaster> err
21:14:56 <AnMaster> touchpad
21:15:03 <AnMaster> that was an interesting mix up of the words
21:16:25 -!- Alex3012 has quit (Ping timeout: 265 seconds).
21:16:29 <AnMaster> I don't think I'm going to unignore alise after yesterday. For a long time. This way the channel is a lot nicer.
21:16:39 <alise> oh i remember
21:16:52 <alise> because of all those... "personal attacks"
21:16:56 <AnMaster> Plus he doesn't seem to speak so much nowdays, so I don't seem to be getting the "missing half convo" bit
21:16:58 <AnMaster> :)
21:17:09 <alise> doesn't speak so much? Because I'm fucking imprisoned monday-to-friday?
21:17:15 <alise> You complete and utter asshole.
21:17:30 <alise> And the obligatory condescending smiley face...
21:17:39 <alise> what a fucktard.
21:17:55 <AnMaster> Deewiant, btw, it looks like nothing hit the memory limit. Is that correct?
21:17:59 <Deewiant> alise: You've only been ignored since yesterday, so it seems he's talking about today.
21:18:14 <Deewiant> AnMaster: IIRC yes
21:18:40 <alise> Deewiant: "He doesn't seem to speak so much nowadays" -- that seems more like a general statement to me.
21:18:51 <AnMaster> Deewiant, I wonder if with longer timeout, ccbi1 might have hit it.
21:19:04 <Deewiant> alise: Maybe, but the half convo thing could only happen today.
21:19:07 <alise> Not that I am particularly interested in discussing the broken reasoning of an idiotic asshole.
21:19:15 <alise> Deewiant: Well, you only get half-convo things if I'm actually there to talk.
21:19:16 <Deewiant> AnMaster: Of course with longer timeout a lot of things could've hit it :-P
21:19:18 <alise> Less me, less half-convos.
21:19:21 <alise> Less issue with ignoring me.
21:19:24 <alise> That is how I parsed it.
21:19:34 <AnMaster> Deewiant, well, only those who ended due to timeout obviously
21:19:52 <AnMaster> did a lot of things do that? The graph on the main page shows them as non-completed doesn't it?
21:20:28 <Deewiant> Yes.
21:21:02 <AnMaster> hm
21:21:29 <AnMaster> Deewiant, was cfunge and ccbi2 the only ones to not time out on any tests? It looks from the graph like stinkhorn timed out on a few
21:21:42 <AnMaster> but not from the table below where it says it ran 74
21:22:07 <Deewiant> There's a "maximum time" column, you know
21:22:09 <AnMaster> Deewiant, which one is wrong, or alternatively: why are they different?
21:22:18 <Deewiant> And "ran" is described immediately above the table
21:22:21 <AnMaster> Deewiant, what is time ratio btw?
21:22:39 <Deewiant> Ratio to minimum; I was hoping that was obvious
21:22:44 <AnMaster> Deewiant, and why are there multiple time ratio columns?
21:22:55 <Deewiant> I was hoping that was obvious too; one for total, one for max
21:23:02 <AnMaster> Deewiant, well it wasn't
21:23:11 <AnMaster> perhaps wider lines between to group them+
21:23:14 <AnMaster> s/+/?/
21:24:02 <AnMaster> Deewiant, shouldn't total time say timeout as well?
21:24:18 <Deewiant> No, it just adds the timeout value
21:24:27 <Deewiant> So that they can still be compared
21:24:35 <AnMaster> hm okay
21:25:18 <AnMaster> from mycology results page:
21:25:25 <AnMaster> "In Mycology terms, both 1.27 and 2.02.00 are unfortunately limited by their mistreatment of form feeds: as far as I can tell, they are considered to terminate the file in Befunge mode, when they should be ignored. (Perhaps they increment the z-coordinate even in Befunge?)" <-- iirc yes that was what happened
21:25:29 <AnMaster> when I checked it
21:25:36 <AnMaster> don't remember for sure
21:26:07 <AnMaster> Deewiant, does mycology check that the trefunge instructions reflect in befunge btw?
21:26:38 <Deewiant> Hmm, I don't think it does
21:27:01 <AnMaster> Deewiant, maybe it should. It could lead to some amusing results with some interpreters I bet
21:27:20 <AnMaster> of course, rcfunge just *might* do the right thing there.
21:27:36 <Deewiant> I doubt it would, with the current limited set
21:27:45 <AnMaster> Deewiant, hm?
21:27:46 <Deewiant> Rc/Funge-98 would die due to the form feed first anyway
21:27:55 <Deewiant> And I'm pretty sure the others all handle it correctly
21:28:18 <AnMaster> Deewiant, well you could test it before the form feed. Didn't you say you were using { and } to make the fingerprint tests position independent?
21:28:34 <Deewiant> Yes, the fingerprint tests, but not everything
21:28:39 <AnMaster> hm okay
21:28:54 <Deewiant> And yes, I could, but why bother? :-P
21:28:59 <AnMaster> true
21:29:08 <AnMaster> Deewiant, what other interpreters do trefunge as well?
21:29:30 <Deewiant> Of decent ones or of all? :-P
21:29:41 <AnMaster> Deewiant, of ones currently listed on mycology page
21:29:51 <Deewiant> CCBI and Rc/Funge-98
21:30:09 <AnMaster> Deewiant, I kind of miss the old wider-than-browser-even-when-maximised table
21:30:20 <Deewiant> It's still there in the old results :-P
21:30:34 * AnMaster goes there for nostalgia
21:30:46 <alise> rc 1 or 2?
21:30:49 <Deewiant> Both
21:30:55 <AnMaster> both what?
21:30:55 <alise> it seems mkry still has handed over the project.
21:31:01 <alise> maybe he is dead after all :/
21:31:05 <AnMaster> oh to alise?
21:31:10 <alise> AnMaster: Whoops, there goes a half conversation!
21:31:12 <alise> Tricky things those.
21:32:32 <AnMaster> Deewiant, anyway, when will you update the fungicide results for cfunge wrt. the fork test
21:32:52 <Deewiant> When you'll make a release, mayhap
21:33:02 <AnMaster> Deewiant, "mayhap"? I need more definite than that
21:33:12 <alise> THIS IS IMPORTANT TO MY BUSINESS
21:33:21 <Deewiant> Toss me a few euros and I'll do it tomorrow morning
21:33:26 <AnMaster> Deewiant, har
21:33:33 <alise> ...but my business has no money
21:33:59 <AnMaster> Deewiant, I might make a release tomorrow if I have some time left over then
21:34:19 <AnMaster> I presume you will do it then at least during the next weekend
21:35:14 <AnMaster> but it shouldn't take long now. Some tests indicate it is slightly slower than stinkhorn at fork now. And yes a new funge space is the next major thing I will do. No idea when
21:35:27 <AnMaster> Deewiant, oh and I bet efunge would get timeout from it. So pointless to test that even
21:44:42 -!- kar8nga has quit (Read error: Connection reset by peer).
21:48:09 -!- oerjan has quit (Quit: Good night).
21:59:02 -!- Oranjer has joined.
22:02:46 -!- Oranjer has left (?).
22:23:34 -!- Oranjer has joined.
22:25:20 <Ilari> Ugh. And now I would need sound over network... :-/
22:26:07 <Ilari> I don't have available speakers and volume is not enough for wireless headphones... :-/
22:31:57 <AnMaster> Ilari, eh?
22:32:05 <AnMaster> "and volume is not enough for wireless headphones"?
22:32:23 <AnMaster> Ilari, as in, the music is so faint it can't be heard over bluetooth or what? ;P
22:33:00 <AnMaster> Ilari, however, both pulseaudio and jack have network parts
22:33:05 <AnMaster> also plain alsa
22:33:21 <Ilari> The volume is so low (and mixer master / mixer PCM is at max) that playback isn't stable.
22:33:24 <AnMaster> I never tried that though, was going to use jack but never had time for it
22:33:33 <AnMaster> Ilari, that sounds weird
22:33:42 <AnMaster> Ilari, why would it not be stable over bluetooth
22:33:59 <AnMaster> does it shut down when there is no music or something?
22:34:13 <AnMaster> and then have a significant start up time?
22:34:15 <Ilari> These headphones need certain minimum volume for stable playback. Yes, it shuts down otherwise.
22:34:29 <AnMaster> Ilari, don't you have any wired headphones?
22:34:46 <Ilari> I guess all wired headphones are broken...
22:35:14 <Ilari> It starts up again very fast. What is nastier is that if it shuts down on weak signal, headphones will blast static at high volume.
22:35:15 <AnMaster> http://alsa.opensrc.org/index.php/Network http://wiki.audacityteam.org/wiki/Recording_audio_playing_on_the_computer#Using_the_ALSA_PCM_file http://www.alsa-project.org/main/index.php/Matrix:Module-aloop
22:35:18 <AnMaster> those links may help
22:35:38 <AnMaster> the last one is only needed for some hardware
22:35:48 <AnMaster> basically those without a mixer capture option
22:35:52 <Ilari> Of course, if signal is too weak, it won't start up again.
22:36:12 <AnMaster> Ilari, stupid that it blasts static like that
22:36:16 <AnMaster> I wouldn't use them at al.l
22:36:19 <AnMaster> at all*
22:36:23 <AnMaster> sounds dangerous
22:36:39 <alise> <Ilari> It starts up again very fast. What is nastier is that if it shuts down on weak signal, headphones will blast static at high volume.
22:36:41 <alise> yeah that happened to me
22:36:46 <alise> then i realised that they just sound like fuzz anyway
22:36:47 <AnMaster> Ilari, you could also increase the sound volume of course that you transmit with. What produces the sound?
22:36:48 <alise> and stopped using them
22:37:57 -!- impomatic has joined.
22:40:04 <impomatic> Boxx looks interesting http://web.archive.org/web/20080319024539/boxx.origincode.com/docs.php
22:42:22 <AnMaster> impomatic, yay, light gray on white bg
22:42:25 <AnMaster> :/
22:42:36 <AnMaster> oh wait, it is light gray on *lighter* gray
22:42:38 <AnMaster> even worse
22:42:46 <AnMaster> basically unreadable page
22:43:21 <impomatic> Haven't you got a bookmarket to fix readability?
22:44:40 <AnMaster> impomatic, no? I use firebug in those cases
22:44:47 <AnMaster> but I'm not interested enough
22:44:52 <impomatic> :-)
22:51:29 <Ilari> Hmm... Got somewhat stronger signal. Don't know if it is powerful enough. :-/
22:51:48 -!- MizardX has quit (Ping timeout: 276 seconds).
22:55:17 <AnMaster> Ilari, stronger signal?
22:55:25 <AnMaster> as in kill -SIGUSR1?
22:55:40 <AnMaster> oh wait
22:55:43 <AnMaster> that was music
22:55:50 * AnMaster confused Ilari with impomatic
23:06:02 -!- MigoMipo has quit (Remote host closed the connection).
23:10:55 -!- jix has quit (Ping timeout: 245 seconds).
23:17:33 -!- jcp has joined.
23:19:19 -!- FireFly has quit (Quit: Leaving).
23:21:00 -!- jix has joined.
23:39:13 -!- tombom_ has quit (Quit: Leaving).
23:41:04 -!- Tritonio_GR1 has joined.
23:43:40 -!- Tritonio_GR has quit (Ping timeout: 258 seconds).
←2010-04-09 2010-04-10 2010-04-11→ ↑2010 ↑all