←2008-07-15 2008-07-16 2008-07-17→ ↑2008 ↑all
00:03:22 <AnMaster> night
00:21:37 <tusho_> oklopol:
00:35:23 -!- Corun has changed nick to Coreina.
00:45:04 -!- Coreina has changed nick to Corun.
00:47:21 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:50:09 -!- CakeProphet has joined.
01:25:53 -!- sebbu2 has changed nick to sebbu.
01:32:43 -!- ihope has joined.
01:34:57 * ihope comes and sees
01:35:16 <tusho_> ?
01:35:21 <oerjan> O_O oh noes! he knows about us!
01:35:47 * ihope chases oerjan while screaming, "IT'S GOOD FOR YOU!"
01:37:05 <oerjan> BUT I'M ALLERGIC TO IT!
01:37:28 <ihope> Oh.
01:37:34 * ihope switches vegetables
01:37:35 * ihope chases oerjan while screaming, "IT'S GOOD FOR YOU!"
01:37:40 -!- tusho_ has quit (Client Quit).
01:37:47 <oerjan> BUT IT'S YUCKY!
01:37:56 <oerjan> AND IT MOVES!
01:38:50 <ihope> Eating crunchy vegetables is good for me, and it's good for you, so eat them too, something about the bunch! Three cheers for me, Captain Vegetable! Crunch, crunch, crunch!
01:39:20 * oerjan eats Captain Vegetable to end this travesty
01:39:53 <oerjan> Yay, Crunchy!
01:40:41 <ihope> My name is Oerjan, and I like coerjan / If it's... um, poured on, gimme some coerjan!
01:41:52 * oerjan wonders what the original of that was
01:43:08 <ihope> My name is Andy/Eddie, (and) I like candy/spaghetti / If it's handy/ready, gimme (some) candy/spaghetti!
01:43:43 <ihope> Add and and some to taste. And make sure the syllable count remains the same, and all.
01:48:51 <oerjan> just don't get Huck involved in this
01:57:21 -!- puzzlet_ has changed nick to puzzlet.
02:32:18 <GregorR> I think I'm allergic to my damn shoes.
02:32:23 <GregorR> That's pair #4
02:32:28 <GregorR> I'm so tired of shoes.
02:33:25 <ihope> Don't wear shoes.
02:33:34 <ihope> Find public places that don't say "no shoes, no service".
02:33:45 <GregorR> I find walking on gravel to be unpleasant without shoes.
02:34:02 <oerjan> clearly you need to walk upside down, since you like hats
02:35:31 <ihope> You'll get used to it.
03:00:44 <pikhq> I find that developing hobbits-feet is handy.
03:08:32 -!- Corun has quit ("This computer has gone to sleep").
03:12:59 -!- poiuy_qwert has joined.
03:15:14 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
04:03:23 -!- oerjan has quit ("leaving").
04:11:22 <CakeProphet> :D
04:11:38 <CakeProphet> I grow weary of working
04:11:39 <CakeProphet> perhaps
04:11:46 <CakeProphet> I should create a robot
04:11:48 <CakeProphet> that works for me
04:12:25 <CakeProphet> Surely there's some mindless task that people still pay other people to do... that I could automate into a bot.
04:30:16 <ihope> Surely.
04:30:24 * ihope ponders
04:30:29 <ihope> Zamboni driving.
05:12:46 -!- pikhq has quit ("leaving").
05:31:41 -!- poiuy_qwert has quit.
05:49:15 -!- GreaseMonkey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:15:03 <AnMaster> Deewiant, I got an issue, I think my V and S in STRN are correct (checked what it pushes with gdb), mycology however doesn't agree
08:15:34 <AnMaster> BAD: "0987654321"VS isn't 1234567890
08:15:41 <AnMaster> that would in the end push the string again
08:16:28 <AnMaster> are you sure the mycology check is correct?
08:18:41 <Deewiant> one can never be sure of anything
08:18:53 <AnMaster> Deewiant, bbiab, going to swim
08:18:57 <Deewiant> it's open source you know, just check what it checks for and check that it's right :-P
08:32:02 -!- lilja has joined.
08:46:39 -!- CakeProphet has quit (Remote closed the connection).
08:47:10 -!- CakeProphet has joined.
09:21:17 <oklopol> i recall getting quite strange looks when walking to the shop in the winter without shoes on
09:21:30 <oklopol> used to dislike shoes a lot
09:23:02 -!- Judofyr_ has joined.
09:23:28 <oklopol> think i went one whole summer without shoes, after which shoes actually hurt... not sure why, perhaps a psychosomatic thing
09:28:33 <oklopol> ah, i'd forgotten how nice the c++ template system actually was
09:28:42 <oklopol> it's just so convenient
09:40:22 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
09:41:38 -!- Judofyr_ has left (?).
09:42:15 -!- lilja has quit (Read error: 104 (Connection reset by peer)).
09:48:55 <AnMaster> <oklopol> ah, i'd forgotten how nice the c++ template system actually was
09:49:02 <AnMaster> BLERGH
10:03:08 <AnMaster> Deewiant, actually it was an off by one error on my side
10:04:51 <AnMaster> Deewiant, hrrm my my mycouser STRN always fails to load, I guess this isn't the last version?
10:11:48 <Deewiant> if there's an "r" instruction somewhere there then it's one of the versions where I forgot an "r" where a "(" should be
10:12:32 <AnMaster> ah
10:12:38 <AnMaster> right there was an r
10:15:24 <oklopol> http://www.vjn.fi/pb/p134452546.txt <<< changed phase rules a bit, you can now be in multiple states
10:15:32 <oklopol> always is just a boolean variable that evaluates to true
10:15:41 <oklopol> so the phase always: is always on
10:16:08 <AnMaster> oklopol, huh is that for a programming language
10:16:16 <oklopol> yeah
10:16:56 <AnMaster> oklopol, hello world in it please
10:16:57 <oklopol> that should be a fully legal program in it, except it would do nothing unless actually piped into something that knows how to do the primitive operations
10:17:10 <oklopol> you can't output
10:17:14 <AnMaster> ah ok
10:17:16 <oklopol> well
10:17:25 <oklopol> it's really a language template
10:17:53 <AnMaster> turing complete language?
10:17:57 <oklopol> i can choose print to be a member variable that's printed
10:18:09 <oklopol> the program would then be first => print "Hello world!"
10:18:28 <AnMaster> oklopol, ok... what sort of language is this?
10:18:30 <oklopol> so it would once, when the program starts, set print to "Hello world!", then do nothing more
10:18:41 <oklopol> it's a declarative language disguised as event-based
10:18:47 <AnMaster> ah
10:18:50 <oklopol> basically condition => result
10:19:05 <oklopol> but it's kinda OO, you're always describing an object
10:19:12 <AnMaster> bbiab food
10:19:23 <oklopol> that changes its state and it's member variables
10:19:33 <oklopol> it's designed for making bot ai's
10:19:54 <oklopol> basically, that would be the thing that changes the bot's state, and queries its surroundings
10:20:23 <oklopol> the actual physics / graphics for a game, or things like that, would be supplied in another language
10:20:55 <oklopol> although you could of course make a language over Ob to give you the graphics shit too
10:21:21 <oklopol> but it always needs to be plugged into something eventually, as there is no preset IO functionality
10:21:47 <oklopol> it's kinda purely functional, although completely imperative, except, of course, entirely declarative.
10:22:39 <oklopol> well it's not really purely functional in any way :P
10:22:46 <oklopol> just got caught up in the moment or something
10:23:27 <oklopol> about tcness, i have a forall construct /X in the language, so it's superturing :P
10:23:47 <oklopol> and an exists construct, \X
10:25:28 <oklopol> you can do something like {/X: \Y: (length Y) > 1 && (product Y) = X} to test if all numbers are composite
10:26:04 <oklopol> although it doesn't actually have functions yet
10:28:55 <oklopol> hmm, actually i'm wrong, it already has functions
10:29:18 <oklopol> actually also boolean equality checks are basically calling booleans with other booleans
10:29:36 <oklopol> state killing: is equal to state = killing:
10:29:55 <oklopol> it's just englishier to drop the =
10:30:57 <oklopol> the language is quite flexible, implicit comments, whitespace based nesting, explicit nesting & lines separators, whitespace based operator precedence
10:31:00 <oklopol> all that shit
10:31:33 <oklopol> i haven't really made languages without whitespace based operator precedence after "inventing" it when making graphica
10:31:51 <oklopol> not that it's complex enough to need inventing, more like found its sexiness
10:39:57 <AnMaster> back
10:40:12 <oklopol> (now adding objects without changing syntax, god i'm perverted)
10:40:21 <oklopol> basicaly
10:40:23 <oklopol> *basically
10:40:41 <oklopol> i was thinking objects could be created by "calling" a phase.
10:40:43 <oklopol> so
10:40:59 <AnMaster> <oklopol> it's kinda purely functional, although completely imperative, except, of course, entirely declarative. <-- haha
10:41:03 <oklopol> if you have the phase "object human:"
10:41:12 <AnMaster> "superturing"?
10:41:20 <oklopol> which would normally become active when the variable object is set to human
10:41:23 <oklopol> err
10:41:23 <oklopol> yeah
10:41:34 <oklopol> superturing, can evaluate H()
10:41:39 <oklopol> anyway
10:41:47 <AnMaster> H()?
10:41:51 <oklopol> if you have the "object human:" phase
10:41:52 <oklopol> err
10:41:55 <oklopol> halting test
10:41:58 <oklopol> anyway
10:41:58 <AnMaster> ah
10:42:00 <oklopol> if you have the "object human:" phase
10:42:03 <AnMaster> yes?
10:42:06 <oklopol> and you do something like
10:42:15 <oklopol> myHuman = object human
10:42:34 <oklopol> it will actually start a new thread that executes the code in the object human phase
10:42:43 <AnMaster> oh my
10:42:50 <oklopol> and you get an id that links to that thread
10:42:55 <oklopol> which is basically an object
10:43:43 <oklopol> wait a mo, i'll add "movement" to that guy i just defined, by using it as an object in another environment
10:44:06 <AnMaster> oklopol, so what about thread sync?
10:44:10 <AnMaster> like mutexes?
10:45:45 <AnMaster> oklopol, are you got at perl regex?
10:46:00 <AnMaster> I forgot the syntax for a negative lookbehind
10:46:24 <fizzie> (?<!foo)
10:46:28 <AnMaster> thanks
10:46:39 <fizzie> Only fixed-width contents, though.
10:46:45 <AnMaster> yeah I know that
10:47:18 <AnMaster> I just wanted to find any american spelling in my source, so I grepped for ize, but "size" matches that too
10:47:39 <AnMaster> pcregrep '(?<!s)ize' $(find src -name '*.c')
10:47:40 <AnMaster> :D
10:48:18 <fizzie> [^s]ize probably would've been easier; of course it's not the same since it won't match if you've got a line starting with "ize", but I hardly think that's a real issue.
10:48:38 <AnMaster> fizzie, I could have one with size as well as normalize
10:48:41 <AnMaster> in fact I had one
10:48:58 <AnMaster> wait that would still match
10:49:13 <fizzie> Well, I guess you'd miss things like "resize", but...
10:49:22 <AnMaster> that one would be size too
10:50:31 <oklopol> http://www.vjn.fi/pb/p565145255.txt
10:50:45 <oklopol> AnMaster: i'm working at a much higher level than thread sync
10:50:55 <AnMaster> oklopol, ah
10:50:55 <oklopol> the threads cannot be just "threads".
10:50:59 <oklopol> i mean
10:51:01 <oklopol> if someone says something
10:51:11 <oklopol> everything that triggers @ that must be executed
10:51:56 <oklopol> there are many subtleties, the language is meant to be trivial to code, and very extendable; it is not meant to be feasible to implement :P
10:52:09 <oklopol> but it should be fast enough if used wel
10:52:11 <oklopol> well
10:52:19 <oklopol> and it's compilable, in many senses of that word
10:52:54 -!- tusho has joined.
10:52:59 <oklopol> for instance, many times you can leave the explicit type of X out, because the fact X.name is used makes it possible to optimize X to a human variable
10:53:31 <tusho> hi ais523
10:53:34 <oklopol> this is because fields are not first class, and it can easily be deduced the global object will never set its name field to anything
10:53:37 <tusho> (that was intentional)
10:53:41 <oklopol> we know
10:53:47 <oklopol> too slow not to
10:54:15 <oklopol> tusho: read my rant about ob if you have the... err.. guts?
10:54:21 <tusho> oklopol: link to logs?
10:54:26 <oklopol> hehe
10:54:28 <tusho> also
10:54:33 <tusho> you should totally make fields first class.
10:54:46 <oklopol> http://bespin.org/~nef/logs/esoteric/
10:54:52 <oklopol> why is that?
10:55:02 <tusho> 'cause nobody's done it before oklopol
10:55:09 <AnMaster> oklopol, you know of applescript?
10:55:13 <oklopol> you can do that in oklotalk...
10:55:26 <tusho> oklopol: just field nams
10:55:28 <tusho> not field
10:55:28 <AnMaster> oklopol, your language looks too much like English :(
10:55:29 <tusho> s
10:55:36 <tusho> AnMaster: ob does not look lik eenglish dude
10:55:45 <oklopol> AnMaster: they're comments
10:55:51 <AnMaster> hm
10:55:53 <AnMaster> ah
10:55:59 <oklopol> you can remove all the english, it's no
10:56:00 <oklopol> nop
10:56:05 <AnMaster> oklopol, so what string marks it as a comment?
10:56:12 <oklopol> nothing
10:56:17 <oklopol> that's what marks it
10:56:19 <tusho> AnMaster: invalidness is ignored I imagine
10:56:20 <AnMaster> um
10:56:22 <AnMaster> ah
10:56:22 <tusho> like intercal
10:56:25 <AnMaster> right
10:56:28 <tusho> it's certainly esoteric
10:56:28 <tusho> :)
10:56:41 <tusho> also, I like how you say it's too close to english
10:56:43 <tusho> " Implicit always condition for toplevel definitions. SeeFood is not a lambda, but basically a
10:56:43 <tusho> string substitution, which by default uses X for what's bound. A slight difference is seen when
10:56:43 <tusho> a condition variable like seeFood is negated, where an implicit "forall X" is added."
10:56:45 <tusho> that's not "close" :)
10:57:13 <oklopol> => is for an event, : in the end is for a phase, := or = is for setting a variable
10:57:15 -!- timotiis has joined.
10:57:15 <oklopol> otherwise ignored
10:57:59 <oklopol> perhaps a language should be made where programs are sentences explaining the language in english :P
10:58:33 <oklopol> the implicit forall is actually quite impure when explained like that
10:59:15 <oklopol> actually, even as a concept it's kinda impure
10:59:34 <oklopol> hmm
10:59:50 <oklopol> actually not, i guess
11:00:01 <oklopol> if we forget all practicality for a moment
11:00:15 <oklopol> now
11:00:22 <oklopol> condition X => result
11:00:37 <oklopol> means that we try to find an X such that for that value of X condition is true
11:00:56 <oklopol> usually this is trivial, but condition here can be any expression, so it can be impossible just as well
11:01:01 <oklopol> now if we do
11:01:34 <oklopol> !(condition X), we should actually choose an X such that this is not true
11:01:42 <oklopol> and clearly this is what is often wanted
11:02:03 <oklopol> like, condition X && !(X\human)
11:02:39 <oklopol> wait, father called...
11:06:37 -!- GreaseMonkey has quit ("Remote closed the previous member app").
11:06:40 <oklopol> okay, i'll continue
11:06:43 <oklopol> basically
11:06:50 <oklopol> if the implicit forall was used here
11:07:36 <oklopol> then this would be always false, if there were any humans, because for some X's, the latter thingie, !(X\human), would be true
11:07:51 <oklopol> so clearly we usually want an implicit existential quantification
11:07:58 <oklopol> like in functional programming
11:08:17 <oklopol> well in functional programming the existential quantification is just pattern matching, prolog is a better example
11:09:11 <tusho> oklopol: ic ic
11:09:27 <oklopol> but, anyway, i'm going for intuitive in these kind of cases
11:09:42 <oklopol> for most situations, it should do what a stupid programmer might think it does
11:10:12 <oklopol> well, not because i want idiots to be able to use it, it's actually because i like compactness
11:11:39 <oklopol> anyway, the "/X: X\human => print X + " is in state " + X.state" line is not right
11:11:48 <oklopol> i'm going for "do this to all humans"
11:12:01 <oklopol> but the scope of /X would be the condition
11:12:29 <oklopol> in which case you could not actually use X on the right side, as you usually can't @ universal quantification
11:13:41 <tusho> *nos*
11:13:43 <tusho> *nod*
11:15:18 <oklopol> father called again
11:15:21 <oklopol> anyway
11:16:42 <oklopol> i'll prolly do like "/X: condition X => result" == "if for all X condition X, then result", and "/X: (condition X => result)" = "for all X for which condition X is true, evaluate result"
11:16:50 <oklopol> which is quite intuitive
11:17:20 <oklopol> basically i could just say \X: has only condition scope by default, and you could prolly guess how to extend it like that, and what it would mean
11:18:11 <oklopol> this only applies when you're using events as expressions in a result thingie
11:18:18 <tusho> oklopol: i am reading
11:18:18 <tusho> btw
11:18:20 <tusho> :)
11:18:33 <oklopol> like, when @ condition => result, result contains a (condition => result)
11:18:37 <oklopol> tusho: reading what? P:
11:18:38 <oklopol> :P
11:18:40 <oklopol> my rant?
11:18:46 <tusho> yea!
11:18:49 <oklopol> hehe :P
11:20:00 <oklopol> anyway it only applies there, because otherwise it's not actually defined what order shit happens in, although i'm going to add specific rules where there's an obvious order to do thing in
11:20:21 <oklopol> like, in case there are two conditions on field x, one of which changes x
11:20:25 <oklopol> hmm...
11:20:36 <oklopol> i guess you'd go with appearance order in that case.
11:21:07 <oklopol> i could perhaps make the evaluation order fully explicit. with the exception you could change it in cases where the result is the same
11:21:45 <oklopol> which is not all that rare, and which is quite a stupid thing to explicitly allow :P
11:22:06 <oklopol> "you can do this differently, if the result is the same" in a spec would be kinda retarded
11:22:14 <oklopol> oooooooooooooooo
11:22:32 <oklopol> i think i'm done, need to do some shopping
11:22:55 <oklopol> tusho: if you wanna know more about the actual language, i'd of course love to explain :P
11:23:08 <tusho> heh
11:23:29 <oklopol> hmm
11:23:41 <oklopol> now what if you want to call a state
11:23:55 <oklopol> perhaps every variable should implicitly be a stack :)))
11:24:02 <oklopol> so you could just d
11:24:03 <oklopol> o
11:24:08 <oklopol> state 1:
11:24:13 <oklopol> something here
11:24:16 <oklopol> state 2:
11:24:33 <oklopol> condition => push state; state 3
11:24:36 <oklopol> state 3:
11:24:40 <oklopol> condition => pop state
11:24:49 <oklopol> although as always, i don't do keywords
11:24:52 <oklopol> so prolly < and >
11:24:59 <oklopol> as prefix operators
11:25:23 <tusho> oklopol: maybe you should do a lang with some keywords
11:25:23 <tusho> just to see
11:25:31 <tusho> maybe it's awesome
11:25:32 <oklopol> well there's straw
11:25:36 <oklopol> it has a lot of them.
11:25:42 <oklopol> although you can't see that from the example
11:26:21 <oklopol> but in this language, i don't want any keywords, as the user should be able to assume everything that's ascii is either their own, or defined fully outside the language
11:26:38 <oklopol> because otherwise there's three separate things a lowercase string can represent
11:27:39 <oklopol> anyway, in oklotalk, doing A!Field yields a reference, so you *can* pass fields around
11:27:48 <oklopol> well
11:28:07 <oklopol> you can't pass !FieldName around :P
11:28:10 <oklopol> well actually
11:28:16 <oklopol> {_!FieldName}
11:29:54 <AnMaster> pixles or pixels? what is the correct spelling
11:30:03 <oklopol> pixel
11:30:11 <AnMaster> oklopol, in plural too?
11:30:15 <oklopol> pixels
11:30:18 <AnMaster> thanks
11:30:31 <oklopol> although i use the alternative form pixulos
11:30:50 <tusho> oklopol: pixelli
11:30:59 <oklopol> actually las pixulas
11:31:14 <oklopol> with a mexican accent
11:32:14 <fizzie> Pixies.
11:32:44 <AnMaster> Deewiant, there?
11:33:27 <AnMaster> Deewiant, in TOYS, should L wrap?
11:37:15 <oklopol> beware 5 lines of paste
11:37:15 <oklopol> variable stacks:
11:37:18 <oklopol> Variables can be used as stacks. This is done as Var<<Value, which evaluates to Value, and pushes Value to be Var's new value.
11:37:22 <oklopol> <<Var pops Var, evaluates to Var's current value, but any further references to Var will use whatever was Var's value before last push.
11:37:25 <oklopol> In a statement with multiple pops, or pops and normal value retrievals, all <<Var's will refer to Var's top value, and all Var's will
11:37:27 <oklopol> refer to the value under that, Var's value after the statement. Var can thus only be popped once in a statement.
11:37:31 <oklopol> tusho: opinion, please
11:37:36 <tusho> hm wot
11:37:38 * tusho reads
11:37:41 <tusho> good, good
11:37:42 * AnMaster reads too
11:37:59 <oklopol> yeah anyone can read, i just assume tusho has the most energy to care :P
11:38:06 <AnMaster> well seems good
11:38:07 <oklopol> this is usually the case
11:38:36 <tusho> i have 0 energy oklopol
11:38:37 <oklopol> i don't want many such side-effects in expressions that would require an explicit evaluation order
11:38:42 <tusho> your stuff is interesting enough, though
11:38:44 <Deewiant> AnMaster: what's L
11:38:53 <AnMaster> L ('corner') works like ' except it picks up the cell to the "left" of the IP's line and does not skip over anything. (Historians may note that this works like "Get Left Hand" did in Befunge-97.) The cell to the "left" of the IP is the IP's position, plus its delta rotated -90 degrees about the Z axis (a la [)
11:38:56 <oklopol> yay i'm interesting :))
11:38:58 <oklopol> anyway
11:39:01 <AnMaster> Deewiant, that one
11:39:23 <AnMaster> Deewiant, for that matter, should ' wrap?
11:39:28 <Deewiant> depends on your view of Funge-Space I guess
11:39:50 <oklopol> actually i think it's fully side-effect free, unless you consider the cases where you call a function outside the Ob environment, and that one has side-effects
11:39:53 <Deewiant> I think the principle is that the program is in a void surrounded by spaces
11:40:05 <Deewiant> and thus if you grab something off the edge it's a space
11:40:15 <oklopol> because you can't really make any functions... although perhaps you should... not sure
11:40:26 <Deewiant> and only if you actually move in the direction of an edge would you wrap
11:40:42 <Deewiant> it's somewhat debatable since the spec isn't clear about it, but I think that's the intent
11:40:42 <AnMaster> hrrm I think ccbi may wrap on TOYS L
11:40:46 <Deewiant> and I'm not sure what CCBI does
11:40:59 <oklopol> at least i'm not going to add anything like that, or methods, before they're needed
11:41:08 <Deewiant> since the spec isn't unambiguous about it I don't really care
11:41:52 <Deewiant> it'd be too much work to rethink a way in which everything works properly
11:44:01 <AnMaster> Deewiant, btw how would you do bitwise operations in Funge without using any fingerprints?
11:44:14 <AnMaster> say, bitwise xor or bitwise and
11:44:57 <Deewiant> x & 1 is the same as x % 2
11:45:11 <AnMaster> yes true but what about other masks than that?
11:45:21 <Deewiant> just iterate
11:45:24 <Deewiant> x >> 1 is x / 2
11:45:57 <Deewiant> so if you want x & 1101 do x % 2, then x / 4, x & 2, x / 2, x % 2
11:57:04 <oklopol> hmm
11:57:46 <oklopol> you can easily do addition recursively by toying with carries, given binary and & xor & bitshift
11:57:52 <oklopol> can you do it the other way around
11:58:06 <oklopol> with like + and *
11:58:16 <oklopol> A + B = (A ^ B) + (A & B) * 2
11:58:20 <oklopol> clearly
11:58:41 <oklopol> so we get (A ^ B) = A + B - (A & B) * 2, now can you do & with ^ and * or something?
12:01:10 <oklopol> hmm... i have an idea
12:04:10 <oklopol> damn, doesn't work
12:06:59 <tusho> beh...
12:07:15 <AnMaster> Deewiant, what about x xor y?
12:14:59 <oklopol> multiplication
12:15:08 <oklopol> or just if
12:15:19 <oklopol> it's trivial if you first cut into a list of bits
12:16:50 <AnMaster> Deewiant, I think a C function ffi in cfunge would be quite doable
12:17:03 <AnMaster> I have read docs on libffi and it doesn't see too hard
12:17:11 <AnMaster> just need to figure out how to interface it with befunge
12:18:30 <oklopol> you befunge people are mad :P
12:18:48 <AnMaster> oklopol, well intercal already got something even worse
12:18:53 <AnMaster> it's C FFI is worse
12:18:58 <AnMaster> way worse
12:19:08 <AnMaster> while mine would be quite sane in fact
12:20:45 <AnMaster> blergh, libffi can't currently call variable argument functions
12:25:10 <oklopol> i don't mean the C extension, just the fact your constantly talking about it :P
12:27:01 <AnMaster> oklopol, hm?
12:27:08 <AnMaster> I'm writing some specs for said fingerprint now
12:32:12 <AnMaster> hm
12:32:15 <AnMaster> how to handle pointers?
12:32:27 <AnMaster> marshaling structs will be hard
12:33:41 <AnMaster> say char**
12:52:23 <oklopol> char**
12:52:59 <tusho> char**
12:53:28 -!- Slereah2 has joined.
12:57:02 <oklopol> Slereah2: do it
13:02:17 -!- Corun has joined.
13:08:21 <AnMaster> ...
13:08:22 <AnMaster> haha
13:08:55 <AnMaster> does anyone want to read my draft at specs? It is likely to contain contradictions, so please point them out!
13:09:12 <AnMaster> http://rafb.net/p/u5HsHE34.html
13:09:23 <AnMaster> oklopol, tusho, Deewiant ^
13:09:35 <tusho> AnMaster: not a perfect time, sorry.
13:09:39 -!- timotiis has quit (Read error: 110 (Connection timed out)).
13:09:42 <AnMaster> hm ok
13:11:25 <AnMaster> I think I managed what is needed to handle about everthing, and if not it could call malloc amd memcpy from inside befunge to construct more advanced structures and pointers
13:15:01 -!- RedDak has joined.
13:15:08 <oklopol> int ID of function (from F).
13:15:13 <oklopol> from F? not R?
13:15:25 <AnMaster> eh R
13:15:28 <AnMaster> was a typo
13:15:43 <AnMaster> oklopol, I renamed F to R
13:16:20 <AnMaster> oklopol, issue fixed in http://rafb.net/p/sCTJCz33.html
13:17:04 <oklopol> thought so, as the inconsistence was present in the latter part too
13:17:05 <oklopol> oooooooooo
13:18:20 <AnMaster> oklopol, what do you mean with that "oooooooooo"?
13:18:31 <oklopol> oh, nothing.
13:18:38 <oklopol> anyway, looks okay.
13:18:58 -!- olsner has joined.
13:19:03 <AnMaster> :)
13:19:45 <AnMaster> now I just want Deewiant, maybe ais if he gets here, and tusho to look at it
13:19:53 <AnMaster> Deewiant, tusho: http://rafb.net/p/sCTJCz33.html
13:19:56 <oklopol> although befunge isn't exactly that great with, err, id's
13:20:12 <AnMaster> oklopol, oh? REFC already does that
13:20:19 <oklopol> is there like a variable fingerprint? i mean, so that you'd have a unary space for storing shit
13:20:24 <AnMaster> it's just a handle that is stored somewhere
13:20:35 <oklopol> refc?
13:20:39 <AnMaster> not refc
13:20:41 <AnMaster> REFC
13:20:46 <tusho> oklopol: refcount
13:20:54 <tusho> ais will get here, AnMaster
13:20:55 <tusho> it's just 1pm
13:21:03 <tusho> you're being mislead by the fact i was here at 11am
13:21:04 <oklopol> what's refcount have to do with anything?
13:21:04 <tusho> :P
13:21:05 <AnMaster> tusho, oklopol : http://catseye.tc/projects/funge98/library/REFC.html
13:21:08 <tusho> instead of 4pm
13:21:11 <AnMaster> not refcount
13:21:28 <AnMaster> oklopol, the id list will work the same here
13:22:27 <oklopol> i mean, if you load a library, and load a function out of it, you have to pass around that function id in order to call it, right?
13:23:33 <AnMaster> oklopol, yes indeed
13:23:39 <AnMaster> you could store it in some cell
13:23:43 <AnMaster> p/g intructions
13:23:47 <AnMaster> instructions*
13:24:03 <oklopol> well yeah, but those are a bit bothersome in more than 2-ary funges
13:24:31 <AnMaster> maybe, but FILE fingerprint does the same
13:24:32 <AnMaster> http://web.archive.org/web/20020816190021/http://homer.span.ch/~spaw1088/funge.html#file
13:24:36 <oklopol> i want a n-ary funge where codespace is defined with graphica
13:24:47 <AnMaster> huh?
13:24:52 <oklopol> btw. solved the problem of infinite structures i had with graphica
13:24:57 <oklopol> AnMaster: do you know graphica?
13:25:07 <oklopol> don't google
13:25:08 <tusho> GRAPHICA PSOX ESCO TRDS
13:25:15 <tusho> the best #esoteric memes, and one non-meme
13:25:18 <oklopol> :P
13:25:19 <tusho> spot the non-meme!
13:25:19 <AnMaster> oklopol, I think I heard the name before
13:25:26 <oklopol> well it's my graph definition language
13:25:36 <tusho> Correct! The non-meme is "TRDS"!
13:25:48 <oklopol> tusho: do i win if i knew that?
13:25:54 <tusho> yes
13:25:57 <oklopol> nice.
13:25:58 <oklopol> anyway
13:26:00 <oklopol> errr
13:26:15 <oklopol> does anyone know the problem with infinite structures in graphica?
13:26:24 <AnMaster> oklopol, anyway there is no sane way to do this except IDs
13:27:04 <oklopol> basically, graphica is about creating nodes, and giving them unique id's withing the namespace given to the construction, and connecting nodes to each other by either recursion, or predefined id
13:27:14 <oklopol> AnMaster: i know
13:27:18 <oklopol> that's why i asked
13:27:23 <oklopol> err
13:27:30 <oklopol> "is there like a variable fingerprint? i mean, so that you'd have a unary space for storing shit"
13:27:46 <oklopol> so, the problem with infinite structures is as follows
13:27:52 <oklopol> let's say you have an infinite grid
13:28:25 <AnMaster> ah
13:28:31 <AnMaster> I see what you mean
13:28:42 <AnMaster> no I don't think a variable fingerprint exists
13:28:55 <oklopol> it's trivial to define, just Grid = Node 0 0; Node X Y :: [] <-> Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1
13:29:14 <oklopol> so, basically, just saying create all nodes to this one, and connect to them
13:29:16 <oklopol> whoops
13:29:24 <oklopol> *Grid = Node 0 0; Node X Y :: [X Y] <-> Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1
13:29:36 <oklopol> :: [X Y] names the cell
13:29:45 <AnMaster> right
13:29:50 <AnMaster> and?
13:29:59 <oklopol> so when you get to [1 1] twice, you don't actually make it twice
13:30:04 <oklopol> now the infinite problem
13:30:06 <oklopol> there is not
13:30:08 <oklopol> in general
13:30:25 <oklopol> a way to know whether something will later on make a connection between, say, [0 0] and itself
13:30:41 <oklopol> so
13:30:43 <AnMaster> if you mean how to represent arbitrary vectors for n-funge where n may change at runtime you would need <size><x,y.z...>
13:31:01 <AnMaster> currently a *funge program using vectors at all can only be written for a specific funge
13:31:02 <oklopol> you'd have to generate all the infinite cells before you could enter [0 0]
13:31:05 <oklopol> so you'd know what it links to
13:31:11 <tusho> http://forums.xkcd.com/download/file.php?id=5799
13:31:15 <AnMaster> oklopol, eh?
13:31:43 <oklopol> now, the obvious solution is to detect when n-ary lists are being used as id's, as in this case, and just check what directions recursive calls can move
13:31:58 <oklopol> in this case, the moves are [[1 0] [-1 0] [0 1] [0 -1]]
13:32:11 <oklopol> these calls, that is: Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1
13:32:29 <oklopol> it's trivial to see there are no jumps, although this can't be done in general
13:32:30 <AnMaster> tusho, that looks like a variant of a "main page" strip
13:32:31 <AnMaster> ?
13:32:33 <oklopol> now the clever part
13:32:52 <tusho> AnMaster: yes, it's from the 'make xkcd slightly worse' thread
13:32:57 <tusho> the original has a flash of perl and no crash.
13:33:03 <tusho> (<PERL> instead of <CRASH>)
13:33:03 <oklopol> if there's only connections of the form ->, after some point in the recursion, you can always stop evaluation of the graph there
13:33:09 <tusho> (And he doesn't hit the monitor.)
13:33:11 <AnMaster> tusho, yes indeed, link to that thread?
13:33:19 <tusho> http://forums.xkcd.com/viewtopic.php?f=2&t=22741&st=0&sk=t&sd=a
13:33:30 <oklopol> because in that case, you know something may later on link to [0 0], but you know [0 0] can never be added an away-from link
13:33:32 <AnMaster> oklopol, sorry but you totally lost me quite early on and I couldn't catch up
13:33:36 <oklopol> :)
13:33:38 <AnMaster> you are too smart
13:34:06 <oklopol> "AnMaster: if you mean how to represent arbitrary vectors for n-funge where n may change at runtime you would need <size><x,y.z...>" <<< i'd prolly go for a larger change in semantics
13:34:18 <AnMaster> oklopol, oh?
13:34:28 <oklopol> so smart, so smart, nah, i'm just bad at explaining.
13:34:41 <AnMaster> it would just be the number of elements followed by the values in each dimension
13:34:42 <oklopol> where did you drop? i can try to rephrase, this is simple stuff
13:35:00 <AnMaster> like: null terminated string vs. a string prefixed by a length value
13:35:06 <oklopol> AnMaster: i get it, it's just i'd most likely have lists.
13:35:09 <AnMaster> <oklopol> *Grid = Node 0 0; Node X Y :: [X Y] <-> Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1
13:35:10 <AnMaster> there
13:35:13 <oklopol> oh, right
13:35:25 <oklopol> well there i assumed you know graphica syntax.
13:35:28 <AnMaster> oklopol, I don't
13:35:29 <oklopol> smart? i doubt that.
13:35:40 <oklopol> i'll explain, should be simple to grasp
13:35:43 <oklopol> oh
13:35:44 <AnMaster> k
13:35:50 <oklopol> that line was just the correction of the earlier one
13:35:53 <oklopol> but yeah, so
13:35:57 <oklopol> Grid = Node 0 0
13:36:00 <oklopol> this is just
13:36:16 <AnMaster> a grid?
13:36:19 <oklopol> "when you create a grid, actually create the Node 0 0, and return a reference to it"
13:36:28 <oklopol> this is a graph definition
13:36:30 <oklopol> now
13:37:07 <AnMaster> hm?
13:37:26 <oklopol> "Node X Y :: [X Y] <-> Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1" == "to create a node @ X, Y, create an id entry to the global node id table for it as [X Y], then create all nodes next to it, and interconnect this with all of them"
13:37:49 <oklopol> a bit more complex, ":: tag" just globally names the cell
13:38:12 <oklopol> "<-> smth" creates the node smth, and connects this to it, with a two-way connection
13:38:17 <oklopol> you do know what a graph is?
13:38:21 <oklopol> that's kinda important
13:38:21 <oklopol> :P
13:38:27 <AnMaster> yes I know what a graph is
13:38:33 <oklopol> good, good
13:38:38 <AnMaster> however that doesn't mean i understand it always
13:38:45 <oklopol> well
13:38:49 <AnMaster> but well I think I get it now
13:38:56 <oklopol> okay.
13:38:58 <AnMaster> oklopol, are you not defining a quadtree it seems?
13:39:05 <oklopol> quadtree?
13:39:08 <oklopol> what's that :)
13:39:19 <AnMaster> http://en.wikipedia.org/wiki/Quadtree
13:39:21 <oklopol> ah
13:39:22 <oklopol> oh no.
13:39:24 <AnMaster> actually no
13:39:32 <oklopol> that's very different
13:39:33 <oklopol> see
13:39:42 <AnMaster> you are defining something like each cell is connected to each other
13:39:46 <AnMaster> so not a tree
13:39:59 <oklopol> the thing about graphica is, the seemingly treeform structure actually becomes an arbitrary graph, because you can name cells.
13:40:33 <oklopol> and yeah
13:40:40 <oklopol> i'm doing exactly that
13:40:44 <oklopol> it's a 2d grid actually
13:41:04 <AnMaster> right
13:41:14 <AnMaster> oklopol, all of it have to be allocated right now?
13:41:21 <AnMaster> or is it allocated as needed
13:41:30 <oklopol> well
13:41:32 <AnMaster> (remember I'm a C programmer, I think low level)
13:41:38 <oklopol> that's exactly the infinite structure problem
13:41:43 <oklopol> as you can clearly see there
13:41:46 <oklopol> there is no size limit
13:41:52 <AnMaster> oklopol, I would store it in some sort of hash map
13:42:02 <oklopol> currently, my implementation does not allow infinite structures
13:42:14 <oklopol> and evaluates it all right away
13:42:18 <oklopol> yeah, i do that too.
13:42:39 <oklopol> btw for an n-ary hypercube http://www.vjn.fi/oklopol/graphica.txt
13:42:55 <oklopol> err not -ary.
13:42:58 <oklopol> n-dimensional
13:42:59 <AnMaster> because you seem to define this:
13:43:01 <AnMaster> struct node {
13:43:01 <AnMaster> size_t datasize;
13:43:01 <AnMaster> void * data;
13:43:01 <AnMaster> struct node * up;
13:43:01 <AnMaster> struct node * left;
13:43:02 <AnMaster> struct node * right;
13:43:04 <AnMaster> struct node * down;
13:43:06 <AnMaster> }
13:43:10 <oklopol> yes.
13:43:26 <AnMaster> oklopol, way easier to read than "Node X Y :: [X Y] <-> Node X+1 Y <-> Node X-1 Y <-> Node X Y+1 <-> Node X Y-1"
13:43:26 <oklopol> that is what i do
13:43:27 <AnMaster> :P
13:43:39 <oklopol> not really, if you format it correctly
13:43:47 <AnMaster> oklopol, well for a C programmer ;P
13:43:49 <oklopol> but now i'm getting a deja vu we already had this discussion :P
13:43:55 <AnMaster> we did?
13:44:00 <oklopol> well anyway, that C definition isn't exactly the same
13:44:05 <AnMaster> no?
13:44:09 <oklopol> if you write that, the actual graph is not generated
13:44:12 <oklopol> that's the whole point
13:44:15 <AnMaster> oh wait you can access by index
13:44:18 <AnMaster> or?
13:44:30 <oklopol> well yes, [X Y] will contain that object
13:44:32 <AnMaster> so you need a lookup table to find the node in fact
13:44:36 <oklopol> there is a global id table as i said
13:44:44 <AnMaster> or you need to go from 0,0 downwards then sideways
13:44:51 <AnMaster> which would be slow
13:45:05 <oklopol> well, in this case all id's a lists of length 2, so it will make a 2d array.
13:45:08 <AnMaster> oklopol, anyway this is far from an optimal data structure to store funge code in
13:45:11 <oklopol> *id's are
13:45:16 <AnMaster> you want a hash map
13:45:23 <AnMaster> that allows negative indexes too
13:45:34 <AnMaster> because -1,-1 is valid in Befunge98
13:45:38 <AnMaster> completely valid
13:45:42 <oklopol> duh
13:45:49 <AnMaster> "duh"?
13:45:51 <oklopol> [-1 -1] would also be generated by that
13:45:56 <AnMaster> ah
13:45:56 <oklopol> well duh, why wouldn't it be
13:46:02 <AnMaster> um
13:46:05 <AnMaster> ok
13:46:24 <oklopol> anyway, you can store into a 2d grid even with negatives
13:47:15 <oklopol> either by reallocating, or having multiple grids all extending to different directions
13:47:30 <oklopol> but this is not the programmer's problem
13:47:45 <oklopol> anyway, that structure of yours
13:47:58 <oklopol> is nothing but a thingie, that takes 4 id's and connects to them
13:48:06 <AnMaster> yes it needs more code
13:48:07 <oklopol> you can do that with graphica too
13:48:10 <AnMaster> to allocate and set it yp
13:48:13 <AnMaster> up*
13:48:17 <oklopol> Node A B C D <-> A <-> B <-> C <-> D
13:48:28 <oklopol> that's not the actual form of course
13:48:30 <oklopol> i''ll whoe
13:48:32 <oklopol> *show
13:48:35 <oklopol> *i'll
13:48:41 <AnMaster> however no way I would use that type of data structure for befunge, I would use a hashmap of some sort
13:49:14 <oklopol> http://www.vjn.fi/pb/p446352642.txt
13:49:22 <oklopol> a node is something that connects to four given things
13:49:33 <oklopol> i'd say that's quite a lot prettier than the C thingie
13:49:36 <oklopol> but whatever
13:49:43 <oklopol> err, that type of data structure?
13:49:52 <oklopol> graphica has nothing to do with computers, man.
13:49:58 <oklopol> it's a language for defining graphs.
13:50:23 <oklopol> so you can't exactly talk about structures, if you're referring to physical representation
13:50:35 <oklopol> graphica does not define what structure should be used
13:51:32 <oklopol> just like Ob is just a way to add declarative, intelligent events to some preset external functionality, graphica is just a way to define arbitrary graphs for use in some other lower level program.
13:51:51 <AnMaster> hm
13:52:19 <oklopol> "preset"? scratch preset.
13:52:36 <oklopol> well preset for the current use of the language, but just confusing there
13:53:02 -!- atsampso1 has quit (Read error: 54 (Connection reset by peer)).
13:54:00 <oklopol> currently, you can't have values for the nodes, partly because haven't decided on the operator for adding them :P
13:54:17 <oklopol> = is redirection, :: is tagging, <-, <-> and -> are connections
13:54:28 <oklopol> what should be "setting the value of"
13:54:59 <oklopol> perhaps >> could be redirection and = could set the value
13:55:07 <oklopol> although i'd have to change the cube
13:56:48 -!- atsampson has joined.
13:57:36 <oklopol> AnMaster: anyway, this is what it looks like with newlines and tabbing: http://www.vjn.fi/pb/p466261364.txt
13:57:48 <oklopol> i'd say that's pretty darn pretty
13:57:52 <oklopol> don't you think so, atsampson?
13:57:58 <AnMaster> hm
13:58:32 <atsampson> oklopol: in a purely aesthetic sense, certainly
13:58:43 <oklopol> atsampson: see a problem with the semantics?
13:58:55 <oklopol> this should define a 2d grid infinite in all directions
13:59:07 <atsampson> what's the language?
13:59:12 <oklopol> graphica
13:59:21 <oklopol> it's mine, and the infinity part is not yet implemented
13:59:40 <oklopol> just realized today how it can be done easily, made the language ages ago
14:00:45 <atsampson> oklopol: do you have a description of it somewhere?
14:01:18 <AnMaster> oklopol, yes where are the specs
14:01:24 <oklopol> i have one that's slightly outdated somewhere
14:01:27 <oklopol> well
14:01:45 <oklopol> just lacks the infinite structures really, and that's basically an implementation detail as it doesn't change the language
14:02:02 <oklopol> hmmhmm, just wonder *where* i have it
14:03:49 <oklopol> http://www.vjn.fi/pb/p123363511.txt
14:04:08 <oklopol> i was too lazy to write a declarative explanation of the semantics :P
14:05:58 <oklopol> the two-dimensional grid in those examples is much less pretty, but should be grokkable
14:06:06 <atsampson> yes, that's neat :)
14:07:04 <atsampson> do you need the [] in the tag in your short example?
14:07:10 <oklopol> hmm
14:07:14 <oklopol> probably not
14:07:26 <oklopol> in the node example, no i actually wouldn't
14:07:35 <oklopol> it should be semantically equivalent either way
14:07:54 <oklopol> there were no lists actually when that spec was written
14:08:30 <oklopol> i have them now, although functional programming without first-class functions sucks ass :P
14:08:34 <oklopol> so
14:09:11 <oklopol> http://www.vjn.fi/oklopol/graphica.txt
14:09:15 <oklopol> as you can see, wtf.
14:09:36 <oklopol> not that it's that complicated, it's just very hard to read
14:09:48 <oklopol> and there isn't really a way to abstract it further
14:10:18 <oklopol> basically the point is, err
14:10:37 <oklopol> you create the node [0 0 0... 0]
14:10:57 <oklopol> where 0 exists n times for the number of dimensions n given
14:11:36 <oklopol> you then do some weird redirection shit to get each node where one zero has been changed []
14:11:39 <oklopol> *-[]
14:11:51 <oklopol> and repeat, until all elements in the list are ones
14:12:18 <oklopol> should extend that to an arbitrary-size arbitrary-dimentional one, shouldn't be hard raelly
14:12:21 <oklopol> *really
14:13:20 -!- olsner has quit (Read error: 110 (Connection timed out)).
14:14:00 <oklopol> actually i'm not sure it's that obvious :P
14:14:27 <oklopol> if anyone wants to give it an attempt, go for it
14:14:48 <oklopol> although i doubt anyone even gets the hypercube :) i wouldn't
14:16:20 -!- ais523 has joined.
14:16:29 <AnMaster> ais523, hi
14:16:48 <ais523> hi tusho
14:16:50 <ais523> I'm pretty sure I won that time
14:16:52 <tusho> agh!!!!
14:16:56 <AnMaster> ais523++
14:16:57 <tusho> ais523: well, I've been here since 11am
14:17:00 <tusho> so I wasn't paying attention
14:17:04 <tusho> I did plan to get you, though
14:17:05 <AnMaster> so what?
14:17:07 <ais523> tusho: that's early for you
14:17:07 <AnMaster> you still lost
14:17:10 <tusho> yes, it is
14:17:15 <tusho> i normally get on ~4pm
14:17:20 <tusho> i decided not to. :)
14:17:21 <AnMaster> ais523, tusho, Deewiant: http://rafb.net/p/sCTJCz33.html
14:17:26 <AnMaster> ais523, please check if it makes sense
14:18:54 * AnMaster pokes ais523
14:18:56 <ais523> AnMaster: I would have expected P and R to be combined
14:19:01 <AnMaster> ais523, hm
14:19:03 <AnMaster> maybe
14:19:04 <ais523> and no need to poke me, I'm trying to read it...
14:19:15 <oklopol> ais523: did i mention the infinite graph problem with graphica to *you*, ever? :P
14:19:32 <AnMaster> ais523, could be a good idea, however I'm not sure
14:19:39 <ais523> oklopol: I don't think so
14:19:43 <oklopol> damn
14:20:06 <oklopol> well i'll be non-graphica when explaining, you might enjoy the concept anyway
14:20:26 <ais523> AnMaster: "doesn't must end with a \0 byte."?
14:20:40 <AnMaster> err typo
14:20:50 <ais523> apart from that, seems reasonable
14:20:51 <AnMaster> remove doesn't
14:20:57 <AnMaster> "This one must end with a \0 byte."
14:21:37 <AnMaster> ais523, as I can't think of a sane way to say that some other parameter or return value contains the size of that one
14:22:07 <ais523> AnMaster: why not use 0gnirts like everything else in Befunge?
14:22:11 <ais523> or are you moving away from that?
14:22:28 <ais523> length-prefix seems like it could be hard to maintain, especially on a stack which can only be edited from the top
14:22:30 <AnMaster> ais523, yes I am in the funge108 standard too
14:22:43 <AnMaster> ais523, the length is stored on top after all
14:22:47 <oklopol> ais523: the graphica way to create a graph is to create kind of a tree, so that when you call a function F, that function chooses an id to itself, then calls some set of functions that themselves make nodes, and return their id's, then F takes these id's, and connects with them
14:22:49 <ais523> IFFI uses 0gnirts
14:22:59 <oklopol> so you get a graph from the recursion
14:23:04 <AnMaster> ais523, and for here, well, char* types can be used to pass other stuff than strings, like say structs
14:23:04 <oklopol> ais523: with me?
14:23:11 <ais523> oklopol: I'm not quite sure I understand
14:23:14 <AnMaster> that you can later marshall yourself
14:23:17 <AnMaster> ais523, if you see what I mean
14:23:21 <oklopol> darn, i'll show you the simplest example
14:23:40 <ais523> AnMaster: sort of, couldn't you have a separate string and char* though? Then you could do C++ as well
14:24:02 <AnMaster> ais523, uh?
14:24:13 <ais523> AnMaster: C++ has a separate string type in the standard libraries
14:24:17 <AnMaster> ais523, how the heck would I marshall to std:string from inside C code?
14:24:25 <AnMaster> there is no way I'm adding C++ code to cfunge
14:24:33 <ais523> AnMaster: by using C++ code to link them, not in cfunge itself just in a linking module
14:24:46 <ais523> just like there's INTERCALness in ecto_b98.c in IFFI
14:24:46 <AnMaster> well I'd rather not
14:24:50 <ais523> but not part of cfunge
14:24:51 <AnMaster> hm
14:25:10 <tusho> ais523:
14:25:13 <tusho> you construct a std::string
14:25:15 <tusho> from a char*
14:25:22 <ais523> tusho: yes, you can, and vice versa
14:25:22 <AnMaster> ais523, I plan this fingerprint to be part of the official cfunge distribution, but optional at compile time (as libffi can be hard to install on some distros)
14:25:23 <tusho> so he's pretty much right
14:25:40 <AnMaster> basically libffi is both a part of gcc installed when gcj is, and a separate library, both can
14:25:44 <AnMaster> can't* be installed at once
14:25:59 <AnMaster> on distros like gentoo this cause a slight issue as you may see
14:26:47 <ais523> I'm not sure I understand libffi at all, IFFI uses compile-time linking like everything else has done for years
14:26:51 <AnMaster> so optional at compile time, I'll use it if it exists (with an option to disable it anyway)
14:27:00 <AnMaster> ais523, libffi resolves at runtime
14:27:17 <ais523> AnMaster: does that require both programs to be running beforehand?
14:27:24 <AnMaster> ais523, the L and R would basically call dlopen() and dlsym()
14:27:26 <AnMaster> ais523, eh?
14:27:31 <AnMaster> it is for library functions
14:27:34 <ais523> ok
14:27:49 <oklopol> ais523: http://www.vjn.fi/pb/p213633331.txt makes a graph representing a ring
14:27:51 <tusho> ais523: libffi just lets you do things like
14:27:53 <AnMaster> first you dlopen(), then dlsym(), then use libffi to marshal the data to the ABI
14:28:01 <tusho> foo = mylib("abc.so"); callfunc(foo, "hello_world", 2)
14:28:04 <AnMaster> ais523, like "what thing goes in what register"
14:28:05 <tusho> not that trivial
14:28:07 <tusho> but you know
14:28:11 <tusho> it's basically just dlopen/dlsym
14:28:18 <AnMaster> tusho, yes + stuff to handle the ABI
14:28:25 <oklopol> so #node 0 connects to #node 1 connects to ... #node n, which is tagged as #node 0, so it becomes a ring
14:28:51 <oklopol> asdasdasdadsd, i want someone to understand the way to resolve infinite structures :D
14:29:13 <oklopol> ais523: read/got that?
14:29:24 <ais523> not read it yet
14:29:27 <ais523> I was reading email
14:29:28 <ais523> let me read it now
14:29:41 <oklopol> first line has a typo s/the graph a node/a node/
14:29:57 <AnMaster> ais523, but yes I guess making R and P one function could make sense
14:30:11 <ais523> oklopol: what there is causing edges to be made between nodes?
14:30:13 <AnMaster> except that there would be a lot of arguments in one go to keep track of
14:30:18 <oklopol> ais523: ->
14:30:23 <oklopol> it means
14:30:34 <AnMaster> ais523, rather 2 functions with 5 arguments each than 1 with 10 ;)
14:30:40 <oklopol> "-> A" connect this cell to the cell A
14:31:11 <AnMaster> oklopol, would <-> be a double linked list then?
14:31:17 <oklopol> AnMaster: yes
14:31:21 <AnMaster> well not list, could be anything of course
14:31:22 <oklopol> you can also do <-
14:31:38 <oklopol> yeah, in this case it would be a double linked list
14:31:42 <oklopol> *doubly
14:31:48 <AnMaster> do you name the connections?
14:31:53 <oklopol> no, not currently
14:32:06 <AnMaster> so you can't have one called up and another down?
14:32:07 <AnMaster> or such
14:32:17 <oklopol> that's going to be added
14:32:18 <ais523> /*@maynotreturn@*/ uint32_t ick_dounop(char*, uint32_t, uint32_t, int, unsigned long, unsigned long, unsigned long, ick_type32(*)(ick_type32), ick_type32(*)(ick_type32), ick_type32(*)(ick_type32), void(*)(ick_type32, void(*)()), void(*)(ick_type32, void(*)()), void(*)(ick_type32, void(*)()), char*);
14:32:19 <AnMaster> or one called previous and another next, and a third down
14:32:21 <oklopol> but not yet possible
14:32:21 <AnMaster> oklopol, ^
14:32:26 -!- olsner has joined.
14:32:28 <oklopol> yep, that would be nice
14:32:30 <AnMaster> because that is one useful one
14:32:37 <ais523> that's a real function prototype from C-INTERCAL; as you see, I don't care how many arguments a function has if it needs them all
14:32:38 <AnMaster> could be used to represent brainfuck
14:32:41 <AnMaster> a loop has a down
14:32:48 <oklopol> and especially if i add traversing, it would be useful
14:32:48 <AnMaster> pointing to the code of the loop
14:32:53 <AnMaster> something like that
14:32:55 <oklopol> yeah
14:33:08 <oklopol> hmm...
14:33:09 <AnMaster> ais523, ARGH
14:33:13 <oklopol> let's try parsing brainfuck :-)
14:33:20 <AnMaster> ais523, typedef each type of function pointer before
14:33:25 <AnMaster> that makes it a bit simpler to read
14:33:50 <AnMaster> oklopol, for speed you'd want to collapse a [-] into a "set cell to zero"
14:33:59 <tusho> AnMaster: You are talking about a compiler that has a part made of idiomatic perl written in c
14:34:03 <tusho> why would he make it easier to read? Honestly.
14:34:05 <AnMaster> and +++ to "3x +"
14:34:07 <ais523> AnMaster: it was worse before, comp.lang.c suggested removing the params from void(*)() to get rid of some cells
14:34:17 <AnMaster> ais523, heh
14:34:22 <ais523> s/cells/casts/
14:34:46 <AnMaster> tusho, well making it easier to read would really be a strange action right?
14:34:58 <AnMaster> tusho, so in a round-about way it could be esoteric ;P
14:35:03 <tusho> AnMaster: heh
14:35:41 <AnMaster> tusho, I believe it is justify almost any action as esoteric in a way similar to this
14:35:58 -!- ais523 has quit (Remote closed the connection).
14:36:14 -!- ais523 has joined.
14:36:31 <AnMaster> ais523, what was the last you saw?
14:36:44 <ais523> <AnMaster> tusho, well making it easier to read would really be a strange action right?
14:36:55 <AnMaster> <AnMaster> tusho, so in a round-about way it could be esoteric ;P
14:36:55 <AnMaster> <tusho> AnMaster: heh
14:36:55 <AnMaster> <AnMaster> tusho, I believe it is justify almost any action as esoteric in a way similar to this
14:39:54 -!- Corun has quit ("This computer has gone to sleep").
14:40:10 -!- Slereah__ has joined.
14:43:25 <AnMaster> ais523, actually I can see reasons to not combine R and P
14:43:34 <oklopol> http://www.vjn.fi/pb/p532125636.txt <<< okay, i added named returns, as graphica doesn't have anything for that
14:43:44 <AnMaster> 1) not combining makes error handling easier, you know a bit more why it reversed
14:43:53 <AnMaster> 2) tracking all parameters as I said above
14:44:17 -!- pikhq has joined.
14:44:29 <oklopol> Nodefunctioncall Arg1 Arg2.. Argn ?? Ret1 Ret2 Ret3, although ? in the file
14:44:50 <AnMaster> oh btw fingerprint will be CFFI
14:44:59 <oklopol> Ret1.. Retn now become free variables that the function call should set using !!
14:45:11 <oklopol> thus getting a prolog-like named return
14:45:11 <ais523> AnMaster: so your fingerprint equals my handprint, but I don't think that will cause problems
14:45:39 <AnMaster> indeed it shouldn't
14:45:47 <AnMaster> and with funge108 it will get an url
14:46:00 <AnMaster> but cfunge doesn't fully support loading by URI yet
14:46:17 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
14:46:20 <AnMaster> ais523, oh btw you will need to add a library when you build the last cfunge for the ffungi
14:46:23 <AnMaster> -lncurses
14:46:32 <ais523> ah, ok
14:46:45 <tusho> ais523: wait, what fingerprint
14:46:50 <ais523> tusho: IFFI
14:46:51 <tusho> (name)
14:46:53 <tusho> ah
14:46:58 <tusho> why is AnMaster calling it IFFI
14:47:01 <AnMaster> no
14:47:01 <tusho> why not CFFI
14:47:02 <AnMaster> I'm not
14:47:04 <AnMaster> ...
14:47:05 <ais523> but the clash is on CFFI
14:47:07 <AnMaster> duh
14:47:11 <AnMaster> <AnMaster> oh btw fingerprint will be CFFI
14:47:12 <AnMaster> ....
14:47:14 <tusho> ais523: but yours is IFFI
14:47:15 <ais523> my fingerprint's IFFI, AnMaster's is CFFI, my handprint is CFFI
14:47:18 <AnMaster> see
14:47:20 <tusho> why is your handprint CFFI
14:47:22 <tusho> that makes no sense
14:47:22 <oklopol> hmm
14:47:26 <tusho> it should be IFFI
14:47:28 <ais523> tusho: cfunge for intercal
14:47:34 <tusho> it should still be IFFI, ais523
14:47:34 <ais523> if it was IFFI it would have nothing to do with cfunge
14:47:51 <tusho> uh IFFI is to do with cfunge.
14:47:52 <ais523> which I think is wrong, it should at least share some of the letters as it's effectively the same program
14:47:54 * AnMaster gets some popcorn and watches the fight
14:48:01 <tusho> AnMaster: shut up
14:48:05 <ais523> tusho: no, IFFI's for Intercal-like Foreign Function Interface
14:48:11 <ais523> which has nothing intrinsically to do with cfunge
14:48:12 <tusho> ais523: i thought it was just for cfunge
14:48:14 <tusho> OK
14:48:20 <ais523> that's as it should be, handprint = interp, fingerprint = semantic
14:48:23 <ais523> s/$/s/
14:48:27 <AnMaster> tusho, btw I got an idea, if you want TRDS in cfunge, make a patch
14:48:39 <tusho> AnMaster: like I want to hack your crazy code
14:48:42 <AnMaster> and if not, just shut up about it
14:48:43 <ais523> AnMaster: but it would change every single line of your program, probably
14:48:47 <tusho> nobody would want to touch that with a 10 foot pole
14:48:52 <tusho> p.s. TRDS TRDS TRDS TRDS TRDS TRDS TRDS
14:48:54 <AnMaster> ais523, yeah not saying I would accept it
14:49:05 <AnMaster>
14:49:06 <AnMaster> er
14:49:08 <AnMaster> ;P*
14:50:18 <oklopol> okay i fixed quite a lot, the first one was total crap
14:50:19 <oklopol> http://www.vjn.fi/pb/p251463225.txt
14:50:23 <oklopol> luckily no one read it :P
14:50:27 <oklopol> anyway, that's a brainfuck parser
14:50:33 <AnMaster> interesting
14:50:34 -!- Slereah2 has joined.
14:50:39 <oklopol> should work now, gave it a but more thought
14:50:49 <oklopol> (::) is the current node id
14:50:51 <AnMaster> oklopol, where is an implementation so I can test it?
14:50:53 <oklopol> because i'm not naming these
14:50:56 <AnMaster> for graphica
14:50:56 <ais523> oklopol: so it's basically recursion, but making a graph as you go along
14:51:04 <oklopol> ais523: yes, except there's a but
14:51:06 <ais523> hmm... that looks like it might compile into Prolog nicely
14:51:14 <oklopol> you can give id's to things
14:51:23 <oklopol> and connect to id's instead of calling a function
14:51:28 <oklopol> so you can do stuff like my ring there
14:51:29 <AnMaster> oklopol, no implementation?
14:51:44 <oklopol> AnMaster: there is one, but i've added a few constructs to make this work
14:51:51 <AnMaster> hm ok
14:52:01 <oklopol> (::) doesn't exist in it, ?? doesn't exist in it, and !! doesn't exist in it
14:52:04 <oklopol> specifically
14:52:14 <AnMaster> ...and at the end of the day this may win in beauty, but C based implementation will win in speed...
14:52:20 <AnMaster> as usual...
14:52:27 <AnMaster> (no offence meant)
14:52:43 <oklopol> well i don't really see your point, but yeah, that is prolly the case
14:52:56 <oklopol> except in C, you'd prolly not parse at all, as it's just so fucking complicated :P
14:53:04 <AnMaster> hm?
14:53:16 <AnMaster> oklopol, brainfuck is not very complex to parse
14:53:43 <AnMaster> you just load it into a tree, doing some on the fly optimizing (combining ++-- and such, >>>>, [-] and some more)
14:54:01 <tusho> AnMaster: Interesting esolang! By the way, I wouldn't write any serious programs in it, because it's slower than C. Wow.
14:54:10 <AnMaster> tusho, not saying that
14:54:12 <oklopol> :D
14:54:23 <AnMaster> tusho, erlang is slower than C, yet erlang got other strengths
14:54:42 <AnMaster> same for a lot of other non-esoteric languages
14:54:46 <AnMaster> it is all about what you want to do
14:54:48 <oklopol> well i would say graphica is by far the easiest way to make a graph.
14:55:05 <oklopol> i simply don't know any notation nearly as nice for it
14:55:17 <AnMaster> well that is it's strength then
14:55:22 <ais523> oklopol: I must spec up eodermdrome some time, it has an even nicer (or at least more eso) notation
14:55:34 <oklopol> tell me
14:55:45 <ais523> although you can't specify graphs with more than 26 nodes at a time, that should be a clue, but you can combine them to make larger graphs
14:55:54 <AnMaster> however I'm just saying, you can't get much more faster than a good C compiler, asm if you are *really good* at it, but I couldn't write faster asm than C
14:56:10 <AnMaster> simply because most of the time the C compiler generates quite good code
14:56:14 <ais523> oklopol: just a string of letters, each letter represents a node, adjacent letters represent arcs between nodes
14:56:18 <ais523> thus eodermdrome = K_5
14:57:07 <AnMaster> ais523, wait, you mean it is like ascii art?
14:57:11 <AnMaster> that could be a nice idea
14:58:13 <AnMaster> +--------c
14:58:13 <AnMaster> | ^
14:58:13 <AnMaster> | |
14:58:13 <AnMaster> +->a<--->b
14:58:27 <AnMaster> not sure how to handle crossing lines
14:58:56 <AnMaster> also you couldn't have more than 4 connections I guess
14:59:28 <tusho> ais523: can't use non-alphabetical?
14:59:29 <ais523> (incidentally, that word was invented for that purpose, and not by me)
14:59:29 <tusho> should be 255
14:59:29 <oklopol> ais523: that doesn't sound very extendable
14:59:29 <tusho> err
14:59:29 <tusho> 256
14:59:30 <ais523> oklopol: well you use it to specify bits of graphs, and build them out of that
14:59:30 <oklopol> can you show me a ring?
14:59:30 <ais523> oklopol: abcdefga
14:59:30 <oklopol> can you show me a parametrizable
14:59:30 <oklopol> one
14:59:31 <ais523> oklopol: you'd have to get input somehow, eodermdrome's a bit of a tarpit
14:59:31 <ais523> and you'd build it from a small ring by making it bigger
14:59:32 <ais523> for instance you could start with abcdec
14:59:32 <oklopol> anyway that's the basic idea of graphica too, i will have ways to do that exact thing, except i might not have that nice a notation
14:59:32 <oklopol> well
14:59:32 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
14:59:33 <ais523> and have a rule edcbca edcbcfa
14:59:33 <oklopol> perhaps i could let you use eodermdrome as a kinda syntactical extension for shorthands, you'd get your name on the credits :P
14:59:33 <ais523> which adds an extra element to the ring, at the 'tail' I put there to give a starting point
14:59:33 <oklopol> hmm
14:59:33 <ais523> rings of various sizes are one way to store data
14:59:33 <ais523> also, it's a rewriting lang
14:59:34 <ais523> and ideally you use it to write poetry, like in Haify
14:59:34 <ais523> s/Haify/Haifu/
14:59:34 <oklopol> ah rewriting.
14:59:34 <oklopol> yeah that's nice
14:59:34 <ais523> also, the initial string that's rewritten from wouldn't be user-specifiable, but instead thequickbrownfoxjumpsoverthelazydog
14:59:34 <ais523> well, the graph that that turns into
14:59:40 <AnMaster> wtf, I lagged a lot
14:59:50 <ais523> AnMaster: no, it isn't like ASCII art, you can use a letter more than once and it refers to the same node each time
15:00:03 <ais523> i.e. eodermdrome has 4 connections to the e, but eodermdromes would have 5
15:00:13 <AnMaster> "<tusho> ais523: can't use non-alphabetical?" and "<ais523> well, the graph that that turns into" came at the same second
15:00:26 <AnMaster> must have been some really bad lag there for a while
15:00:36 <ais523> AnMaster: probably your connection went strange for a while, that happens to me every now and then too
15:00:43 <oklopol> what
15:00:46 <oklopol> i didn't see tusho say that
15:00:55 <tusho> i did
15:00:56 <oklopol> oh
15:00:56 <tusho> :p
15:00:57 <AnMaster> oklopol, quite a bit ago
15:00:58 <oklopol> up there
15:04:26 <AnMaster> actually it wasn't my connection ais523 I think
15:04:35 <AnMaster> I think it is between freenode servers
15:04:43 <AnMaster> or was rather
15:05:05 <AnMaster> ais523, it isn't ctcp pong...
15:05:07 <AnMaster> * Ping reply from ais523: 1.32 second(s)
15:05:10 <AnMaster> I got that before
15:05:19 <ais523> AnMaster: well, why can't I send you a CTCP pong when you ping me/
15:05:24 <ais523> s/\//?/
15:05:24 -!- Slereah__ has joined.
15:05:25 <AnMaster> no reason
15:05:33 <AnMaster> ais523, except it contradicts the specs
15:05:37 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
15:05:39 <AnMaster> and stop spamming tusho
15:05:43 <tusho> ctcp has no specs for messages
15:05:45 <tusho> it's extensible
15:05:56 <AnMaster> yay:
15:05:57 <oklopol> abcdec with edcbca edcbcfa, can you show me how that actually evolves?
15:06:07 <oklopol> can b represent multiple nodes?
15:06:14 <AnMaster> ! CTCP flood from tusho, automatically putting on ignore for 5 minutes
15:06:17 <AnMaster> hehee
15:06:21 <tusho> awesome
15:06:21 <ais523> oklopol: the letters only matter within an expression
15:06:24 <tusho> can AnMaster see this
15:06:26 <AnMaster> tusho, ctcp ignore only
15:06:28 <oklopol> ais523: i know
15:06:29 <tusho> aww
15:06:30 <AnMaster> not other types of messages
15:06:35 <oklopol> can you show the evolution?
15:06:37 * tusho can AnMaster see this
15:06:39 <tusho> did you see that AnMaster
15:06:41 <ais523> and each letter only represents one node within an expressoin
15:06:42 <AnMaster> yes I did
15:06:57 <ais523> so abcdec becomes abcdefc becomes abcdefgc and so on
15:07:00 <AnMaster> tusho, and now I removed the ignore for other types of CTCP too
15:07:03 <ais523> forever
15:07:20 <ais523> you need a more complicated rewrite expression to put bounds on it
15:07:27 <ais523> but it shouldn't be too hard to do, say, a BCT interpreter
15:07:35 <AnMaster> BCT?
15:07:41 <ais523> bitwise cyclic tag
15:07:44 <AnMaster> ah
15:07:47 * AnMaster googles
15:07:51 <ais523> out of all the langs I know, it's probably the easiest to implement
15:07:56 <ais523> [[e:Bitwise Cyclic Tag]]
15:08:01 <ais523> umm... http://esolangs.org/wiki/Bitwise_Cyclic_Tag
15:08:18 <tusho> ais523: iota is easy in languages with good functionality
15:08:39 <ais523> tusho: this is langs with bad functionality I'm talking about, the langs in which even implementing Brainfuck's a stretch
15:09:12 <oklopol> ais523: but if the initial state is abcdec, then how can it even be matched with edcbca?
15:09:33 <oklopol> wouldn't b represent the de in c -> d -> e -> c then
15:09:50 <ais523> oklopol: the first expression is a triangle with a two-element tail
15:10:06 <ais523> whereas the second expression is a Y shape with one side two elements long and the other two one element long
15:10:09 <ais523> s/element/edge/
15:10:18 <ais523> so they match each other
15:10:39 <ais523> however I got the rewrite expressions a bit wrong, because you can't reuse letters unless they correspond to each other
15:10:46 <oklopol> err
15:11:02 <ais523> it should be edcbca edfbfga
15:11:09 <ais523> rebooting, be back soon
15:11:11 -!- ais523 has quit ("rebootin").
15:11:25 <oklopol> oh, right. got it
15:12:16 <oklopol> simple to write, but takes a sec to actually read
15:12:36 <AnMaster> tusho, didn't ais use BCT for that proof he won a lot of money for?
15:12:52 <tusho> no
15:12:54 <tusho> i don't think so
15:13:08 <AnMaster> what was it then he implemented in said language?
15:13:13 <tusho> AnMaster: why not read the paper
15:13:21 <tusho> http://www.wolframscience.com/prizes/tm23/TM23Proof.pdf
15:13:24 <AnMaster> tusho, well iirc it was BCT, but I may be wrong
15:13:31 <tusho> no
15:14:00 <tusho> it involves cyclic systems
15:14:01 <tusho> not bct
15:14:05 <AnMaster> ah
15:14:11 <AnMaster> well close then
15:14:20 -!- olsner has quit (Connection timed out).
15:14:44 <tusho> not really.
15:15:07 <AnMaster> tusho, two of the words matches ;P
15:15:07 <tusho> hmm
15:15:10 <tusho> not sure
15:15:11 -!- ais523 has joined.
15:15:16 <AnMaster> "The main part of the proof proceeds by showing that the initial conjecture (conjecture 0, that system 0 can emulate any cyclic tag system for an arbitrary number of steps (and a few extra conditions)) is either
15:15:16 <AnMaster> "
15:15:19 <tusho> ais523: is the cyclic tag in your tm23 proof a BCT
15:15:22 <tusho> or another cyclic tag
15:15:25 <AnMaster> maybe not BCT but a CT at least
15:15:32 <oklopol> ais523: that notation is awesome
15:15:39 <ais523> hi tusho
15:15:43 <ais523> tusho: it's just plain cyclic tag
15:15:45 <ais523> well, it could be either
15:15:47 <ais523> it doesn't read from source, it compiles it into a crazy representation
15:15:49 <ais523> and BCT is just one particular notation for CT
15:16:03 <AnMaster> <oklopol> ais523: that notation is awesome <-- what one?
15:16:06 <tusho> ais523: also you link to wolframprize.org
15:16:09 <oklopol> that graph notation
15:16:10 <tusho> that domain does not go anywhere
15:16:12 <tusho> did it ever?
15:16:17 <ais523> tusho: yes, it did
15:16:21 <ais523> has it gone down?
15:16:24 <ais523> it used to be the main URL
15:16:27 <tusho> ais523: WOLFRAM ARE EVIL THEY BREAK URLS
15:16:29 <ais523> AnMaster: my graph notation, I expect
15:16:33 <AnMaster> ah
15:16:41 <oklopol> ais523: i do admit that's a nicer way to represent a certain graph
15:16:48 <ais523> tusho: the URL works for me
15:16:50 <tusho> was it ever published in that Complex Systems thing ais523?
15:16:57 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
15:16:59 <ais523> tusho: no, it probably will be eventually
15:17:06 <ais523> but the paper's still being worked out
15:17:06 <tusho> ah, science
15:17:09 <tusho> such a fast-moving world
15:17:09 <tusho> :)
15:17:27 <tusho> ais523: i love how they link to the mathematica version of the programs right next to your proof
15:17:29 <ais523> oklopol: your lang's probably better for expressing graph operations than mine, I just wanted a tarpit graph-rewrite lang
15:17:31 <tusho> like 'PLESAE IGNORE THE PERL'
15:17:38 <oklopol> ais523: there are no graph operations
15:17:54 <oklopol> it's better for representing the actual graph structures
15:18:02 <ais523> tusho: well the Perl's a factor of N faster than the Mathematica, even though I tried to optimise the Mathematica to a decent speed, I just failed
15:18:07 <ais523> oklopol: ah, yes
15:18:16 <tusho> ais523: mathematica is based on term-rewriting
15:18:16 <oklopol> but
15:18:19 <tusho> that pretty much says it all
15:18:23 -!- Slereah2 has joined.
15:19:12 <oklopol> you could do something like let you define a starting pattern, then have a syntax for doing substitutions n times
15:19:23 <oklopol> this would make something like a ring easy to do
15:19:54 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
15:19:59 <ais523> tusho: I know it is, and tried to optimise for it
15:19:59 -!- ais523 has quit (Remote closed the connection).
15:20:07 -!- Corun has joined.
15:21:06 -!- ais523 has joined.
15:21:37 <ais523> sorry about that...
15:21:43 <ais523> [Wed Jul 16 2008] [15:19:08] <ais523> maybe I should have simulated a linked list; I wonder if {a, {b, {c, {d}}}} is faster to modify in Mathematica than {a, b, c, d}?
15:21:43 <ais523> [Wed Jul 16 2008] [15:19:26] <ais523> however in the end I just went with the naive way because all my attempts to modify made things worse
15:22:43 <oklopol> ais523: something like "1ab1 <rewrite> a1b => a1cb <times> N-3" where numbers let you have concrete handles for convenience
15:23:03 <ais523> yes, that would be more practical (but less tarpitty)
15:23:06 -!- Slereah__ has joined.
15:24:25 <oklopol> ais523: well i'm thinking more in terms of making graph shorthands for graphica atm
15:24:33 <oklopol> you definitely keep yours as it is
15:24:44 <oklopol> why add that number thing when you can just have tails
15:24:56 <ais523> oklopol: I'd gathered that, just thinking out loud
15:25:03 <oklopol> pure graphs with no extra information are just so goddamn sexy
15:25:21 <oklopol> ais523: well i guess i knew that too, and was just thinking out loud :D
15:25:24 <ais523> eodermdrome's pretty simple, but I don't have much of an idea how to implement it efficiently
15:25:41 <tusho> say, I think I can make that strongly-typed lazy self-rewriting language
15:25:42 <ais523> because I can't think of a decent way to do graph-matching
15:25:49 <tusho> it requires 'chunking'
15:25:51 <tusho> but i think it's possible
15:26:11 <oklopol> ais523: yeah, it's a complex subject
15:27:47 <oklopol> ais523: links go both ways?
15:28:08 <ais523> oklopol: yes, nondirected
15:28:23 <ais523> although you can direct them by hand using tails and dangling cycles and other little ornaments
15:28:35 <oklopol> true, true, i know graphs.
15:28:49 <ais523> I think probably the easiest way to program in eodermdrome is to have your data store of large structures with little things hanging off them to provide information and certain types
15:29:27 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
15:30:13 <oklopol> is there a sort that always uses the optimal amount of swaps?
15:30:47 <ais523> oklopol: interesting, you're going for writing efficiency rather than reading efficiency, and I don't know
15:30:55 <ais523> well, there is of course, but I'm not sure if there's a sane one
15:31:08 <ais523> bogosort can be adapted to always use the optimal amount of swaps
15:31:35 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
15:33:04 <oklopol> "you're going for writing efficiency rather than reading efficiency" <<< huh?
15:33:19 <ais523> oklopol: normally sorts try to do the minimum number of comparisons
15:33:28 <ais523> whereas you're trying to do the minimum amount of writing to memory
15:33:35 <ais523> or to wherever the data's stored
15:33:38 <oklopol> ah.
15:33:43 <oklopol> well
15:33:59 <oklopol> is there one that always does the optimal amount of reads?
15:34:02 <oklopol> oh, right, ofc not
15:34:20 <oklopol> for a sorted list the optimal amount is 0, so that's kinda trivially impossible
15:36:53 <AnMaster> ais523, bogosort?
15:37:11 <ais523> AnMaster: the original bogosort is to rearrange the data at random, check if it's sorted, if not repeat
15:37:26 <ais523> however I was thinking of a modified version where you just try all possible permutations to see which one is sorted
15:37:32 <AnMaster> ais523, I see, fairly unlikely to be fast
15:37:42 <AnMaster> haha
15:37:43 <tusho> bogosort can fail though
15:37:49 <tusho> assuming a shite random number generator
15:37:51 <AnMaster> what about quicksort?
15:37:55 <tusho> ais523's would work
15:38:05 <oklopol> AnMaster: no.
15:38:05 <ais523> AnMaster: it's somewhat faster than bogosort
15:38:21 <ais523> incidentally, there's an article somewhere on the Internet where some mathematicians wrote a paper about optimising bogosort
15:38:22 <AnMaster> ais523, a lot I'd imagine
15:38:36 <ais523> it still ended up worse than most sane sorting algorithms though
15:38:41 <oklopol> ais523: well it was about a few other pessimal algos too
15:38:52 <oklopol> all were exponential iirc
15:39:24 <ais523> there is also, of course, quantum bogosort, which will hopefully never be used as it has a large chance of destroying the universe if the many-worlds theorem turns out to be false, or the anthropic principle does
15:39:27 <oklopol> they plotted sorting times for the test cases, sorting lists of up to length 7 :P
15:39:32 <ais523> but in theory it's the only way to do an O(n) comparison sort
15:39:35 <AnMaster> Bogosort is on average O(n × n!)
15:39:40 <oklopol> ais523: anyway bogosort isn't trivial to make optimal in this fashion
15:39:42 <AnMaster> according to http://en.wikipedia.org/wiki/Sorting_algorithm
15:39:56 <AnMaster> worst is infinite
15:39:56 <ais523> AnMaster: yep, O(n) to see if it's sorted and you need O(n!) tries on average
15:39:57 <oklopol> hmm
15:41:05 <oklopol> well i guess you could do it, but i think it'd be still much slower than bogosort, as you'd have to try the same permutations many, many times
15:41:28 <ais523> and "much slower than bogosort" is not good
15:41:50 <oklopol> yes, especially as i think it's in the order of n^O(bogosort)
15:41:56 <oklopol> but not sure
15:41:58 <AnMaster> http://en.wikipedia.org/wiki/Bead_sort <-- interesting
15:42:18 * ais523 wonders if n^(n*n!) is better or worse than 2^2^n
15:42:35 <ais523> the second is the order of the 2,3 Turing machine, I calculated it a few months ago because lots of people were asking
15:42:52 <tusho> http://i34.tinypic.com/15ogt4k.png <-- who likeys/not likeys this
15:42:59 <tusho> (it's for the top of tusho.org, obvciously (that was intentional))
15:43:04 <oklopol> ais523: much worse
15:43:14 <oklopol> 2^(n!) is worse than that
15:43:15 <ais523> tusho: I like it, but fix the vertical alignment
15:43:23 <tusho> ais523: it's correct, I believe
15:43:28 <ais523> oklopol: ah, of course
15:43:31 <tusho> textedit did it
15:43:31 <tusho> :)
15:43:33 <ais523> tusho: it looks off-centre
15:43:41 <ais523> as in the section sign dips too low relative to your name
15:43:48 <tusho> ais523: it's meant to, I think
15:43:50 <ais523> probably because the word "tusho" has no decenders
15:43:53 <tusho> exactly
15:43:55 <ais523> s/decenders/descenders/
15:43:56 <tusho> so that's correct
15:44:05 <ais523> tusho: looking right is usually better than being right in graphic design
15:44:07 <tusho> besides, it looks kinda nice this way
15:44:16 <tusho> ais523: i'm not going for graphic design
15:44:21 <tusho> it's only a graphic because most people don't have the font.
15:44:24 <tusho> (non-OS X users)
15:44:33 <tusho> i'm more interested in -typographically- nice
15:45:36 <tusho> ais523: which I think it achieves :p
15:45:45 <tusho> anyway, I kinda like it like this
15:48:10 <oklopol> ais523: the graph rewriting is at least trivial to implement, and i think it's not *that* slow, usually
15:48:12 <oklopol> the gist is
15:48:24 <oklopol> if you have a small number of connections from nodes
15:48:34 <oklopol> then you don't get the exponential search problem
15:49:02 <oklopol> and if you do have many connections, you can often just drop most of the searching, because a node with N connections must match with one with N connections
15:49:07 <oklopol> 1. abcdec
15:49:09 <oklopol> &/sp
15:49:09 <oklopol> a->b
15:49:12 <oklopol> whoops.
15:49:25 <oklopol> http://www.vjn.fi/pb/p152546313.txt using something like this it's at least trivial to implement
15:49:41 <oklopol> heuristics are, always start with the node with the largest number of connections
15:49:58 <oklopol> that's it, the rest is trivial recursion & backtracting
15:50:15 <tusho> ais523: hmm, if there's no images or they're disabled or whatever, should I fallback to 'tusho' or '(symbol) tusho'?
15:50:18 <oklopol> but of course does not solve the actual problem.
15:50:33 <ais523> tusho: use the HTML character entity for the section sign, in the alt text, along with your name
15:50:41 <ais523> you can put something else in the tilte
15:50:44 <ais523> s/tilte/title/
15:50:44 <tusho> the image is added with a css background, ais523
15:50:54 <ais523> ...
15:51:01 <tusho> that's actually better, ais523
15:51:08 <ais523> but it doesn't give you alt text
15:51:10 <tusho> because an img is for an actual image semantically
15:51:13 <tusho> and yes it does ais523
15:51:15 <tusho> the actual markup is <h1><a href="/">tusho</a></h1>
15:51:22 <tusho> and css gets rid of the text and adds the background
15:51:52 <ais523> oklopol: that's clever, it'll help in many situations
15:52:36 <oklopol> hmm
15:52:47 <oklopol> actually, there's another quick cut
15:52:58 <oklopol> let's say you're matching nodes A and B
15:52:59 <AnMaster> hm...
15:52:59 <oklopol> now
15:53:05 <AnMaster> is log n always less than n?
15:53:11 <oklopol> AnMaster: no.
15:53:26 <oklopol> so, they both have N connections, if they had a different amount, you'd backtract already
15:53:27 <oklopol> so
15:53:50 <oklopol> you take all the connections, follow them, and count the number of connections of each thing found in the other end
15:53:51 <oklopol> now
15:53:53 <AnMaster> is that natural logarithm btw?
15:54:07 <ais523> oklopol: are you sure on that? I thought log n always was less than n, because log 1 = 0, and it's worse on both sides of 1
15:54:07 <oklopol> AnMaster: depends on notation
15:54:20 <oklopol> ais523: right.
15:54:25 <AnMaster> oklopol, as in big-O notation
15:54:28 <ais523> for all bases > 1, that is
15:54:30 <oklopol> hmm
15:54:55 <oklopol> yeah, it's always less
15:54:58 <oklopol> wasn't thinking
15:55:01 <oklopol> anyway, to continnue
15:55:03 <oklopol> *continue
15:55:07 <AnMaster> what about n log n then?
15:55:12 -!- Judofyr has joined.
15:55:15 <AnMaster> O(n log n) vs. O(n)
15:55:20 <oklopol> you count the connections of each child of A, and you count the connections of each child of B
15:55:31 <oklopol> you then sort these lists, and do an O(n) comparison
15:55:40 <oklopol> only then do you need to start trying to match the children
15:55:48 <oklopol> which i already showed an example of
15:56:14 <oklopol> and, also, if A's children's child counts are [3,3,2,2,1], and thereby B's too
15:56:14 <oklopol> then
15:56:30 <AnMaster> O(n log n) is worse than O(n) for large values of n it seems
15:56:51 <ais523> oklopol: one bit of semantics that you might have guessed but I didn't explain, letters in both sides of a rewrite rule can have additional connections because they're where the rule 'plugs into' the graph, letters on only one side can't have any more connections than are specified in the subgraph in question
15:56:55 <oklopol> you just need to try to match #1A to #1B and #2A to #2B
15:57:03 <oklopol> either one must succeed
15:57:15 <ais523> AnMaster: yes, it is, n log n is always worse than n for large n
15:57:17 <oklopol> (if both succeed, you better hope the next step fails ofc)
15:57:18 <ais523> although it takes a while sometimes
15:57:37 <oklopol> ais523: i actually did *not* take that into account.
15:57:40 <AnMaster> ais523, what about O(n √(log log n))
15:57:52 <oklopol> it actually voids this optimization completely :)
15:57:59 <ais523> AnMaster: still going to be worse than O(n) eventually because root log log n is unbounded
15:58:06 <AnMaster> hm true
15:58:27 <AnMaster> well. I guess there is no sorting algorithm with a upper bound of O(n)
15:58:59 <ais523> AnMaster: there can be, but only given prior knowledge about the data
15:59:04 <oklopol> err
15:59:10 <ais523> for instance if you know all the data are integers in a given range, you can sort in O(n)
15:59:16 <oklopol> O(n) is trivial unless it's a comparison sort
15:59:17 <AnMaster> ais523, what about custom hardware, see bead sort for example
15:59:32 <AnMaster> oklopol, yeah but then you need custom hardware right?
16:00:00 <oklopol> AnMaster: err, well if you count random access as O(log n), then, err, well still not
16:00:10 <oklopol> but usually random access is considered O(1)
16:01:05 <AnMaster> what is the fastest sorting algorithm (not specialized for a specific data set, but generic) on "normal" PCs
16:01:11 <AnMaster> as in no special hardware needed
16:01:17 <oklopol> anyway, O(n) is trivial, and the O(n lg_a n) bound for a sort using a O(1) function that sorts a list of a elements is trivially seen from the choice tree
16:01:23 <oklopol> *decision tree
16:01:35 <oklopol> AnMaster: well the one you linked, for on
16:01:36 <oklopol> *one
16:01:57 -!- Hiato has joined.
16:02:10 <AnMaster> oklopol, um bead sort need custom hardware to be that fast, "O(S), where S is the sum of the integers in the input set: Each bead is moved individually. This is the case when bead sort is implemented without a mechanism to assist in finding empty spaces below the beads, such as in software implementations."
16:02:32 <AnMaster> "O(n): The beads are moved one row at a time. This is the case used in the analog and digital hardware solutions."
16:02:56 <ais523> AnMaster: bead sort's actually O(n^2) in my opinion, because you're doing n O(n) operations in parallel
16:03:09 <oklopol> well okay, use a less retarded counting sort then, anyway, it doesn't require much brain power to come up with a O(n) sort
16:03:12 <AnMaster> ais523, hm
16:03:13 <ais523> I think it's cheating to not count each thread separately
16:03:22 <ais523> oklopol: pigeonhole sort's O(n)
16:03:30 <ais523> but only works on certain data sets
16:03:38 <oklopol> ais523: yes, that for instance is incredibly trivial
16:04:08 <pikhq> Having fun with non-comparison sorts? ;)
16:04:30 <ais523> pikhq: yep
16:04:56 <tusho> idea
16:04:56 <pikhq> My preferred one is bucket sort.
16:05:00 <tusho> multi-threaded sort
16:05:01 <tusho> *g*
16:05:11 <AnMaster> pikhq, in fact we are looking for the fastest one
16:05:13 <pikhq> Mostly because I came up with it before knowing that it was a well-known algorithm. :p
16:05:23 <tusho> pikhq: Many people do./
16:05:35 <pikhq> Which is understandable. . .
16:05:55 <pikhq> It is a fairly obvious algorithm when you start thinking about actually sorting something.
16:06:24 <oklopol> i like heapsort, because there actually exist people who don't know it
16:06:40 <oklopol> that makes it special
16:07:02 <ais523> well, I'm surprised how many people don't know mergesort
16:07:05 <tusho> Say, what's the unicode char for section-thingymabob?
16:07:16 <ais523> given that it's easy to implement and guaranteed n log n performance
16:07:39 <ais523> tusho: 0xA7
16:07:50 <tusho> so &#xA7;?
16:07:52 <tusho> I forget how those work.
16:07:54 <pikhq> Heapsort is a fairly. . . Odd algorithm, IMO.
16:07:56 <ais523> tusho: yep
16:08:01 <ais523> apart from the question mark
16:08:02 <AnMaster> well heapsort is rather nice, though slower in practise
16:08:08 <ais523> but that clearly isn't part of the entity
16:08:15 <oklopol> ais523: well if one understands recursion, they grasp it in about a microsecond
16:08:25 <tusho> ais523: it sucks that I even have to use an entity, i should just be able to serve it as utf-8
16:08:26 <tusho> but, you know
16:08:29 <tusho> editors and shit are retarded.
16:08:29 <oklopol> heapsort, especially when done in-place, takes a while to explain
16:08:32 <pikhq> Basically, I don't get it just because I don't get the idea of a binary heap.
16:08:37 <tusho> which is an odd sentence out of context
16:08:46 <AnMaster> smoothsort seems nice
16:08:53 <oklopol> pikhq: basically
16:08:57 <oklopol> it's a binary tree
16:09:08 <pikhq> Hmm.
16:09:13 <oklopol> but for all nodes n with children a and b, n<a, n<b
16:09:18 <ais523> tusho: most browser/webserver combinations are rubbish at handling encodings
16:09:42 <tusho> ais523: well, apache is fine at it if configured
16:09:44 <tusho> and browsers too
16:09:47 <tusho> but it's Other Software that's the problem
16:09:53 <tusho> really it's just pointless trying
16:09:57 <pikhq> Oh.
16:09:58 <oklopol> this is O(n) to build, and the sort basically consists of taking the top, which is naturally the smallest value in the heap, and then fixing the heap property
16:09:59 <ais523> yes, but you'd be surprising how often the configuration isn't done properly
16:10:11 <ais523> maybe in XHTML it would be better, because XML has encodings figured more or less
16:10:19 <pikhq> Hmm. Looking at seeing a heap stored in an array makes that make sense.
16:10:21 <oklopol> now as a heap is always a perfect binary tree, you can optimize this by storing the heap as a list
16:10:46 <pikhq> Well, that makes using a heap make sense, rather.
16:11:16 <oklopol> heap sort is fun, no doubt about it
16:12:05 <oklopol> only my minimum space quicksort beats it in coolness
16:12:11 * tusho tries to figure what entries he should clutter his new blog design with (right now I can only think "archives")
16:12:12 <tusho> :p
16:12:34 <oklopol> also i should stop calling it minimum space as it's O(n lg lg n) afaik
16:12:39 <ais523> tusho: do you have tusho.org yet?
16:13:01 <tusho> no, wanna give me it? ;p
16:13:08 <ais523> I don't have it either
16:14:31 <oklopol> tusho: what's so hard about getting it?
16:14:38 <tusho> moneys
16:14:43 <tusho> i mean, sure, i could get it
16:14:46 <tusho> but beh
16:15:12 <ais523> I support that beh...
16:15:23 <tusho> oklopol: wanna support it?
16:15:25 <pikhq> Great. Now I'm thinking about implementing sorting algorithms in Def-BF.
16:15:28 <oklopol> tusho: well it's like 10 units
16:15:35 <pikhq> Which means that I should definitely *implement* Def-BF.
16:15:41 <pikhq> Rather than merely talk about it.
16:15:47 <oklopol> pikhq: bubblesort is the way to go
16:15:47 <tusho> yes, but there's a huge difference between £0 and 1p, oklopol
16:16:10 <pikhq> Def-BF makes arrays trivial; I can do a lot of sorting algorithms from there. ;)
16:16:11 <oklopol> tusho: 10 units is nothing, no matter what the unit
16:16:17 <AnMaster> pikhq, what about introsort?
16:16:22 <AnMaster> pikhq, it seems popular
16:16:27 <AnMaster> http://en.wikipedia.org/wiki/Introsort
16:16:34 <tusho> oklopol: The difference is between 'nothing' and 'something'
16:16:54 <AnMaster> pikhq, and bubble sort is O(n^2) iirc
16:17:12 <tusho> Conditional vote: FOR if nobody states in a public forum during the
16:17:13 <tusho> voting period that they are retracting my vote on proposal 5646, PRESENT
16:17:13 <tusho> otherwise
16:17:14 <tusho> er
16:17:15 <pikhq> Bah; bogosort.
16:17:30 <pikhq> tusho: Clever.
16:17:40 <AnMaster> pikhq, if you want something useful try introsort
16:17:49 <oklopol> tusho: well okay, it's about less euros, to be exact, less in pounds
16:17:55 <oklopol> *about 10 euros
16:17:57 <oklopol> lol
16:18:13 <oklopol> introsort is an ugly sort
16:18:22 <AnMaster> oklopol, but fast isn't it?
16:18:29 <AnMaster> on an average computer
16:18:33 <oklopol> it's very good in practise
16:18:39 <oklopol> which is quite irrelevant
16:18:46 <AnMaster> what about smoothsort?
16:19:07 <oklopol> never heard
16:19:11 <ais523> I don't really like introsort
16:19:14 <AnMaster> "The smoothsort algorithm [1] [2] is a variation of heapsort developed by Edsger Dijkstra in 1981. Like heapsort, smoothsort's upper bound is O(n log n). The advantage of smoothsort is that it comes closer to O(n) time if the input is already sorted to some degree, whereas heapsort averages O(n log n) regardless of the initial sorted state. Due to its complexity, smoothsort is rarely used."
16:19:29 <oklopol> ah
16:19:30 <oklopol> yeah
16:19:32 <ais523> besides, isn't introsort still O(n log n) on contrived inputs?
16:19:37 <tusho> {Digging this subject up a bit. What do we gain with this current situation other than a lot of spam? I still think editing should be disabled for the non-registered, or then there needing to be something picture code for those who aren't logged in, or something. If unregistered people really want to contribute something they could just as well register, afterall, registering to use a site shouldn't be anything extraordinary practice in modern web. --Keymake
16:19:39 <ais523> s/n log n/n^2/
16:19:41 <oklopol> ais523: i'm fairly sure
16:19:41 <tusho> keymaker sooooooo opened a can of worms there
16:19:44 <tusho> but it'll never happen
16:19:46 <AnMaster> ais523, um no don't think so
16:19:54 <ais523> tusho: I think we need an antivandalbot for esolangs.org
16:19:55 <pikhq> ais523: It seems like introsort is meant as a good practical sorting algorithm, not a particularly elegant one.
16:19:56 <tusho> because for the forum graue specifically picked one requiring no registration & anonymous
16:20:03 <tusho> so register-to-edit won't happen
16:20:03 <pikhq> And you, of course, go for elegance.
16:20:05 <tusho> ais523: yes
16:20:09 <tusho> I might write one
16:20:28 <AnMaster> ais523, introsort basically switches to heapsort after some limit, so it's upper bound would be same as for heapsort
16:20:41 <AnMaster> which is O(n log n)
16:20:46 <oklopol> purity > elegance > practicalityu
16:20:49 <oklopol> *practicality
16:20:52 <AnMaster> blargh
16:21:00 <ais523> AnMaster: the bit before the limit could be engineered to work badly
16:21:15 <oklopol> pikhq: anyway, my point was quicksort would most likely be slower than bubble sort in bf
16:21:16 <tusho> p.s. the esolangs wiki tagline is Weirder Than You
16:21:21 <oklopol> but, an interesting subject
16:21:21 <tusho> confirm via Blue Colonge skin
16:21:32 <oklopol> haven't seen much order talk considering esolangs
16:21:32 <pikhq> oklopol: Def-BF != Brainfuck.
16:21:32 <pikhq> ;)
16:21:53 <oklopol> pikhq: isn't it meant for bf translation though?
16:21:59 <pikhq> No.
16:22:05 <ais523> tusho: yes, I knew that was the tagline, quite a good one I think
16:22:13 <pikhq> It's meant to be Brainfuck-esque, but for systems programming.
16:22:15 <AnMaster> pikhq, where can I get Def-BF specs?
16:22:21 <AnMaster> pikhq, and what about implementation?
16:22:25 <oklopol> pikhq: ah, i guess the name misleaded me
16:22:32 <pikhq> I'd hand them to you, but my bookmark is at home, not at work.
16:22:34 <oklopol> and the fact you can have brainfuck code in it :P
16:22:40 <pikhq> And the implementation? I have yet to write it.
16:22:46 <pikhq> oklopol: It's a superset of Brainfuck. ;)
16:23:02 <oklopol> yeah
16:23:10 <pikhq> Lessee here. . . Array access in Def-BF. . .
16:23:31 <oklopol> i'm considerably less interested if it's not compilable to brainfuck :P
16:23:36 <oklopol> i mean, sensibly
16:23:41 <oklopol> now food ->
16:26:18 <pikhq> Well, it is compilable to Brainfuck. . .
16:26:31 <ais523> in theory /everything/'s compilable to Brainfuck
16:26:39 <pikhq> Though that would be a minor pain. Especially the bit about having a call stack. . .
16:26:43 <ais523> apart from I/O mechanisms
16:27:03 <pikhq> Gregor's done it in C2BF, so it wouldn't be *too* painful, I guess.
16:27:09 <ais523> stacks aren't too hard to implement in BF, though
16:27:32 <ais523> but that's stacks of 8-bit integers or whatever the interp uses, not of call addresses
16:28:29 <pikhq> Well, I *think* that I have the Def-BF array access code here. . .
16:28:37 <pikhq> function: array[pointer, array_start] [ array_start pointer [ - ; > pointer ]]
16:29:27 <pikhq> Yes, it's hard to understand.
16:29:42 <pikhq> Erm. That's destructive of pointer.
16:30:14 <pikhq> function: array[pointer, array_start] [ var: tmp_pointer pointer array_start tmp_pointer [ - ; > tmp_pointer ]]
16:30:20 <pikhq> Viola.
16:32:52 <AnMaster> Deewiant, well if you are there, please take a look at
16:32:54 <AnMaster> http://rafb.net/p/V4MrQS18.html
16:36:50 -!- ais523 has quit (Remote closed the connection).
16:37:10 -!- ais523 has joined.
16:39:00 -!- ais523 has quit (Remote closed the connection).
16:39:15 -!- ais523 has joined.
16:45:41 <AnMaster> "In order to build the Ada compiler (GNAT) you must already have GNAT installed because portions of the Ada frontend are written in Ada (with GNAT extensions.) Refer to the Ada installation instructions for more specific information. "
16:45:46 <AnMaster> wtf
16:45:50 <AnMaster> how did they think there?
16:45:54 <ais523> AnMaster: you have to start from a binary
16:46:01 <ais523> just like with many other similar projects
16:46:04 <tusho> AnMaster: ghc only builds on ghc
16:46:05 <AnMaster> ais523, what if there is no binary for a specific arch?
16:46:10 <tusho> and then you write the compiler
16:46:13 <tusho> compile it on itself
16:46:14 <tusho> (cross-compile)
16:46:16 <tusho> then move the binary over
16:46:17 <AnMaster> ah
16:46:17 <ais523> AnMaster: then you cross-compile, obviously
16:46:22 <AnMaster> right
16:46:30 <ais523> for instance DJGPP only compiles on DOS using itself
16:46:49 <ais523> but you can use a Linux version of gcc to cross-compile it to get a version of DJGPP that runs on Linux and outputs DOS executables
16:46:59 <ais523> then compile that with itself to get a DOS version of DJGPP
16:47:08 <AnMaster> um, how do you get that djgpp version that works on linux?
16:47:18 <AnMaster> oh wait right
16:47:21 <AnMaster> you cross compile it
16:47:25 <AnMaster> blergh still
16:48:11 <AnMaster> well the first GNAT version couldn't have depended on GNAT I assume?
16:48:46 <pikhq> They probably bootstrapped the compiler.
16:48:57 <AnMaster> or used some earlier compiler
16:49:04 <AnMaster> gnat wasn't the first one afaik
16:49:11 <tusho> AnMaster: That's ... what pikhq said.
16:49:15 <AnMaster> right
16:49:22 <pikhq> Writing GNAT in a subset of Ada supported by a simple C compiler is possible. . .
16:49:29 <pikhq> Or even hand-compiling the Ada code.
16:49:29 <ais523> why are compilers for a lang often written in the lang itself/
16:49:32 <ais523> s/\//?/
16:49:34 <Deewiant> AnMaster: no long long, ptrdiff_t, size_t, wchar_t, clock_t, time_t, possibly others missing
16:49:35 <tusho> ais523: It's more fun.
16:49:44 <ais523> maybe because people implementing a lang are likely to be proficient in that lang
16:49:46 <ais523> and therefore like using it?
16:49:49 <tusho> And, besides, if your language is TOTAL FREAKIN' AWESOMENESS, wouldn't you want to write the complex compiler for it in that lang
16:49:51 <tusho> so that it's easier?
16:49:57 <tusho> Because it's TOTAL FREAKIN' AWESOMENESS.
16:49:57 <AnMaster> Deewiant, ah true, however that isn't easy with libffi, they are missing from there
16:50:02 <AnMaster> Deewiant, brb, phone
16:50:05 <tusho> Also. It gets you major geek points.
16:50:08 <Deewiant> I don't know about libffi
16:50:14 * pikhq gives Gregor major geek points
16:50:20 <Deewiant> I'm just thinking of C stuff that's missing
16:50:51 <pikhq> (Plof 2 has multiple implementations: a D interpreter, a Plof->C compiler in Plof, and a Plof->Js compiler in Plof)
16:50:53 <Deewiant> AnMaster: structs
16:51:58 <Deewiant> also, especially for a C FFI, just use 0gnirts
16:52:12 <Deewiant> but in general for -98 just use 0gnirts
16:52:16 <Deewiant> since everything else does
16:52:16 <oklopol> ais523: if i have the time, ill implement a stupid graph matcher / eodermdrome parser tonight, if you have any examples, do gimme
16:52:20 <ais523> tusho: like Chris Pressey writing Shelta in itself, when the only other interp from it was in asm
16:52:27 <ais523> oklopol: haven't written any yet, maybe I should
16:52:29 <oklopol> just saying because i don't have the time yet
16:52:29 <tusho> YES
16:52:37 <ais523> s/from/for/
16:52:39 <tusho> unintentional caps
16:52:41 <tusho> but i prefer it that way
16:52:54 <tusho> but yeah, shelta is pretty much the archetypical bootstrapping example
16:53:01 <oklopol> ais523: just something so i can test parsing and matching
16:53:14 <oklopol> dunno your rewriting semantics exactly
16:53:18 <oklopol> oh, actually i think i do.
16:53:22 <oklopol> that's trivial
16:53:32 <ais523> well, one other rule: commas toggle commentness
16:53:37 <ais523> e.g. ,this is a comment,
16:53:43 <ais523> Haifu has that rule and it works well there
16:53:55 <tusho> ais523: comments? In a tarpit?
16:54:07 <ais523> tusho: BF has comments
16:54:34 <tusho> yes
16:54:35 <tusho> implicit ones
16:54:37 <tusho> that's OK
16:54:43 <tusho> it's less effort than erroring out on invalid instructions
16:54:48 <ais523> tusho: I wasn't really using punctuation marks for anything else
16:54:50 <tusho> thus more tarpitty than explicit comments or explicit errors
16:55:01 <tusho> ais523: but this way you force people to use leetspeak
16:55:04 <AnMaster> <Deewiant> AnMaster: structs
16:55:07 <AnMaster> well
16:55:10 <AnMaster> that is hard to do
16:55:16 <tusho> |-| |= |_ |_ 0!
16:55:16 <AnMaster> how to marshall bitfields?
16:55:18 <AnMaster> packing?
16:55:20 <AnMaster> and so on
16:55:26 <AnMaster> <Deewiant> but in general for -98 just use 0gnirts
16:55:32 <AnMaster> two reasons
16:55:41 <AnMaster> char * will be useful when the data isn't a string
16:55:56 <AnMaster> that allows marshalling structs
16:56:01 <Deewiant> then separate the two cleanly
16:56:04 <Deewiant> or maybe you already did
16:56:08 <Deewiant> I didn't go through it in that much detail
16:56:14 <Deewiant> but use 0gnirts where it makes sense
16:56:21 <AnMaster> Deewiant, hm? char * here is just a binary string
16:56:43 <AnMaster> as for "gnirts"<len>, that is what funge-108 is moving to in new places
16:56:53 <Deewiant> yes, but where it points to a character string use 0gnirts
16:56:57 <Deewiant> and yes, I know
16:57:07 <AnMaster> and yes those types you mentioned, some may be useful
16:57:09 <Deewiant> which is why I explicitly said "for -98"
16:57:11 <ais523> AnMaster: gnirtslen strikes me as being much harder to handle than 0gnirts
16:57:30 <AnMaster> ais523, oh? it allows embedding nulls in a string
16:57:38 <AnMaster> which is kind of important here
16:57:52 <ais523> maybe it should be 01-"gnirts", then
16:58:01 <AnMaster> but yes library name could be 0gnirts
16:58:04 <ais523> also your method bounds string length, whereas mine doesn't
16:58:14 <AnMaster> ais523, you still have the problem of in-band data
16:58:33 <AnMaster> ais523, huh?
16:58:46 <AnMaster> you mean to the size of the funge cell type?
16:58:50 <ais523> AnMaster: yes
16:58:53 -!- olsner has joined.
16:59:03 <ais523> in Funge-98 there's nothing bounding string length AFAICT
16:59:24 <ais523> this could be important when processing very long documents, the stack's the only place to store them
16:59:24 <Deewiant> if you have strings bigger than size_t you're screwed anyway :-P
16:59:32 <AnMaster> Deewiant, yes indeed
16:59:38 <ais523> Deewiant: not all langs use a size_t
16:59:45 <AnMaster> hm?
16:59:58 <ais523> some langs are theoretically capable of unlimited growth in data storage
17:00:01 <Deewiant> if your interpreter doesn't support cells of size_t size then you're also screwed anyway
17:00:07 <ais523> and Funge-98's one of them
17:00:43 <AnMaster> I changed to 0"gnirts" in the places it won't cause loss of functionality
17:01:02 <AnMaster> http://rafb.net/p/YKOpiP40.html
17:01:36 <AnMaster> Deewiant, anyway I looked at how to marshal complex types, like structs
17:01:48 <Deewiant> you just have to do it manually
17:01:50 <AnMaster> there isn't really a sane way I'm afraid.
17:01:52 <Deewiant> pointer to struct
17:01:57 <Deewiant> pointer to next field of struct
17:01:59 <Deewiant> hence you get the offset
17:02:01 <Deewiant> etc.
17:02:08 <AnMaster> Deewiant, well I need to describe the type of the struct too
17:02:11 <AnMaster> like bitfields
17:02:12 <AnMaster> and so on
17:02:23 <AnMaster> stuff which libffi can't always handle
17:02:29 <Deewiant> bitfields are messy and not necessarily important
17:02:29 <AnMaster> libffi can handle some structs
17:02:43 <Deewiant> actually, they're usually padded too
17:02:43 <AnMaster> Deewiant, I use bitfields in cfunge in some places
17:02:46 <Deewiant> so they're just integers
17:02:58 <AnMaster> Deewiant, sometimes they are merged with the padding of other fields
17:03:08 <Deewiant> yes, and
17:03:18 <AnMaster> which makes it a lot more complex
17:03:33 <Deewiant> how
17:03:41 <AnMaster> for example: short; int:1;
17:03:56 <Deewiant> struct foo bar[2];
17:04:18 <AnMaster> Deewiant, if the int wasn't a bitfield, then there would have been a padding of 2 bytes between
17:04:24 <AnMaster> now it is merged into that padding
17:04:27 <Deewiant> &bar[0] <-- start address
17:04:31 <Deewiant> &bar[0].short <-- address of short
17:04:37 <tusho> Anyone want to give me a unicode down-arrow?
17:04:38 <Deewiant> &bar[0].int <-- address of int
17:04:38 <AnMaster> Deewiant, so what interface are you suggesting for it?
17:04:48 <Deewiant> &bar[1] <-- end of &bar[0]
17:05:05 <ais523>
17:05:12 <ais523> 0x2193
17:05:20 <tusho> without stalk?
17:05:23 <ais523> tusho: ↑
17:05:36 <tusho> ...
17:05:38 <AnMaster> Deewiant, ?
17:05:41 <tusho> without the stalk. going downwards.
17:05:51 <Deewiant> I don't know how it would work in practice with befunge, but something like that would work, i.e. manually giving the offsets as addresses
17:05:51 <ais523> tusho: I was trying to say that before your request to get you to look up
17:06:06 <tusho> ah
17:06:19 <AnMaster> Deewiant, well that needs knowledge of the details of the ABI in question
17:06:37 <AnMaster> Deewiant, otherwise you can't know how a pointer, or a long double would be padded
17:06:37 <ais523> there's 0x2304 but for some reason I can't paste it into Konversation's text box⌄⌄⌄⌄
17:06:40 <ais523> that's just an arrowhead
17:06:54 <tusho> hmph
17:06:58 <tusho> I just want a filled v, essentially
17:06:59 <tusho> :-)
17:07:04 <Deewiant> AnMaster: first of all, the C ABI is standardized. second of all, what does padding matter
17:07:06 <AnMaster> I guess I need a define struct type function
17:07:10 <ais523>
17:07:14 <ais523> that's what you want?
17:07:17 <AnMaster> Deewiant, padding matters for where it is in a struct
17:07:32 <ais523> U+25BC BLACK DOWN-POINTING TRIANGLE
17:07:39 <AnMaster> Deewiant, because of alignment
17:07:42 <Deewiant> AnMaster: I direct you to my &bar[0] above
17:07:46 <Deewiant> all the info is there
17:07:49 <ais523> tusho: there's ▾ as well
17:08:00 <ais523> which is apparently the same thing but smaller
17:08:10 <tusho> ah yes
17:08:12 <tusho> thanks
17:08:24 <ais523> which one do you prefer?
17:08:33 <AnMaster> Deewiant, um I don't get what you mean with it
17:08:41 <Deewiant> tusho: http://www.fileformat.info/info/unicode/block/geometric_shapes/utf8test.htm and http://www.fileformat.info/info/unicode/category/So/list.htm
17:08:51 <AnMaster> what about a short followed by a long
17:08:54 <tusho> thanks Deewiant
17:08:55 <tusho> :)
17:08:58 <AnMaster> that will differ between 32-bit and 64-bit
17:09:03 <tusho> ▾ seems right
17:09:04 <Deewiant> AnMaster: you can get the position of a field in a struct by taking the difference of &struct.field and &struct
17:09:18 <ais523> U+25BE, then
17:09:21 <AnMaster> on x86: short <16 bits padding> long
17:09:34 <AnMaster> on x86_64: short <48 bits padding> long
17:10:05 <AnMaster> Deewiant, well if it was at the start of a struct, it would be aligned at the start
17:10:08 <Deewiant> AnMaster: and &struct.long - &struct.short will be 16 and 48, respectively.
17:10:11 <AnMaster> Deewiant, also this is all about resolving at runtime
17:10:18 <AnMaster> so offsetof() doesn't work
17:10:22 <ais523> someone should invent a UTF-1
17:10:26 <Deewiant> yes, of course it is at runtime
17:10:34 <ais523> there's already UTF-6, UTF-7, UTF-8 and UTF-9, after all
17:10:42 <ais523> and Punycode has been described as UTF-5
17:10:47 <Deewiant> and taking the address of something works at runtime
17:10:51 <Deewiant> it's called 'lea', look into it
17:11:10 <tusho> ais523: what would utf-1 be?
17:11:17 <ais523> tusho: it would be a stream of bits
17:11:17 <AnMaster> Deewiant, well I won't know how the struct looks until runtime, so where would I have a prepared struct to do that on
17:11:24 <AnMaster> I can't generate one at runtime and compile it...
17:11:25 <ais523> which is self-delimiting, not split into bytes in any way
17:11:26 <Deewiant> ais523: of zeroes, rather
17:11:32 <tusho> ais523: that's impossible?
17:11:43 <ais523> Deewiant: no, UTF-8 uses 8-bit integers, so UTF-1 would use 1-bit integers
17:11:49 <ais523> Deewiant: you just described UTF-0
17:11:56 <Deewiant> ah, right
17:11:58 <Deewiant> my bad
17:12:11 <ais523> tusho: not impossible, in fact quite easy, you could use base-Fibonacci for instance
17:12:15 <Deewiant> AnMaster: well, one assumes that the C program is compiled
17:12:45 <Deewiant> the befunge program can maybe request the info via the FFI, since the C part knows it?
17:12:47 <ais523> Deewiant: I assumed lea was just a clever way to get the adressing unit of the CPU to do calculations
17:12:56 <ais523> s/adressing/addressing/
17:13:11 <ais523> it doesn't do anything that couldn't be done with MOV and arithmetic, I don't think
17:13:15 <Deewiant> yes, that was its original purpose all along ;-P
17:13:24 <ihope> UTF-1.5849625.
17:13:33 <AnMaster> Deewiant, C library you mean
17:13:49 <ais523> ihope: what's with those decimals? Base-fibonacci would be about UTF-1.618
17:13:49 <AnMaster> Deewiant, and I can't see how a struct looks from a binary
17:13:50 <Deewiant> I don't mean anything
17:14:05 <AnMaster> Deewiant, the binary doesn't have that metadata unless it contains debug info
17:14:16 <ihope> ais523: this is base 3.
17:14:25 <ais523> ihope: ah
17:14:34 <Deewiant> AnMaster: ... so you're essentially trying to implement something which allows calling C library functions without seeing the corresponding .h file?
17:14:44 <ihope> Fibonacci coding, where every string is valid unless it contains a 11?
17:14:48 <AnMaster> Deewiant, of course, that is what libffi does
17:14:51 <tusho> Deewiant: that's ... what libffi does
17:14:59 <Deewiant> I don't know anything of libffi
17:15:20 <ihope> UTF-log(phi)/log(2), surely.
17:15:22 <AnMaster> Deewiant, you tell libffi what parameters a function takes, then it handles the ABI details
17:15:23 <Deewiant> but, so, if you have a function which takes a struct argument... how would you know what to put in, in any other language
17:15:29 <AnMaster> like what stuff to pass in registers and so on
17:15:31 <AnMaster> and alignment
17:16:05 <Deewiant> AnMaster: doesn't answer my question
17:16:30 <AnMaster> you can tell it about structs too and it fixes alignment, but the interface for befunge code would be painful
17:16:41 <AnMaster> Deewiant, and I guess you read the docs
17:17:02 <Deewiant> libffi docs? no, I didn't nor will I
17:17:09 <AnMaster> no...
17:17:12 <AnMaster> docs for whatever you call
17:17:14 <Deewiant> and yeah, I've essentially been describing such an interface
17:17:23 <Deewiant> and now you tell me that there's already support for that
17:17:28 <Deewiant> so why am I talking again? :_P
17:17:58 -!- Hiato has quit ("Leaving.").
17:18:04 <AnMaster> Deewiant, I don't parse header files when I use a native function in C#, instead I do something like:
17:18:05 <AnMaster> [DllImport(X52_SO), SuppressUnmanagedCodeSecurityAttribute]
17:18:05 <AnMaster> internal static extern X52Type x52_gettype(IntPtr hdl);
17:18:17 <AnMaster> to tell it how it looks
17:18:19 <ais523> AnMaster: you use C#? I thought you didn't like the Windows API
17:18:27 <AnMaster> ais523, I have used C# + mono
17:18:30 <AnMaster> I don't any longer
17:18:36 <ais523> AnMaster: it still uses the Windows API
17:18:41 <ais523> or maybe that's how you came to hate it?
17:18:42 <Deewiant> AnMaster: your point, I do not see it
17:18:46 <AnMaster> ais523, yep, I used to use it, but I don't use it any longer I said
17:19:03 <AnMaster> Deewiant, my point is: what would I need a header file for!?
17:19:49 <AnMaster> Deewiant, I saw how you did some prototypes for C functions in TERM fingerprint (commented out POSIX part, I got TERM to work using those functions btw)
17:19:56 <AnMaster> you didn't use the C header file it seemd
17:20:00 <AnMaster> seemed*
17:20:05 <Deewiant> if the docs properly describe the internals of course you don't need one
17:20:09 <AnMaster> so why would not befunge code also declare it's own extern stuff
17:20:12 <Deewiant> but there the docs serve the equivaelnt purpose
17:20:16 <Deewiant> s/elnt/lent/
17:20:37 <AnMaster> Deewiant, you looked at the header file and translated it for use in D basically I assume?
17:20:38 <Deewiant> the point is that, at some point in time, you have to see what exactly struct Foo contains to be able to call int f(struct Foo);
17:20:43 <Deewiant> yes.
17:20:51 <AnMaster> so the befunge programmer have to do the same
17:20:57 <Deewiant> yes, exactly.
17:21:22 <Deewiant> so what's the problem with being able to tell libffi via befunge instructions "i haz a struct which contains a char and an int in that order"
17:21:28 <AnMaster> then what was the issue? apart from missing ability to declare structs
17:21:35 <AnMaster> where I can't come up with a good interface
17:21:38 <ais523> Deewiant: you only need to know how big it is
17:21:45 <ais523> to be able to pass it to a function
17:21:50 <Deewiant> ais523: sure, but I'm assuming we don't know that
17:21:58 <AnMaster> ais523, and if you want the info out of it, a lot more
17:21:58 <ais523> putting the values in it in the first place might be difficult if you don't know its internal structure, though
17:22:05 <Deewiant> and exactly that
17:22:12 <Deewiant> you beat me to it
17:22:18 <AnMaster> and that is where I can't come up with a good befunge interface
17:22:27 <AnMaster> apart from bitfields, libffi can do it
17:22:39 <Deewiant> just have a one-to-one mapping between libffi functions and befunge instructions?
17:22:42 <AnMaster> I guess I have to do struct ids
17:22:46 <AnMaster> and so on
17:22:54 <AnMaster> Deewiant, not so easy really :/
17:22:59 <Deewiant> and yeah, so you support at most size_t.max structs at a time, or something
17:23:00 <AnMaster> Deewiant, it uses a lot of pointers
17:23:12 <AnMaster> so I need a lot of unique ids
17:23:15 <Deewiant> well, you have to deal with pointers anyway, neh?
17:23:19 <AnMaster> yes
17:23:21 <Deewiant> how did you do that, actually
17:23:27 <Deewiant> a pointer doesn't necessarily fit in an int
17:23:34 <Deewiant> what about function pointers, too
17:23:36 <AnMaster> see details in specs
17:23:41 <AnMaster> " On 64-bit platforms with 32-bit funges this may be stored in some array
17:23:42 <AnMaster> in the interpreter and the programs get an unique ID for it instead that
17:23:42 <AnMaster> will be looked up if a pointer is passed later."
17:24:02 <AnMaster> as for function pointers, more unique ids
17:24:18 <Deewiant> you're too specific, "64-bit with 32-bit"... what about 69-bit with 7-bit??
17:24:26 <AnMaster> Deewiant, same applies of course
17:24:46 <Deewiant> just say it generally "this is an int which represents a pointer value in some implementation-dependant way"
17:25:04 <AnMaster> On platforms with large pointer than funge space cells this may be stored
17:25:04 <AnMaster> in some array in the interpreter and the programs get an unique ID for it
17:25:04 <AnMaster> instead that will be looked up if a pointer is passed later.
17:25:08 <AnMaster> maybe that?
17:25:15 <Deewiant> too specific
17:25:18 <AnMaster> Deewiant, basically it would work about the same as refc
17:25:22 <Deewiant> why an array, why not a binary tree
17:26:01 <Deewiant> it's a spec, you don't have to talk about implementation details
17:26:14 <Deewiant> unless you want to have subsections like "suggestions for implementers: ..."
17:27:03 <AnMaster> well I will make it more generic
17:27:40 * ais523 just googled "C-INTERCAL"
17:27:49 <AnMaster> anyway generic pointers are useful for 1) you don't care what it contains, 2) you need something too complex to express using the FFI, then you could use memcpy on said pointer later on
17:27:54 <ais523> and got these as related links from Ohloh (which I've never heard of): CCBI, cfunge, CLISP - an ANSI Common Lisp, GNU Smalltalk, Pike
17:27:59 <ais523> the first two I can understand
17:28:05 <ais523> the other three not so much
17:28:08 <AnMaster> ais523, well I can't get the other ones
17:28:16 <tusho> ais523: ohloh is ...
17:28:17 <tusho> uh...
17:28:19 <tusho> inaccurate.
17:28:27 <ais523> well, the first two were spot on
17:28:43 <ais523> it missed CLC-INTERCAL, but other than that CCBI and cfunge are both pretty similar, probably with cfunge being more accurate
17:29:03 <AnMaster> ais523, CLC-INTERCAL doesn't have an entry on ohloh
17:29:14 <ais523> AnMaster: I'm not that surprised
17:29:15 * AnMaster just checked
17:29:49 <AnMaster> and I think I added C-INTERCAL there some months ago
17:30:04 <ais523> AnMaster: why?
17:30:14 <AnMaster> ais523, why not?
17:30:17 <ais523> makes sense
17:30:19 <AnMaster> it was missing
17:30:20 <ais523> I was just wondering
17:30:47 <AnMaster> ais523, check my stack size there, for some time I added a lot of stuff that I used
17:38:06 <ais523> wow... http://www.freebsdsoftware.org/lang/intercal.html
17:38:15 <ais523> it seems that C-INTERCAL's being ported all over the place nowadays
17:40:27 <AnMaster> ah well I got an idea for structs
17:40:41 <AnMaster> ais523, does it need porting?
17:40:56 <ais523> AnMaster: nah, it compiles out-of-box on FreeBSD
17:41:06 <ais523> although I think they fixed the prefix thing independently of you reporting it
17:41:19 <AnMaster> date: 1998/04/17 21:52:16; author: mph; state: Exp; lines: +0 -0
17:41:22 <AnMaster> was the first one
17:41:24 <AnMaster> it seems
17:42:07 <AnMaster> ais523, is one of the change log entries a poem!?
17:42:11 <AnMaster> 1.8
17:42:12 <ais523> no idea
17:42:21 <AnMaster> v. 1.8
17:42:21 <AnMaster> date: 2003/03/07 06:05:31; author: ade; state: Exp; lines: +1 -0
17:42:21 <AnMaster> Clear moonlight beckons.
17:42:21 <AnMaster> Requiem mors pacem pkg-comment,
17:42:21 <AnMaster> And be calm ports tree.
17:42:22 <AnMaster> E Nomini Patri, E Fili, E Spiritu Sancti.
17:42:24 <AnMaster> wtf
17:44:09 <Deewiant> :-DD
17:45:43 <AnMaster> Deewiant, anyway my structs api basically allows converting structs to and from generic pointers
17:49:00 <AnMaster> you 1) define a struct type 2) you instantiate a struct object and get a generic pointer 3) you can then set and get individual fields
17:49:15 <AnMaster> you can also replace step 2 if you get the pointer from a function you called
17:49:25 <AnMaster> Deewiant, does the generic idea seem sane?
17:50:17 <AnMaster> Deewiant, ?
17:50:23 <Deewiant> sure, why not, you just use POD functionality but of course it's befunge so I don't think it matters that much :-P
17:50:29 <AnMaster> POD?
17:50:38 <Deewiant> AnMaster: I do do other things you know, just because I don't answer in a minute...
17:50:42 <Deewiant> plain old data
17:50:47 -!- sebbu has quit (Read error: 110 (Connection timed out)).
17:50:55 <AnMaster> um... and what does this mean in this contex?
17:50:57 <AnMaster> context*
17:51:25 <Deewiant> it generally refers to how structs don't have any metadata, no vtable or anything, just what the definition says + padding
17:51:51 <Deewiant> in this case I was thinking that since you manipulate them only through pointers they become kinda opaque
17:51:58 <AnMaster> well of course, why would they have anything else?
17:52:07 <AnMaster> in C they certainly don't
17:52:52 <Deewiant> they could have vtables to allow inheritance, for instance
17:52:55 <Deewiant> but they don't, and hence they're POD.
17:52:58 -!- sebbu has joined.
17:53:04 <Deewiant> </definition>
17:53:55 <AnMaster> Deewiant, well this isn't a C++ FFI, it is a C FFI
17:54:00 <AnMaster> so not an issue
17:54:11 <Deewiant> you're completely missing my point
17:54:13 <Deewiant> as usual
17:54:15 <Deewiant> :-P
17:54:21 <AnMaster> Deewiant, well what did you mean then?
17:54:21 <Deewiant> 2008-07-16 19:51:50 ( Deewiant) in this case I was thinking that since you manipulate them only through pointers they become kinda opaque
17:54:29 <AnMaster> yes and?
17:54:44 <AnMaster> there is no sane way other than pointers if you don't know data at compile time
17:55:27 <Deewiant> I don't know if it actually matters to be honest
17:55:30 <Deewiant> just came to mind
17:55:39 <AnMaster> hm
17:55:55 <Deewiant> I mean, you can still do memcpy and stuff even though it's behind a pointer...
17:56:03 <Deewiant> shrug, guess it doesn't matter
17:56:13 <Deewiant> except for efficiency but hey, this is befunge :-P
17:56:29 <tusho> Deewiant: I hope that was sarcasm
17:56:39 <AnMaster> haha
17:56:45 <Deewiant> no, not for me it wasn't
17:56:49 <Deewiant> for AnMaster it might be ;-)
17:56:50 <tusho> Deewiant: well yeah
17:56:50 <tusho> :)
17:56:59 <AnMaster> hahah
17:57:19 <AnMaster> well anyway this CFFI isn't efficient
17:57:22 <AnMaster> I never said it was
17:57:48 <AnMaster> it is just about: because I can
18:05:24 -!- Corun has quit ("This computer has gone to sleep").
18:10:53 -!- Sgeo has joined.
18:15:23 -!- ais523 has quit (Remote closed the connection).
18:15:42 -!- ais523 has joined.
18:24:10 <AnMaster> actually I can't implement struct stuff until how I understands exactly how it is done in libffi
18:24:12 <AnMaster> the rest I can do
18:24:50 <AnMaster> I do understand how it passes structs by value, but now how it pass them by pointer
18:26:48 <AnMaster> `ffi_type_pointer'
18:26:48 <AnMaster> A generic `void *' pointer. You should use this for all pointers,
18:26:48 <AnMaster> regardless of their real type.
18:26:54 <AnMaster> however I don't get how to convert then
18:27:04 <ais523> AnMaster: by assignment
18:27:16 <AnMaster> ais523, sure? it doesn't seem to make sense here
18:27:18 <ais523> i.e. if you assign that to a struct foo*, it becomes a struct foo *
18:27:38 <AnMaster> well at runtime using libffi I mean...
18:27:50 <oklopol> ais523: i'll prolly go offline soon
18:27:51 <oklopol> so
18:28:05 <oklopol> do you have any examples / a spec of some sort for the language?
18:28:20 <AnMaster> oklopol, offline for how long?
18:28:32 <oklopol> AnMaster: for an unspecified amount of time
18:28:36 <oklopol> is that important?
18:28:55 <oklopol> i don't see how anyone could need me :o
18:29:10 <ais523> oklopol: unfortunately not
18:29:14 <ais523> it's only in my head atm, nowhere else
18:29:28 <AnMaster> oklopol, hope you get back within a few days
18:29:31 <oklopol> ais523: if you feel like writing down examples, would be nice
18:29:42 <oklopol> AnMaster: i will definitely come back within a few days.
18:30:01 <AnMaster> oklopol, going somewhere without internet? </just trying to be nice>
18:30:03 <ais523> ok, maybe this evening or something, now is not a good type for coding from my point of view, I'm sitting on a wooden chair in a cafe of a library which closes in about 30 mins
18:30:24 <AnMaster> ais523, will you move to somewhere else with internet after?
18:30:27 <AnMaster> I hope you do :)
18:30:31 <ais523> AnMaster: no
18:30:35 <AnMaster> ais523, :(
18:30:37 <ais523> I have to get sleep sometime
18:30:40 <ais523> and I'm a bit low on it atm
18:30:44 <AnMaster> ais523, did you make the updates for cfunge?
18:30:48 <ais523> AnMaster: no
18:30:51 <AnMaster> ah ok
18:31:23 <oklopol> i will prolly leave like in half an hour.
18:31:29 <oklopol> AnMaster: well no
18:31:30 <oklopol> but
18:31:34 <AnMaster> ais523, anyway the libffi will be optional, and I suspect it could cause issues when used at the same time as IFFI
18:31:39 <oklopol> i'm going somewhere where i will not use the internet
18:31:43 <AnMaster> it is not impossible it does stack tricks you see
18:31:59 <AnMaster> oklopol, ah, have fun whatever the reason is
18:32:01 <oklopol> and yeah, i don't mind people being nice, it's actually quite nice.
18:32:14 * oklopol has always fun
18:32:39 <AnMaster> ais523, and libffi isn't that common, so yeah optional
18:33:29 <oklopol> okay i'll write the parser now, that should be a trivial task
18:34:32 <AnMaster> ais523, I suspect CFFI will be more messy than IFFI
18:34:38 <ais523> AnMaster: ugh
18:34:39 <AnMaster> also it will take quite a bit of time to implement
18:34:48 <AnMaster> ais523, haha
18:34:53 <AnMaster> ais523, well maybe not
18:35:09 <AnMaster> ais523, more mess before the preprocessor, but less messy after
18:35:16 <AnMaster> however, it will not be feral
18:35:27 <AnMaster> that is a main difference
18:35:43 <ais523> AnMaster: I suspect it will be less full-featured than IFFI, it doesn't allow calling back into the Befunge from outside for instance
18:36:13 <AnMaster> ais523, yes indeed, as I would need a function pointer to call back to
18:36:45 <AnMaster> and I can't see how to do that
18:37:49 <AnMaster> ais523, however I can't think of a lot of libc functions that I would even think about using from inside befunge, and that accepts callbacks
18:37:52 <AnMaster> qsort maybe
18:37:56 <AnMaster> but that's it
18:38:06 <ais523> AnMaster: but what if you want to use Befunge routines in a C program?
18:38:08 <AnMaster> atexit from in there makes no sense
18:38:13 <AnMaster> ais523, um what?
18:38:24 <ais523> AnMaster: it's not an unreasonable request, surely?
18:38:33 <AnMaster> you mean call a befunge program from C?
18:38:38 <AnMaster> well that isn't what this does
18:38:38 <ais523> yes
18:38:50 <AnMaster> it is not an intended goal
18:38:58 <AnMaster> the goal here is to call library functions at runtime
18:39:06 <oklopol> >>> parse_eodermdrome("eodermdrome")
18:39:06 <oklopol> {'e': set(['r', 'm', 'd', 'o']), 'd': set(['m', 'r', 'e', 'o']), 'm': set(['r', 'e', 'd', 'o']), 'o': set(['m', 'r', 'e', 'd']), 'r': set(['m', 'e', 'd', 'o'])}
18:39:10 <oklopol> ais523: looks correct?
18:39:25 <ais523> oklopol: yes
18:39:39 <oklopol> took a while, since i'm coding straight into the prompt
18:39:46 <oklopol> too lazy to make a file :P
18:39:55 <AnMaster> oklopol, make a file now then
18:40:14 <oklopol> NEVER
18:40:14 <oklopol> well i guess.
18:40:16 <AnMaster> unless you want to loose your works?
18:40:35 <AnMaster> ais523, well afk for a few hours
18:43:43 -!- olsner has quit.
18:44:00 <oklopol> *lose
18:44:20 <oklopol> also a few lines of python isn't really that dangerous to lose :D
18:44:42 <oklopol> especially as most of it was stuff real languages like oklotalk hace built in
18:44:43 <oklopol> *have
18:44:52 <tusho> oklopol: betcha python has them
18:44:53 <tusho> what were they
18:45:05 <oklopol> err well a default value dictionary
18:45:20 <oklopol> and dropping all references to a certain object from a data structure
18:45:32 -!- Hiato has joined.
18:46:18 <oklopol> and do remember the key issue is having them built-in, i don't want to import shit.
18:47:02 <tusho> gosh, a modularized standard library!
18:47:04 <tusho> how evil!
18:47:06 <oklopol> ais523: write me a small example please, i don't wanna think! :P
18:47:09 <tusho> 'import x' is so hard
18:47:15 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
18:47:26 <oklopol> tusho: it's not hard
18:47:31 <oklopol> that's not the point
18:58:30 <AnMaster> back
18:59:48 * AnMaster is happy to see someone else than himself being the target for tusho's sarcasm for once
19:00:06 * tusho rolls eyes
19:00:27 <lament> in fact, module systems are for losers!
19:00:40 <lament> Real men code in C and put all the code in one big file so they don't have to include anything!
19:00:40 <tusho> lament: and assholes
19:01:40 <AnMaster> lament, well I code C but split it into many files, you could call them modules even
19:02:29 <tusho> They're modules because they're multiple files.
19:02:36 <AnMaster> not really
19:03:03 <AnMaster> it is possible to split the c files into a totally non-logical manner
19:03:09 <AnMaster> say, one function per file
19:03:17 <AnMaster> then include all the C files into one main C file
19:03:28 <lament> tusho: to me, 'module system' implies compartmentalized namespaces
19:03:33 <AnMaster> making sure none of the "modules" work without any other
19:03:38 <tusho> lament: this is called ``sarcasm''.
19:03:51 <AnMaster> lament, ah... well yes I do that most time
19:04:01 <AnMaster> I have Stack* FungeSpace* and so on for function names
19:04:03 <AnMaster> Input*
19:04:13 <AnMaster> there are a few in the "global" name space then
19:04:37 <AnMaster> lament, of course these are not true namespaces like in C++ or whatever
19:04:44 <tusho> http://article.gmane.org/gmane.linux.kernel/706950
19:04:47 <tusho> masturbating monkeys!
19:04:55 <AnMaster> tusho, seen it
19:06:22 <oklopol> lament: Real men code in C and put all the code in one big file so they don't have to include anything! <<< exactly, except unlike you i'm serious :D
19:07:51 <AnMaster> well tusho you should stop picking on me for using posix_fadvise() ;P
19:07:53 <AnMaster> this is worse
19:08:04 <tusho> AnMaster: oklo-coding is art.
19:08:09 <tusho> twisted, outsider art
19:08:10 <tusho> but art
19:08:21 <AnMaster> tusho, well mine is another sort of art then
19:08:27 <AnMaster> annoy-tusho art
19:08:29 <tusho> AnMaster: yeah ... 'awful' art
19:08:34 <oklopol> :)
19:08:39 <AnMaster> modern expressionism
19:08:39 <AnMaster> :P
19:08:42 <oklopol> anyway, me goes, see ya later
19:08:47 <AnMaster> oklopol, cya
19:08:49 <tusho> PREMODERN POSTEXPRESSIONISM
19:08:51 <tusho> ISM
19:09:14 <oklopol> i'm almost finished with eodermdrome, that is, haven't started yet but i'm sure it's trivial
19:09:20 <AnMaster> hm? Postmodern preexpressionism maybe?
19:09:21 <oklopol> so, you'll see that tomorrow, ais
19:09:22 <oklopol> right
19:09:25 <oklopol> not here
19:09:29 <oklopol> anyway, bye
19:09:30 <oklopol> ->
19:09:32 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
19:09:53 <AnMaster> btw tusho, why did you change from the nick ehird?
19:10:16 <tusho> i had invented it earlier, didn't really like 'ehird', and right to vanish
19:10:30 <tusho> right to vanish is harder if you use your real name.
19:10:34 <AnMaster> ah
19:10:35 <AnMaster> true
19:11:21 <AnMaster> anyway CFFI draft will need some more work
19:11:29 <AnMaster> before I can even think about implementing it
19:11:49 <AnMaster> it won't work the way I did it, but now I think I can see how to do it properly
19:14:39 <AnMaster> tusho, also if you read the cfunge readme you would know that there are a few other fingerprints except TRDS that I won't implement
19:14:48 <tusho> like?
19:14:50 <AnMaster> I wonder why you haven't bugged me
19:14:53 <AnMaster> tusho, see readme
19:15:11 <tusho> like I've downloaded cfunge
19:15:17 <AnMaster> tusho, haha :P
19:15:23 <AnMaster> well I won't say
19:15:29 <AnMaster> so that is the only way to find out
19:15:41 <AnMaster> heck, even ccbi doesn't implement some of those
19:15:49 <tusho> i am so excited
19:15:54 <tusho> i will download it immediately to see.
19:16:05 <AnMaster> tusho, well one because it contradicts Funge98 specs
19:16:57 <tusho> oh?
19:17:29 <AnMaster> yes, iirc the mycology readme or the ccbi readme mentions it
19:17:36 <AnMaster> mycology certainly doesn't test it
19:18:30 <lament> oh wow
19:18:37 <AnMaster> lament, what?
19:18:38 <lament> i just realized that i can't type !!!!!!111 by accident
19:18:45 <AnMaster> you can't?
19:18:49 <lament> nope
19:18:51 <AnMaster> different keyboard layout?
19:18:59 <lament> i think it's an OS X feature.
19:18:59 <AnMaster> dvorak or azerty maybe?
19:19:04 <AnMaster> lament, eh?
19:19:06 <AnMaster> what?!
19:19:11 <lament> If i press shift and hold 1
19:19:15 <AnMaster> yes?
19:19:25 <lament> once I release shift, it stops typing.
19:19:31 <AnMaster> interesting
19:19:38 <lament> same with any other key
19:19:52 <lament> <3 OS X
19:19:52 <tusho> yeah
19:19:54 <AnMaster> clearly Apple want's to kill l33t sp33k
19:19:55 <AnMaster> ;P
19:19:56 <tusho> it's good behaviour
19:20:01 <AnMaster> but a good idea
19:20:13 <tusho> it's the little things
19:20:16 <lament> it's one of those things that seem completely obvious in retrospect
19:20:38 <AnMaster> lament, well I could probably set something in X to cause same effect I think
19:20:47 <lament> maybe.
19:21:12 <AnMaster> I think I even seen an option for it
19:21:24 <lament> but with little things, it's very important that the default setting is sane
19:21:51 <lament> and it's all about the little things :)
19:21:52 <AnMaster> lament, defaults? blargh
19:22:04 <AnMaster> lament, but how do you change that on os x
19:22:11 <lament> AnMaster: well, case in point: YOU didn't change your X setting.
19:22:12 <tusho> AnMaster: system preferences->keyboard
19:22:13 <AnMaster> so the shift thing works as it does on other platforms
19:22:18 <tusho> if it's in there
19:22:19 <tusho> you can do it
19:22:23 <AnMaster> lament, because I don't need it
19:22:32 <tusho> AnMaster: will you ever need the opposite?
19:22:36 <tusho> I don't see a good case for it
19:22:42 <AnMaster> tusho, well, nostalgia?
19:22:42 <tusho> safe for games, which already override that stuff
19:22:43 <AnMaster> ;P
19:23:04 <AnMaster> oh yes, in games
19:23:11 <AnMaster> because shift may mean run
19:23:12 <tusho> but games already get keypresses directly
19:23:14 <tusho> so they don't get that behaviour
19:23:16 <AnMaster> they do
19:23:23 <AnMaster> indeed
19:23:30 <AnMaster> tusho, anyway a reason: nostalgia :P
19:23:36 <AnMaster> not a good reason I knoiw
19:23:38 <AnMaster> know*
19:23:54 <tusho> yeah see os x is designed for using :-)
19:24:16 <lament> defaults are important because there's thousands of little things like this
19:24:28 <lament> none of which, taken individuall, matters a whole lot
19:27:47 <AnMaster> hm I got a better idea for providing the parameter details, basically giving the info as a string of some sort
19:27:50 <AnMaster> that I then parse
19:27:53 <AnMaster> like say:
19:28:01 <AnMaster> "double, double, int"
19:28:17 <AnMaster> easier to write the befunge code than having to worry about integer values for them
19:29:07 -!- olsner has joined.
19:58:53 -!- Slereah2 has joined.
20:26:23 <AnMaster> Deewiant, a bug in ccbi, I was implementing FRTH and got:
20:26:27 <AnMaster> GOOD: L rolls value correctly
20:26:30 <AnMaster> GOOD: P picks value correctly
20:26:33 <AnMaster> both are lies
20:26:41 <AnMaster> the functions are still empty
20:26:55 <AnMaster> I just tested that my D in FRTH worked
20:27:26 <tusho> AnMaster: a bug in MYCOLOGY
20:27:52 <Deewiant> meh
20:27:58 <AnMaster> ah yes
20:28:00 <AnMaster> tusho, a typo
20:28:03 <AnMaster> indeed
20:28:07 <Deewiant> of course you know that if the function is empty, it doesn't work :-P
20:28:20 <Deewiant> but if it would pop even one value it would detect it correctly :-P
20:29:06 <AnMaster> Deewiant, I'm not clear on what they should do
20:29:08 <Deewiant> in general I assume that the instruction at least pops the right number of arguments
20:29:19 <AnMaster> "Forth Roll command"
20:29:23 <AnMaster> is the only docs for it
20:29:26 <Deewiant> I can't remember either, read up on FORTH and find out
20:29:29 <AnMaster> and I don't know Forth
20:29:36 <Deewiant> so look at the forth docs
20:29:41 <AnMaster> ah well...
20:29:47 <AnMaster> or just reverse engineer ccbi
20:29:55 * AnMaster takes the second, easier, path
20:37:04 <AnMaster> Deewiant, ooh I was studying your stack code
20:37:11 <AnMaster> seems you *do* care about performance
20:37:25 <AnMaster> according to a comment in container.d lines 44 to 58
20:37:41 * AnMaster pokes tusho to inform him
20:37:47 <tusho> whatever
20:38:35 <AnMaster> tusho, http://rafb.net/p/tJYDmC47.html
20:38:43 <tusho> whatever
20:38:53 <AnMaster> also, C got /**/, D have /++/
20:39:03 <AnMaster> anyone with /%%/ or /--/?
20:39:28 <tusho> AnMaster: /++/ is just nestable comments
20:39:31 <tusho> /**/ works too
20:39:33 <AnMaster> ah
20:39:35 <AnMaster> interesting
20:39:38 <AnMaster> and useful
20:39:45 <AnMaster> why not make /**/ nestable in D?
20:40:02 <tusho> because it's useful
20:40:06 <AnMaster> after all D, unlike C++, doesn't aim for supporting C
20:40:15 <AnMaster> tusho, how is non-nestable comments useful?
20:40:23 <tusho> AnMaster: Think a bit.
20:40:36 <AnMaster> I guess with some crazy macros it could be useful?
20:40:37 <lament> think a bit, you fucking stupid moron retard.
20:41:02 <AnMaster> but I can't think of a place where I used the feature that /**/ aren't nestable
20:41:13 <AnMaster> plenty of places where I wanted it nestable (in macros)
20:41:40 <AnMaster> tusho, thought, no result returned
20:41:51 <AnMaster> maybe lament can tell me
20:41:52 <tusho> lament: I concur!
20:41:55 <tusho> :-P
20:42:30 <AnMaster> tusho, tell me then
20:43:13 -!- Slereah__ has joined.
20:43:28 <lament> AnMaster: i have no clue :D
20:43:36 <AnMaster> lament, haha
20:43:39 <AnMaster> so tusho, tell us
20:43:49 <tusho> i'm allowed to be lazy and unhelpful
20:43:49 <Deewiant> AnMaster: rather, it's because I first implemented a Stack before finding out I needed a Deque.
20:43:50 <tusho> :-)
20:44:04 <lament> tusho: Stop reopening the bug!!!
20:44:26 <AnMaster> Deewiant, ok, but why that comment then?
20:44:29 <Deewiant> but sure, I care about performance, I'm just not stupid about it. :-P
20:44:40 <Deewiant> well, it explains why we don't just use a Deque all the time.
20:44:51 <AnMaster> ah
20:44:59 <AnMaster> yes I can see how it would be slower
20:45:06 <AnMaster> a stack can be pretty fast really
20:45:17 <AnMaster> but if you need to move the base of the stack too... slower
20:47:49 <Deewiant> AnMaster: the reason /**/ isn't nestable in D is because Walter thinks it's a good idea to be as close to C/C++ as possible if the syntax looks like C/C++.
20:48:09 <AnMaster> I see
20:48:28 <AnMaster> Deewiant, still I'm all for using the other arithmetic operators too! :P
20:48:49 <Deewiant> a lot of people, including me, disagree about that, but in this case it doesn't matter since we can just use /++/ for nesting.
20:48:55 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
20:48:55 <Deewiant> sure, but for what purpose? :-P
20:49:11 <AnMaster> Deewiant, to poke fun at Walter
20:49:33 <AnMaster> anyway yes there are good reasons to keep some syntax similar to C
20:49:43 <AnMaster> less steep learning curve
20:49:44 <Deewiant> that wasn't the point
20:49:49 <AnMaster> but non-nestable comments... wtf
20:49:52 <Deewiant> the point was that if the syntax is similar the semantics should also be
20:50:04 <AnMaster> Deewiant, that makes sense in some cases
20:50:12 <Deewiant> often there are good arguments against it though, but Walter's stubborn
20:50:15 <AnMaster> but for this. just wtf
20:50:27 <Deewiant> like said, for this I think it's fine
20:50:32 <Deewiant> especially since they are useful in some cases
20:50:35 <AnMaster> is the D language an ISO standard?
20:50:39 <AnMaster> like C is
20:50:40 <Deewiant> no :-D
20:50:47 <AnMaster> what a pitty
20:50:57 <AnMaster> then just one man can have too much power over it
20:51:09 <AnMaster> Deewiant, ok, why are non-nestable comments useful
20:51:10 <AnMaster> tell me
20:51:14 <Deewiant> yeah, kinda like linux
20:51:30 <Deewiant> they're sometimes handy in debugging for commenting out large blocks of code
20:51:58 <Deewiant> you just put one */ at some point and keep adding /* earlier and earlier
20:52:08 <AnMaster> hmm
20:52:25 <AnMaster> I normally prefer to use gdb
20:52:40 <AnMaster> to print the value at each specific time point
20:53:01 <Deewiant> I generally prefer just printf debugging, but that's an opinion
20:53:05 <Deewiant> there are some cases where you can't use a debugger
20:53:10 <AnMaster> oh?
20:53:26 <Deewiant> for instance, when the code behaves differently with and without -g
20:53:39 <Deewiant> or when you're debugging a concurrent app running on multiple computers
20:53:54 <Deewiant> to name two cases that I've run into :-P
20:55:44 <AnMaster> <Deewiant> for instance, when the code behaves differently with and without -g <-- thankfully that never happened to me
20:56:03 <Deewiant> or even, differently with or without gdb attached
20:56:05 -!- olsner has quit (Read error: 104 (Connection reset by peer)).
20:56:07 <AnMaster> anyway -g wouldn't make a difference, unless your program is actually reading the debug info, say if you are writing a debugger
20:56:11 <Deewiant> i.e. -g is fine as long as you don't actually debug :-P
20:56:16 <AnMaster> Deewiant, and in that case, try core dump
20:56:20 <AnMaster> that would work
20:56:35 -!- olsner has joined.
20:56:58 <Deewiant> unless you're on a machine with the hard ulimit for core dumps set to 0 :-)
20:57:15 <Deewiant> I've actually never debugged from core dumps
20:57:33 <Deewiant> wouldn't necessarily know what to do with one, I haven't actually looked at one in years :-P
20:57:52 <AnMaster> haha
20:57:57 <AnMaster> Deewiant, you run:
20:58:08 <AnMaster> gdb path/to/program path/to/core
20:58:25 <AnMaster> that will be like entering gdb just at the time of SIGSEGV or whatever
20:58:39 <Deewiant> ah, handy
20:58:49 <Deewiant> although, I rarely have bugs that lead to core dumps
20:59:12 <AnMaster> that is because you don't code much in C I assume
20:59:23 <AnMaster> ;P
20:59:28 <Deewiant> could be that, but even in C not so much
20:59:39 <Deewiant> the few segfaults that I get I can usually pin down quickly and easily
20:59:40 <AnMaster> anyway wth did I put that music file
20:59:45 <Deewiant> after that it's just logic errors
20:59:47 <AnMaster> locate can't find it
20:59:55 <Deewiant> so use find
20:59:59 <AnMaster> but it is because /home is too big to index
21:00:06 <AnMaster> Deewiant, yes I am doing that atm
21:01:25 <AnMaster> hrrm not there
21:01:35 <AnMaster> oh xine history may have it *greps*
21:01:47 <AnMaster> aha.... on a partition not mounted by default....
21:01:55 <Deewiant> >_<
21:02:00 <Deewiant> you need to get organized
21:03:02 <AnMaster> Deewiant, aye, mount | wc -l outputs 37
21:03:14 <Deewiant> not that
21:03:19 <Deewiant> although, maybe that too ;-P
21:03:24 <AnMaster> because of all bind mounts for 32-bit chroot
21:03:35 <Deewiant> but, keep your stuff in one place
21:03:40 <Deewiant> if it's music, it's on the music partition
21:03:41 <Deewiant> or whatever
21:03:42 <AnMaster> a chroot I haven't needed for over half a year
21:03:45 <AnMaster> Deewiant, music partition?
21:03:53 <AnMaster> I got like 100 MB of music at most
21:03:54 <Deewiant> or music directory on the data partition
21:03:57 <AnMaster> on the computer
21:03:58 <Deewiant> whatever
21:04:00 <Deewiant> in one place
21:04:33 <AnMaster> Deewiant, well that makes no sense, some music I like is in the src partition, because it is game music from open source games I play (I use svn version of them)
21:04:41 <AnMaster> yet I like to listen to that music anyway
21:05:06 <Deewiant> so softlink from your music directory to there, or just copy
21:05:16 <AnMaster> I'm short on disk space too
21:05:24 <Deewiant> so softlink
21:05:37 <AnMaster> too many svn checkouts
21:05:38 <AnMaster> :P
21:05:40 <pikhq> So save up $200 and get a terabyte drive. :p
21:05:48 <Deewiant> that works too. :-P
21:06:03 <AnMaster> yeah maybe
21:06:07 <AnMaster> 200 U.S. dollars = 1 201.31664 Swedish kronor
21:06:08 <AnMaster> hrrm
21:06:37 -!- strokov has joined.
21:06:46 -!- strokov has quit.
21:07:17 -!- ihope has changed nick to Normish.
21:07:27 <AnMaster> NOT another bind bug
21:07:28 <AnMaster> gah
21:07:32 -!- pikhq has left (?).
21:07:51 -!- Normish has changed nick to ihope.
21:17:28 -!- olsner has quit.
21:22:37 <AnMaster> Deewiant, blergh
21:22:41 <AnMaster> at FRTh
21:22:42 <AnMaster> FRTH*
21:23:01 <Deewiant> blergh?
21:23:08 <AnMaster> yes blergh
21:23:14 <Deewiant> okay.
21:23:15 <AnMaster> anyway I can't find docs
21:23:19 <AnMaster> Firefox can't find the server at www.google.com.
21:23:22 <Deewiant> blergh for everyone!
21:23:24 <AnMaster> my DNS is broken
21:23:44 <Deewiant> hence, memorize google's IP
21:24:04 <Deewiant> or one such IP, I guess there are many
21:24:08 <Deewiant> 209.85.129.99
21:34:19 -!- CakeProphet has quit ("lolwhut?").
21:38:47 <AnMaster> ah dns works now
21:39:05 <AnMaster> ok, this is strange, L that was rather complex to implement worked on first try
21:39:16 <AnMaster> however P that looks easy, well I can't manage it
21:40:51 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
21:41:43 -!- Hiato has quit (Read error: 104 (Connection reset by peer)).
21:42:59 <AnMaster> aha I think I got it
21:59:04 -!- Slereah2 has joined.
22:03:40 -!- Slereah__ has joined.
22:09:04 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
22:09:24 -!- Slereah2 has joined.
22:13:39 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
22:15:11 -!- Slereah__ has joined.
22:17:50 <AnMaster> tusho, there?
22:17:55 <tusho> Yes
22:17:57 <AnMaster> tusho, what do you think of colorforth?
22:18:36 <tusho> charles moore is vaguely creepy and a little insane, colorforth is kind of neat but prone to crashing (its kind of elitist - KNOW WHAT YOU'RE DOING!!!!!!!21212), colorforthray.info reminds me of time cube.
22:18:45 <AnMaster> I think it sucks, because as far as I understand of how it works it discriminates colour blind people.
22:19:49 <AnMaster> tusho, right?
22:20:11 <tusho> AnMaster: lol. no.
22:20:16 <AnMaster> no?
22:20:18 <tusho> he's written a paper on colorforth using just typography
22:20:22 <tusho> bold, underlined etc
22:20:25 <AnMaster> I see
22:20:34 <tusho> also, rejecting technology just because it isn't available to everyone is pretty crap thinking
22:20:39 <tusho> give it a try before calling judgement like that
22:20:46 <tusho> it's certainly not a sole reason for anything to suck
22:20:49 <AnMaster> tusho, what about those that can only read using braille?
22:20:58 <tusho> AnMaster: i hope you're not being serious
22:21:03 -!- pikhq has joined.
22:21:11 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
22:21:27 <AnMaster> tusho, there is a school for blind ppl just a few kilometers from here, so I got quite a few blind friends
22:21:31 <AnMaster> so yes I'm serious
22:21:33 -!- RedDak has joined.
22:21:37 <tusho> yes
22:21:43 <tusho> but you can obviously do typography with braille.
22:21:48 <AnMaster> hm
22:24:45 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
22:25:08 -!- Slereah2 has joined.
22:29:24 -!- Slereah__ has joined.
22:33:40 -!- Judofyr has quit.
22:35:24 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
22:35:42 -!- Slereah2 has joined.
22:41:27 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
22:42:26 -!- CakeProphet has joined.
22:47:53 <Sgeo> Bye all!
22:48:55 <tusho> bye
22:48:57 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
23:06:15 <AnMaster> night too
23:14:08 -!- Slereah__ has joined.
23:19:15 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
23:43:43 -!- Slereah2 has joined.
23:49:45 -!- Slereah__ has quit (Read error: 60 (Operation timed out)).
23:56:34 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
23:56:43 -!- Slereah2 has quit (Read error: 60 (Operation timed out)).
←2008-07-15 2008-07-16 2008-07-17→ ↑2008 ↑all