00:00:04 <ehird> oerjan: ditto in C and every other language
00:00:09 <ehird> even lisp has that problem, with mutable cons cells
00:00:20 <oerjan> sure, none of which have type inference
00:01:19 <ehird> oerjan: what does that change?
00:01:32 <ehird> seriously, present a program of your choosing
00:01:43 <ehird> : name ... ; or : name ( before -- after ) ... ;
00:01:51 <ehird> and make up any library routines you want to demonstate
00:02:12 <oerjan> if a stack can be passed around and mutated then it becomes untenable to decide statically whether runInStack is well-typed
00:02:47 <ehird> oerjan: i still don't quite understand. can you show a program? :p
00:04:26 <oerjan> let's say there are two copies of a stack on the top of the main stack
00:04:49 <oerjan> you do a pop on one of them
00:05:19 <ehird> does coding in non-haskell break your brain? :P
00:05:20 -!- Hiato has quit (Read error: 110 (Connection timed out)).
00:06:16 <oerjan> clearly that one pop has changed the types of the top two elements of the stack
00:06:43 <ehird> since there's only one object
00:07:17 <oerjan> then you do a drop, and a runInStack with the remaining stack object
00:07:36 <ehird> so runInStack verifies the types are OK then interprets.
00:07:50 <oerjan> so runInStack needs to do dynamical type checking?
00:08:16 <ehird> : runInStack ( STACK ( -- a ) -- a ) ... ;
00:09:54 <ehird> runInStack might not even be in the library
00:09:56 <ehird> it was just an example
00:09:59 <ehird> but yeah: this is OK
00:10:22 <oerjan> it is not statically type inferrable in advance of running the program though
00:10:31 <ehird> no, because runInStack is a type of eval
00:10:47 <ehird> oerjan: one thing that is worth noting: how do we express the type of "i"
00:11:05 <ehird> we need a way to express a polymorphic function.. which we have: PROG
00:11:10 <ehird> but then we need to have the return value
00:11:17 <ehird> : i ( PROG -- ? ) ... ;
00:11:21 <ehird> so we need a ( -- ) form
00:11:52 <ehird> oerjan: :( what did i do this time
00:12:27 <oerjan> you are trying to make a language that is a mish-mash of dynamical and static types, and expecting _me_ to have any idea how to type it
00:12:41 <ehird> well, ok, oerjan, I don't want it to be dynamically typed.
00:12:59 <ehird> So let's say a stack has a well-defined type at any time.
00:13:05 * oerjan isn't sure he can do it even with static types, to be fair
00:13:16 <ehird> How about we ditch first-class stacks for now?
00:13:32 <ehird> oerjan: Let's concentrate on getting Value to be polymorphic, so we can have a Type and do that properly, no?
00:17:01 <ehird> oerjan: So you said we needed to make Value polymorphic -- how do we do that?
00:18:42 <oerjan> i'm sorry. cannot do it.
00:19:09 <ehird> literal 'cannot' or 'i cannot'? :p
00:19:24 <oerjan> never should have said that "maybe"
00:23:31 -!- immibis_ has joined.
00:25:44 -!- RockTheDragon has quit ("This computer has gone to sleep").
00:36:55 -!- immibis has quit (Read error: 110 (Connection timed out)).
00:44:29 -!- immibis_ has quit (Read error: 110 (Connection timed out)).
00:44:55 -!- immibis_ has joined.
01:00:28 -!- immibis_ has quit (Read error: 104 (Connection reset by peer)).
01:00:45 -!- immibis_ has joined.
01:03:20 -!- RockerMONO has quit ("gentoo VM, here i come =P").
01:13:59 -!- RockerMONO has joined.
01:26:08 -!- ehird has quit ("This computer has gone to sleep").
02:38:07 -!- Insane_ has joined.
02:38:19 -!- Insane_ has quit (Remote closed the connection).
02:54:02 -!- Insane has quit (Read error: 110 (Connection timed out)).
03:20:59 -!- immibis_ has quit ("Clap on! , Clap off! Clap@#&$NO CARRIER").
03:42:45 -!- Tritonio__ has quit (Remote closed the connection).
04:37:29 -!- Hiat1 has left (?).
05:17:24 -!- GreaseMonkey has quit ("might be back later").
06:01:44 -!- oerjan has quit ("leaving").
06:17:53 -!- adu has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:42:45 -!- adu has quit (Remote closed the connection).
11:32:00 -!- RodgerTheGreat_ has joined.
11:32:43 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
11:57:24 -!- Tritonio_ has joined.
12:33:21 -!- Tritonio_ has quit (Read error: 113 (No route to host)).
12:47:12 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
12:49:16 -!- puzzlet has joined.
12:57:07 -!- Insane has joined.
12:57:19 <Insane> I have a pseudo-idea for a new language
12:58:06 <Insane> Maybe a calculations-based language, where different operators (eg. +.*/^%) are different instructions that modify the current memory cell at the same time
12:58:24 <Insane> Like 5+3*8/2 would be a program
12:58:33 <Slereah> I think some guy proved that the Z3 computer was TC, and it was only able to do that
12:58:59 <Slereah> "It was possible to construct loops on the Z3, but there was no conditional jump instruction (although it would have been rather straightforward to insert one). Nevertheless, there is a way of implementing a universal Turing machine on a Z3 (assuming unlimited storage and zero crashing probability), as was shown in 1998."
12:59:19 <Slereah> http://www.zib.de/zuse/Inhalt/Kommentare/Html/0684/universal2.html
12:59:22 <Insane> Hmm, no, I mean like the + instruction doubles the value at the same time, and the * instruction would print it etc.
13:01:26 <Insane> I'm just trying to invent an interesting new language :P
13:01:50 <Insane> Is there a language harder than malbolge?
13:02:14 <Insane> I need something to write an interpreter for, now that my C# malbolge interpreter works fine
13:02:39 <Slereah> There's some suggestions to make Malbolge more difficult on the wiki IIRC.
13:04:58 -!- jix has joined.
13:32:32 <Slereah> Would this be confusing enough? A language that's based on the current time.
13:33:00 <Slereah> Instructions would just be wait and execute, and the execution would depend on the current time.
13:33:13 <Slereah> It would be quite vulnerable to lag.
13:37:52 <Slereah> PRINTS HELLO WORLD ON FULL MOONS!
13:38:00 <Insane> reminds me of my "EFFICIENCY" prototype, a language that's so slow programmers *need* to write efficient code
13:38:12 <Slereah> Although for that, I guess you'd need more than just two instructions.
13:38:18 <Slereah> Like also sum conditionals.
13:39:15 <Slereah> You'd also have to time the execution time of the commands, otherwise you'd be screwed!
13:45:01 <Slereah> All I need now is a catchy name, and I can start working on it...
14:00:30 -!- ehird has joined.
14:02:26 <Slereah> And it won't be brainfuck comands
14:02:38 <Insane> Erm, no ChanServ in this chan btw?
14:03:08 <Insane> I forgot that CahnServ doesn't have to be in the channel
14:03:50 <Insane> I'd recommend setting chanserv guard on
14:05:42 <Insane> Let's make the language meep
14:06:00 <Slereah> What are you, a road runner?
14:06:17 <Insane> Noooah, I arez a bus meep meep
14:07:18 <Slereah> Considering that I want to use the commands more than once every reset of the computer clock, every 60 years or so, I think I'll need some modulo
14:15:09 <Insane> like certain programs can only function at 8 pm
14:16:18 <ehird> Insane: lolcode, insisiting on chanserv...
14:16:53 <ehird> some of us (well, OK, two of us) around here think lolcode's a ripoff :p
14:17:38 <ehird> it's not a big word, i'm sure you can handle it ;)
14:18:09 <Insane> No, I mean, what is it a ripoff of? ^^
14:18:29 <ehird> eh, various similar languages
14:18:36 <ehird> that take on internet memes and similar
14:18:41 <ehird> like l33t and the smiley ones
14:18:47 <ehird> + the hype oh god the hype
14:18:51 <ehird> the guy who made it is ridiculous
14:19:04 <ehird> he thinks he's some kind of god and made this awesome creation that everyone loves and wow aren't i awesome
14:19:18 <Insane> yay, drumming lessons and *coughing fit* church school
14:19:26 <Insane> See you guys in 5 hours
14:19:35 -!- Insane has left (?).
14:19:59 <Slereah> Involves a lot of getting on your knees, wink wink
14:21:21 <Slereah> Hm. Maybe I could do some multiple clocks for clock operations.
14:21:35 <Slereah> For no obvious purpose, but who knows!
14:22:02 <ehird> : dip (a' (a' -- b') -- b') ... ;
14:23:54 <Slereah> Maybe... some sort of multiple clocks memory
14:24:11 <Slereah> Damn. I need some Gary Gum.
14:27:01 -!- pikhq has quit (Read error: 110 (Connection timed out)).
14:27:16 -!- helios24 has joined.
14:37:31 -!- pikhq has joined.
14:44:04 -!- Hiato has joined.
14:44:17 <Hiato> Guess who's back :P
14:45:50 <Hiato> damn, was I too obvious...
14:55:55 <ehird> RodgerTheGreat_: 'anti garrity gum'
14:56:55 <Slereah> Look around you even produced a music video! http://www.youtube.com/watch?v=g09gOh2qwug
14:57:37 <ehird> that's from the Computer episode
14:57:58 <ehird> well, a computer did it
14:58:01 <Slereah> Though the music was produced by a music-writing computer!
14:59:47 <RodgerTheGreat_> Look around you: computers! http://www.youtube.com/watch?v=diD2lr_BGcU
14:59:58 <ehird> i love being british
15:00:20 <Slereah> So far, my idea's this. Imagine a Turing machine. Only instead of cells, you have clocks (although the clocks must actually be created by the program).
15:00:48 <Slereah> The program either waits a second, or execute the value of the clock, modulo (number of instructions)
15:03:24 <Slereah> Commands being the creation (or possibly just reseting, if I chose that they exist from the beginning) or a clock, input, output mod 256, changing clock, and so on
15:03:51 <Slereah> Probably some special clock for the computer clock, too.
15:08:10 <ehird> RodgerTheGreat_: that's actually a good idea
15:08:10 <Slereah> Will it be able to escape a steel cage?
15:08:14 * ehird sets his hostname to that
15:08:28 <ehird> although bournemouth doesn't really suite an imac
15:09:38 -!- timotiis has joined.
15:13:30 <Slereah> Why is there an Esco link in the Byter article?
15:13:42 <Slereah> It doesn't even pretend to interpret it as far as I know
15:13:47 <ehird> beacuse the esco people are annoying spammers
15:14:10 <ehird> who also can't write a decent interpreter for even Brainfuck
15:14:36 <ehird> http://esco.sourceforge.net/?page=elang yep, they don't even claim to interpret it
15:14:57 <ehird> ' The name of the language is generally not capitalized, although it is a proper noun.' they fucking capitalize it in the same page
15:15:00 <ehird> how dumb have you got to be
15:15:49 <RockerMONO> ehird: the wikipedia page for brainfuck?
15:16:04 <ehird> esco's carppy site
15:16:38 <ehird> its copied and pasted
15:17:20 <RockerMONO> "...and is not suitable for practical use." <-- i made an IRC bot in it
15:17:39 <ehird> that's not 'practical use'
15:17:46 <ehird> just as much as the mandelbrot program is
15:18:14 <ehird> an illdefined thing but mainly involves 'writing serious stuff'
15:18:30 <ehird> serious not being like 'I AM SERIOUS GRRR' but things that aren't just amusing toys to play around with
15:18:34 <ehird> ... like an IRC bot written in BF
15:18:49 <RockerMONO> ... well the irc bot can parse brainfuck too =P
15:18:54 <Slereah> I have a moustache, isn't it serious enough?
15:19:42 <RockerMONO> issue w/ the bot is it's tendency for the socket to break and send the bot into 50% CPU usage because it isn't using a blocking socket (which slows the loop) >.>
15:20:36 <RockerMONO> i added 3 commands in my dialect of brainfuck... need to work on the connection itself though (that actually requires a string =P)
15:22:18 <RockerMONO> Slereah: i haven't decided what to call it yet, i made it myself, starting w/ a simple brainfuck interpreter me and danopia wrote in PHP (that in itself is enough to make me laugh:)
15:22:40 <RockerMONO> ehird: dont piss yourself yet, i'm working on one in C++
15:22:41 <ehird> RockerMONO: do you even know any non-BF esolangs?
15:22:47 <ehird> thats just as bad.
15:22:55 <Slereah> What are the differences with BF?
15:23:08 <ehird> RockerMONO: typical.
15:23:15 <ehird> what you have done is common and uninteresting.
15:23:33 <RockerMONO> ehird: woohoo thanks for being an ass?
15:23:54 <Slereah> Well, 7 commands. Let's see what I can does with it.
15:24:01 <tejeez> does anyone know a esolang that could be used for anything serious? ;)
15:24:24 <Slereah> tejeez: Theoretical purpose?
15:24:30 <Hiato> ACRONYM, for serious frustration ;)
15:25:15 <ehird> RockerMONO: it's true.
15:25:29 <ehird> tejeez: 'xactly, that's the antiesolang
15:25:45 <RockerMONO> ehird: yea but you dont see anyone else being an ass about it
15:26:16 <Slereah> My ass is, but that's how he's always like
15:26:27 <ehird> i wasn't being an ass.
15:26:40 <ehird> maybe you should be more resistant to criticism
15:27:04 <Slereah> Hm. Maybe Clockpunk for the name.
15:27:21 <RockerMONO> ehird: maybe theirs no reason for criticizing someone messing around because they have nothing better to do at the moment, hm?
15:29:27 <RockerMONO> criticizing someone for messing around in something they just found not even 3 days ago is about as useful as me dealing with this when i dont even need to be in this channel
15:29:34 -!- RockerMONO has left (?).
15:32:19 <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:34:03 <ehird> that came AFTER you said everything
15:34:08 <ehird> and way after i told you to stop
15:35:24 <ehird> [15:31] <Slereah> h=h-(2*a)
15:35:24 <ehird> [15:31] <Slereah> return h
15:35:24 <ehird> [15:31] <Slereah> Damn, wrong buttin
15:35:24 <ehird> [15:32] <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:37:20 <ehird> that's how irc works
15:37:34 <Slereah> [16:30] <Slereah> Damn, wrong buttin
15:37:50 <Slereah> [16:31] <ehird> pastebin!!
15:37:50 <Slereah> [16:32] <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:37:56 <ehird> that's how irc works
15:38:26 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
16:21:11 <ehird> i want a reason to write something in C
16:25:51 <Slereah> I currently have nuclear missiles directly pointed at your house.
16:26:04 <Slereah> They will be launched if you do not program in C.
16:26:26 <tejeez> time paradoxes are quite common in irc
16:30:20 <Slereah> Code, or feel the power of my dong!
16:30:23 <Slereah> That is, http://en.wikipedia.org/wiki/Taepodong-1
16:32:40 <puzzlet> seems that you killed the whole channel
16:32:52 <Slereah> "The rocket's first stage is a Nodong-1 IRBM."
16:33:06 <Slereah> It's hard to take the nuclear threat that seriously.
16:33:51 <puzzlet> me neither, it's also funny for native Koreans
16:40:02 <ehird> RodgerTheGreat: Slereah: puzzlet: people who are awake:
16:40:16 <ehird> http://pastebin.ca/raw/880225 what do you think of my iteration/recursion thingy?
16:40:30 <ehird> : factorial ( INT -- INT ) [zero?] [1] [1 -] [*] iter-rec ;
16:40:34 <ehird> RodgerTheGreat: mine
16:40:47 <ehird> ( before -- after ) is a simple stack diagram, it's a function type
16:41:16 <ehird> if you look at my factorial, you can see the correspondence with my factorial code
16:41:29 <ehird> according to oerjan it's Haskell's iterate+takeWhile+foldr all in one
16:41:35 <ehird> and unfoldr can be built from it, apparently
16:44:28 * Slereah is trying a partial hello world on Clockpunk
16:44:41 <Slereah> Partial because it will already take two minutes to work.
16:47:15 <Slereah> Well, the printing function works okay at least.
16:52:13 <Slereah> Maybe I should work in 0.1 seconds.
16:52:57 -!- Hiato has quit (Read error: 110 (Connection timed out)).
16:57:24 <Slereah> Ah yes, the reason why I chose 1 second.
16:57:36 <Slereah> 0.01 second makes the execution time matter.
16:59:06 <Slereah> Well, let's try with 1 and go from there.
17:04:08 -!- Hiato has joined.
17:09:35 <Slereah> It seems that the instruction time quickly matters.
17:15:26 <Slereah> I should find out how long each instruction takes.
17:15:47 <Slereah> It might verily be the slowest and least portable language!
17:19:34 -!- puzzlet_ has joined.
17:31:33 <ehird> it seems c has absolutely no use!
17:31:42 <Slereah> http://pastebin.ca/raw/884902
17:32:06 <Slereah> That's what Hello, world! would look like, assuming that the symbols are evaluated in 0 seconds.
17:32:37 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
17:34:28 <Slereah> Although I wonder if I can actually take advantage of the execution time.
17:34:38 <Slereah> To reduce the number of -'s.
17:36:23 -!- puzzlet_ has changed nick to puzzlet.
17:38:27 <ehird> puzzlet: you're the one who has loads of logs you can grep right?
17:40:28 <puzzlet> i'm the one who seems to, but no, i don't log things
17:43:02 <ehird> was it timotiis then?
17:43:15 <ehird> someone was fast with the logs when i asked about my TC regexp conversation with ais523
17:43:28 <timotiis> ehird: that wasn't me, but I can look up who it was for you
17:43:54 <timotiis> or not, I don't log this place apparently
17:44:41 <ehird> it was: puzzlet or sekhmet then
17:44:55 <ehird> i think puzzlet really..
17:46:17 <sekhmet> ehird: What do you desire?
17:46:40 <ehird> sekhmet: hehe, my conversation with faxasthia about concise lisp, and i ought to set up a bouncer so all my logs are in one place..
17:47:05 <sekhmet> ehird: Actually I've gotta split, I'm late as it is
17:47:19 <sekhmet> I'll hook you up when I get back (in N hours, where N>2)
18:00:16 <ehird> google isn't helpful ;(
18:00:43 -!- Corun has joined.
18:00:47 <Slereah> THE GOOGLE, THEY DO NOTHING
18:18:09 <Corun> THE NOTHING, THE DO GOOGLE
18:18:54 -!- Corun has quit ("google...").
18:25:09 <AnMaster> <Slereah> That's what Hello, world! would look like, assuming that the symbols are evaluated in 0 seconds.
18:26:27 <AnMaster> and place ones older than 3 months on cd compressed
18:27:12 <ehird> either in the past 3 months, or the 3 months before that
18:27:28 <AnMaster> I'm not sure I was in this channel 6 months ago
18:28:40 <Hiato> Slereah, I know this is delayed, but could you please paste the pastebin paste in nopatse (that was allot of paste ;) ) because Pastebin comes up as blank in my web browser. You are welcome to deny this request :P
18:28:55 -!- Insane has joined.
18:30:44 <AnMaster> ehird, ah "concise lisp" was it? well I found something from this month's log
18:31:13 <ehird> this month? hm maybe
18:31:19 <AnMaster> http://rafb.net/p/kiZFVq83.html
18:31:26 <AnMaster> ehird, tell me if you want more context
18:32:21 <ehird> what's emacs got to do with it? :p
18:32:31 <AnMaster> jan 15 02:11:10 <ehird`> faxlore: obviously Concise Lisp will come with its own emacs-alike written in Concise Lisp ;)
18:32:50 <AnMaster> ehird, anyway was this the convo you wanted?
18:33:24 <ehird> yeah, it spanned pretty much all jan 15
18:33:56 <AnMaster> ehird, well the times are in UTC+2
18:34:30 <AnMaster> ehird, so still all of the 15th?
18:35:03 <AnMaster> $ grep -E '^jan 15' FreeNode-#esoteric.log | wc -l 1288 <-- hrmm
18:36:27 <AnMaster> http://rafb.net/p/LYZPUZ63.html
18:38:32 <ehird> i think that's all
18:38:32 <AnMaster> ehird, also tell me: what is "concise lisp"?
18:38:55 <ehird> AnMaster: my ridiculous dialect of lisp, created when i saw how shitty arc was going to be :P
18:39:13 <ehird> eh, you aren't the best person to talk about this to
18:39:16 <AnMaster> ehird, btw: these logs are from erc :)
18:39:18 <ehird> PG's terrible dialect of lisp
18:39:31 <ehird> concise lisp's editor, though emacs-like, will certainly have no irc client ;)
18:39:47 <AnMaster> ehird, aww? but I can check my mail in it I hope?
18:40:51 <ehird> AnMaster: hm, you can check your mail solely on the provision that you're only doing it to edit outgoing mail in it
18:41:05 <ehird> dunnet... hm, maybe if i get bored ;)
18:41:20 <AnMaster> ehird, well may I'll code extensions to it that does irc then!
18:41:48 <ehird> yeah well concise lisp is a lot saner than emacs
18:41:50 <AnMaster> ehird, anyway how does it differ from normal lisp?
18:41:54 <ehird> for instance it actually has lexical scope
18:42:06 <ehird> AnMaster: tidied up, some new stuff, and really concise shit
18:42:10 <ehird> (def accgen [{++ _}])
18:42:22 * AnMaster mostly codes in C (-std=c99 -Wall -Werror -pedantic) or bash in fact
18:42:25 <ehird> ^^ i got tired of paul graham saying how great arc was because the accumulator generator was so short in it
18:42:43 <AnMaster> just did a bit to customize erc with a few custom hooks
18:42:47 <ehird> you don't want to be elisp is horrid
18:42:50 <ehird> it's dynamically scoped
18:43:31 <ehird> AnMaster: if you define a variable X in function F that calls function G, in G, X refers to F's definition
18:43:45 <AnMaster> ah, sounds like local variables in bash
18:43:56 <ehird> (defvar foo 2) (defun f () (let ((foo 3)) (g))) (defun g () foo)
18:44:06 <ehird> which, of course, is just ASKING for bugs
18:44:14 <ehird> since what if it's in a long away file, several places up the call stack?
18:44:35 <ehird> lexical scoping is much better
18:44:36 <AnMaster> ehird, well a function local variable in bash is accessible in any functions called from the function that declared it
18:44:41 <ehird> the example there would return 2
18:44:44 <AnMaster> I abused that a few times when coding in bash
18:44:58 <ehird> because the scoping is inferrable entirely form the source text
18:45:01 <AnMaster> like "return by variable name to avoid slow subshells" in my irc bot in bash (http://envbot.org)
18:45:14 <AnMaster> using printf -v of bash 3.1 or later XD
18:47:56 <ehird> AnMaster: here's how superior concise lisp is when compared to scheme:
18:47:57 <ehird> jan 15 01:14:11 <ehird`>(def acc [{++ _}])
18:47:57 <ehird> jan 15 01:14:24 <ehird`>(define (acc n) (lambda (x) (set! n (+ n x)) n))
18:48:26 <ehird> former is concise lisp
18:48:37 <AnMaster> looks like functional brainfuck
18:49:03 <AnMaster> gopher://blubb.ch/1/software/fbf
18:49:11 <AnMaster> very interesting brainfuck variant
18:49:26 <AnMaster> I got a version that fixes some tracebacks locally, a sec
18:49:40 <AnMaster> ehird, gopher://inspircd.dyndns.org/1/Software/fbf
18:50:10 * AnMaster waits for comments on the choice of protocol
18:50:23 <ehird> i like gopher! (note: lie ;))
18:50:45 -!- Tritonio_ has joined.
18:50:47 <AnMaster> ehird, anyway it works in firefox
18:51:35 <AnMaster> ehird, anyway! what do you think of it?
18:52:40 -!- chuck has quit (Remote closed the connection).
18:52:45 -!- chuck has joined.
18:54:16 <AnMaster> gopher://blubb.ch/1/software/fbf (and my bug fixed version at: gopher://inspircd.dyndns.org/1/Software/fbf )
18:57:22 <Tritonio_> http://inshame.blogspot.com/search/label/My%20Progs%3A%20FuckBrainfuck
18:59:34 <AnMaster> Tritonio_, hm? this is not "fuckbrainfuck" it is "functional brainfuck"
19:03:51 <AnMaster> Tritonio_, so they are different things
19:04:16 <AnMaster> Tritonio_, do you provide the source in a easier to read online format than zip?
19:04:25 <Tritonio_> not exactly. the both compile to brainfuck and support functions...
19:04:41 <AnMaster> Tritonio_, I don't want to download it to see it so..
19:04:45 <Tritonio_> no. just download the zip and open the Fuckbrainfuck.lua file
19:05:27 <AnMaster> fbf (and that refers to functional brainfuck, FBF to your one) is at least C
19:08:13 <Tritonio_> is there a way to create [] blocks with unbalanced <> ?
19:10:33 <AnMaster> Tritonio_, not sure what you mean?
19:11:24 <AnMaster> should compile in brainfuck, however won't it result in an endless loop?
19:11:50 <Tritonio_> it might find acell with value 1 and stop there
19:11:54 <AnMaster> if the program contains only that then yes
19:13:03 <AnMaster> Tritonio_, anyway, fbf is functional, purely functional apart from input routine I think
19:13:43 <Tritonio_> what do you mean? (apart for the input routine)
19:14:16 <AnMaster> that a function using the input routine obviously depends on something else than it's parameters
19:16:10 <Tritonio_> i still don't get what you're talking about... :-(
19:16:37 <Tritonio_> how do you input data? you simply use the , in a code block right?
19:16:39 <AnMaster> any function using the opcopde/statement/whatever for input (,) in fbf will depend on something else than just the parameters to said function
19:17:11 <oklopol> AnMaster: if you were talking about bf in general, you need to be able to have unbalanced <>'s
19:17:13 <AnMaster> therefore they are not pure functions
19:17:28 <oklopol> not sure if the semantics are different in your languages
19:17:44 <AnMaster> oklopol, "mine" is wrong, I didn't code it, I mearly fixed a few bugs in it
19:17:53 <AnMaster> oklopol, gopher://inspircd.dyndns.org/1/Software/fbf
19:18:05 <AnMaster> Tritonio_, sure is, but it isn't a pure function
19:18:32 <AnMaster> http://en.wikipedia.org/wiki/Functional_programming#Pure_functions
19:30:40 <AnMaster> oklopol, so is fbf turing complete?
19:31:23 <Tritonio_> you will need unbalanced <> to do so
19:31:50 <Tritonio_> in brainfuck you can and it's turing complete. so maybe this one is not?
19:32:23 <oklopol> AnMaster: it is not if you have matched <>'s with normal bf semantics, but i'm assuming you have something more
19:32:42 <oklopol> unless, you have bignums, then it prolly is
19:34:02 <oklopol> yes, but my screen does not have room for firefox
19:34:21 <AnMaster> oklopol, it compiles to brainfuck, so it depends on the interpreter then running that brainfuck code
19:34:59 <oklopol> well, anyway, a lot of stuff is very hard to do without unbalanced <>'s
19:35:18 <oklopol> because you have to have infinite data structures in a fixed number of cells
19:35:25 <oklopol> it's just friends episodes
19:35:55 <AnMaster> "friends" is a tv series or something?
19:36:10 <oklopol> basically, the only feasible way is to use modulus for stuff like lists.
19:36:16 <oklopol> friends is a tv series, yes
19:36:36 <AnMaster> oklopol, hm? fixed number of cells? no, not really, depends on the interpreter
19:36:52 <AnMaster> some doesn't limit except the machine byte size
19:37:09 <AnMaster> if you mean number of data cells
19:37:45 <oklopol> the easy way is to have the stack as numbers on the tape
19:37:48 <oklopol> so that going right is pushing
19:38:00 <oklopol> this is impossible with unbalanced <>'s
19:38:26 <AnMaster> but do you need to have a stack to be turing complete?
19:38:36 <oklopol> you have to store the stack as a*N^0 + b*N^1 + c*N^2 etc.
19:38:49 <oklopol> where a, b and c are the values on the stack
19:38:56 <oklopol> and N is the maximum size of one element
19:39:15 <oklopol> you need to be able to simulate a stack, yes :D
19:39:17 <AnMaster> couldn't you store a value to identify how long the stack is?
19:39:49 <AnMaster> oklopol, however as I said, I didn't make fbf, I just took the software and fixed a few bugs
19:40:02 <AnMaster> maybe I'll extend it if it isn't turing complete
19:40:23 <oklopol> i'm just saying you need unbalanced <>'s or you'll end up simulating a tape with a bignum using modulus.
19:41:09 <oklopol> nothing wrong with that, but i don't think we need another deathmode for brainfuck :-)
19:42:11 <oklopol> some others have used it, so i'm using it nowadays
19:42:23 <oklopol> simplification of a language that's otherwise hard
19:42:34 <AnMaster> oh yes this makes the language simpler indeed
19:42:37 <oklopol> like adding lambdas to unlambda or something
19:42:45 <oklopol> it makes some stuff easier, yes
19:43:03 <oklopol> but for anything complicated, you very much need unbalanced <>'s.
19:43:11 <oklopol> functional? first-class functions?
19:43:41 <AnMaster> but indeed no higher order functions.
19:44:09 <oklopol> then i won't see it, many have added *procedures* to brainfuck and compiled to brianfuck
19:44:31 <Insane> yay my telnet-based netbrainfuck interpreter works
19:44:35 <Insane> Who wants the C# source? ^^
19:44:54 <AnMaster> oklopol, but well actually it shouldn't be hard to add higher order functions
19:45:22 <Insane> I also have a speciallized brainfuck C# class for use in embedded applications (non-console environments with custom i/o)
19:45:28 <oklopol> AnMaster: it's tons harder than making non high-order functions
19:45:31 <Insane> http://insane.pastebin.org/
19:45:42 <Insane> are (in order) malbolge, netbrainfuck, brainfuck
19:46:01 <AnMaster> oklopol, I could code it in bash, not sure if I could mange it in C
19:46:07 <oklopol> well, you have to carry around some kind of pointers to functions
19:46:15 <Insane> Btw, I think I'm the first person ever on planet earth to write a malbolge interpreter in C#
19:46:45 <AnMaster> oklopol, as long as there is no recursion heh
19:46:54 <oklopol> Insane: yes, and you are also the first person ever to say that exact sentence, prolly.
19:47:14 <AnMaster> oklopol, however that is needed
19:47:40 <oklopol> recursion in the source code can usually be just translated to imperative stuff
19:47:55 <oklopol> first-class functions allow for much harder stuff to compile.
19:48:07 <AnMaster> Insane, heh if only non-printable chars wasn't such a pain in bash I would do it just to prove it!
19:48:17 <oklopol> you can, after all, just have a list of functions, and randomize which ones to call in which order.
19:48:37 <AnMaster> oklopol, heh that would be uh, undefined
19:48:55 <AnMaster> the result I mean in some cases
19:49:09 <AnMaster> not if they are pure functions that do not call each other of course
19:49:13 <Tritonio_> AnMaster, did you say that it support's first class functions?
19:50:16 <AnMaster> Tritonio_, afraid not as it just translates to brainfuck, and brainfuck is not self modifying
19:50:28 <oklopol> anyway, making high-order functions compile into brainfuck would prolly require you to write an interpreter, and encode the interpreted prog in the source
19:50:47 <oklopol> it's *not* trivial to compile, unlike procedures, where you can just copy and paste
19:51:00 <AnMaster> oklopol, yes, extreme inlining!
19:51:04 <Tritonio_> it would be nice to see an x86 emulator in brianfuck...
19:51:23 <Tritonio_> but something that could run that assembly...
19:52:06 <tejeez> emulator for something simpler that can be more easily used to do the x86 emulation
19:52:43 <AnMaster> what about a brainfuck -> bash translator
19:52:57 <AnMaster> considering I already coded a brainfuck interpreter in bash heh
19:53:35 <AnMaster> actually it wouldn't be too hard, you just need to map stuff like [ to a while loop, then have an array for the memory hm
19:53:45 <AnMaster> yes you could "compile" it into bash quite easily
19:54:05 <AnMaster> what would be interesting would be optimzing it :)
19:54:14 <tejeez> a brainfuck -> c translator is very easy
19:54:17 <AnMaster> as in getting rid of < and > when possible
19:54:34 <AnMaster> to just access the interesting variable right away
19:54:35 <Tritonio_> that's already done by many people
19:54:55 <oklopol> optimizations, sadly, are pretty much the same :)
19:54:56 <AnMaster> that is the interesting question! :P
19:55:05 <oklopol> Tritonio_: get the fuck off my head?!?
19:55:32 <oklopol> you said twice what i was just about to say
19:55:39 <oklopol> although i didn't say the first one, it seems
19:55:53 <oklopol> anyway, need to do school stuff :\
19:56:02 <AnMaster> Insane, http://insane.pastebin.org/16135 <-- eww, why on earth do you use vb!?
19:56:30 <Insane> Just pointing out the difference in two overloads to a different programmer
19:56:44 <Insane> Although I detest it myself
19:57:02 <Insane> I have about 20 different pastebins
19:57:06 <Insane> some on .org and some on .com
19:57:22 <Tritonio_> what's wrong with VB? it's easy...
19:57:32 <Insane> which is a bummer because one of the two always seems to be down, and I need .com right now
19:57:38 <Insane> Tritonio_, C# is easier
19:58:10 <Insane> I coded an irc bot in netbrainfuck
19:58:22 <Tritonio_> i don't know about .NET. vb6 was easy anyway
19:58:53 <Insane> the syntax is much too bloated
19:59:09 <Insane> { and } for example are much easier to understand than "Start" and "End"
19:59:30 * AnMaster prefers pure C99 to C++ because of bloated syntax, or C#
19:59:50 <Tritonio_> i hate {}. They are angly when mixed with normal text.
20:00:00 <Insane> Not when formatted well
20:00:46 <Tritonio_> hey come on. an "end" is realy nice to close something. And after a while you see the keywords easily
20:01:00 <Tritonio_> let alone using syntax highlighting...
20:01:38 <Tritonio_> anyway it's just personal taste....
20:01:38 <Insane> It's still harder to skim through and quickly navigate than C#, esp. without syntax highlighting ^^
20:01:46 <Insane> Let's leave the matter at rest
20:02:16 <Insane> And talk about how I lost the url to the spoofed image I was working on on my lappy to fake a password entry screen
20:02:34 <Insane> I pastebin'd the link but pastebin.com is down
20:02:44 <AnMaster> C++ got bloated syntax, C# got bloated runtime
20:03:00 <AnMaster> Insane, yes the actual syntax of C# isn't as bad as c++
20:03:16 <Insane> Well .NET is a so-so solution
20:03:32 * AnMaster use mono anyway for .NET stuff
20:03:34 <Insane> It's quick to easily develop apps for casual use, but it isn't a good cross-platform and highspeed solution
20:04:08 <Insane> I run windows on my development machine
20:04:12 <Tritonio_> what about lua? since i used it i odn't want to write in anything else
20:04:22 <Insane> linux on my lappy/private server
20:04:27 <AnMaster> Tritonio_, it's interpreter isn't it?
20:04:34 <Insane> Lua is interpreted though :/
20:04:41 <AnMaster> Insane, linux on desktops and laptops, freebsd for servers
20:04:45 <Tritonio_> it's one of the fastest interpreted languages
20:04:47 <AnMaster> and gentoo linux when it is linux
20:04:47 <Insane> Try writing a 3D app in Lua
20:05:17 <AnMaster> Insane, indeed, that is *just* possible in C#, but C++ or C is what is best for 3D
20:05:18 <Insane> I run kubuntu on my lappy and XP on my development machine
20:05:29 <Insane> Which is why I use XNA for 3d apps
20:05:50 <AnMaster> Insane, nah, just call opengl directly
20:06:03 <Tritonio_> but only when I ad no other option
20:06:20 <Insane> Heh, thanks, but I prefer a managed and mostly natively coded DirectX framework over direct OpenGL calls
20:06:28 <Insane> Since I prefer DirectX over OpenGL anyways
20:07:04 <AnMaster> Insane, no, really, C or C++ and using some opengl framework
20:07:14 <AnMaster> directx is TOTALLY non-portable
20:07:40 <Insane> And that's why about 90% of consumers and developers for today's corporate games use windows + directx
20:08:08 <Insane> Go into a video game shop. How many games use OpenGL? How many games use DirectX?
20:08:22 <Insane> I use DirectX since it's the current consumer trend for gaming
20:08:23 <AnMaster> Insane, go to freshmeat.net, check the same
20:08:50 <AnMaster> Insane, apart from nvidia binary driver and bios I run 100% open source on my computer
20:09:08 <Insane> I don't care about open source
20:09:22 <AnMaster> Insane, I do, I'm involved in several open source projects
20:09:38 <AnMaster> Insane, so the pastes you did, what license are they under?
20:10:39 <Insane> Feel free to use them if you want, although you might want a more optimized solution with a dynamic growing array and direct io streams instead of a read-all-at-once output
20:11:15 <Insane> Well I'm most comfortable in C# atm, so I use it for "complicated" stuff
20:11:18 <AnMaster> Insane, is it 100% compatible?
20:11:44 <Insane> There's at least one bug left that nobody's ever found after many source comparisions and double checks
20:12:01 <Insane> Every program I've seen runs 100% fine, except for the 99 bottles of beer loop version
20:12:08 <Insane> Which runs fine on the official interpreter
20:12:27 <AnMaster> Insane, what about those cases of abusing non-ascii values?
20:13:12 <Insane> Well it has full 10 digit trit support up to values of 3^10
20:13:48 <AnMaster> Insane, err where is "Ternary" defined?
20:14:07 <Insane> I might consider doing a "serious" rewrite of my brainfuck module using three different streams some time, and release it packaged, with documentation etc. since there seems to be no available "ready to use" brainfuck component atm
20:14:15 <Insane> I wanted to pastebin that too
20:14:30 <Insane> public static string ToTernary(ushort num)
20:14:51 <Insane> pretty inefficient but I didn't find a better way to handle trits
20:15:02 <Insane> I never pastebin'd it, like I just said
20:15:44 <AnMaster> at least in pascal you could easily define a new data type for it (heh, every language got it's own upside and downside)
20:15:58 <Insane> http://insane.pastebin.org/17432
20:16:13 <Insane> I considered using a direct bitwise solution
20:16:19 <AnMaster> though pascal got a LOT more of the latter
20:16:22 <Insane> But I voted against it since it would be even slower to convert to/from
20:16:50 <Insane> I'd convert to string/bitlist and that to array/list or w/e, and vice versa
20:16:51 <AnMaster> actually just define a struct tenary
20:16:53 <Insane> means I add an extra step
20:17:18 <AnMaster> a tenary is an array of trits!
20:17:35 <Insane> since a trit can hold 3 different values
20:17:42 <Insane> Then 4 would be unused
20:17:57 <AnMaster> enum trit { true, false, filenotfound }
20:18:33 <Insane> I think it would be better to store 2 triplets at once, using 3 bits
20:19:01 <AnMaster> how many bytes would you waste in malbolge on it?
20:19:04 <Insane> Since I'd assume that even an enum would use 2 bits for the task
20:19:06 <AnMaster> if you got an overhead of one bit
20:19:14 <Insane> This discussion is pointless
20:19:20 <Insane> Since my malbolge interpreter is *so* unifficient
20:19:37 <AnMaster> Insane, well the C one is efficient is it?
20:19:51 <Insane> It was a for-fun project anyways
20:20:00 <Insane> Nothing serious like the brainfuck class which I actually used
20:20:16 <Insane> I came here to discuss a new idea I'm having
20:20:17 <AnMaster> Insane, what about intercal in C#?
20:20:23 <Insane> A new "for-fun" esoteric language
20:20:24 <AnMaster> intercal is iirc rather extensive
20:20:44 <Insane> I have this awesome new esoteric language idea
20:20:51 <Insane> It would have the same commands as brainfuck,
20:21:15 <Insane> but instead of inputting the commadns directly, you input musical notes, and the difference between any two given notes would be the actual command
20:21:33 <Insane> Then the interpreter would play the notes as they get executed
20:22:03 <Insane> Probably standard musical notation, like 1-bar difference is +, 2bar is - etc.
20:22:30 <Insane> I can beep notes through my system speaker
20:22:38 <AnMaster> Insane, anyway I don't know the words for scales in English, I *do* know them in Swedish
20:22:43 <Insane> I wrote a parser for it and implemented it into my irc bot
20:23:13 <AnMaster> ah, no elks around where I live!
20:24:00 <AnMaster> 1) no møøse is monty python 2) moose is in canda
20:25:48 <tejeez> there seems to be so many such brainfuck derivatives in existence that someone has possibly already done that.. :P
20:25:59 <Insane> Does this look realistic enough to fool my mother? http://img101.imageshack.us/img101/7492/biosspoofau2.png
20:28:14 <Insane> I'm still deciding between C# WinForms, XNA or GML to code the actual spoofer
20:30:12 <Insane> only the font is different heh
20:30:24 <Insane> she doesn't even know what resolution is
20:30:54 <AnMaster> Insane, well I got a 20" TFT (1400x1050) and if my bios looked like that it would be awesom
20:31:08 <AnMaster> Insane, also the "live update thing" is wrong
20:31:34 <Insane> even though it doesn't even have a live update
20:31:46 <Insane> I literally copied my own bios 1:1 with different numbers and labels
20:31:51 <Insane> but the design is the same
20:32:00 <AnMaster> yes I see the numbers are different
20:32:11 <Insane> Try finding that on a real BIOS
20:32:11 <AnMaster> Insane, but just why do you want this?
20:32:30 <AnMaster> Insane, anyway the font is way less blocky than in a bios
20:33:02 <Insane> I developed it on my lappy kubuntu so I didn't have my usual supply of bios-like console fonts
20:33:10 <AnMaster> Insane, basically on a tft you need it to look 1) blockly 2) blurry
20:33:44 <AnMaster> on a crt it just needs to be blocky
20:34:04 <tejeez> i'm quite sure your mother doesn't care about the resolution on bios startup messages.. :P
20:34:30 -!- Hiat1 has joined.
20:34:33 <AnMaster> Insane, also why not just use the real password protection of your bios :P
20:35:11 <Insane> this is not for "adding" a password, it's for something else
20:35:30 <AnMaster> Insane, anyway I would like to know what it is :D
20:35:54 <AnMaster> however the font looks totally wrong for bios
20:36:27 <AnMaster> Insane, also the blue logo needs to be fixed to look as blocky
20:36:29 -!- Tritonio_ has quit ("Bye...").
20:36:39 <Insane> best monospaced font I could find at all on kubuntu
20:36:45 -!- Tritonio_ has joined.
20:37:08 <AnMaster> Insane, looks like the font I use for irc, I bet it is bitstream vera sans mono? or maybe dejavu sans mono?
20:37:12 -!- Tritonio_ has quit (Client Quit).
20:37:26 -!- Tritonio_ has joined.
20:37:48 <tejeez> AnMaster: but does his mother notice anything unusual in that? probably not.
20:38:42 <AnMaster> my mother got a good memory for details, while not knowing much about computers
20:39:05 <AnMaster> Insane, "monospace" just maps to a monospace default font on system
20:39:06 <Insane> or "Monospaced" or similar
20:39:11 <AnMaster> same as "sans" maps to a default font
20:39:57 <AnMaster> Insane, but on gentoo monospace does indeed map to bistream
20:41:03 <tejeez> take a picture of your real bios with a camera!
20:41:49 <AnMaster> tejeez, that will look bad I bet, if CRT bits of it will be missing due to refresh rate, if TFT you will get moire patters
20:48:47 -!- Hiat1 has quit ("Leaving.").
20:49:56 -!- Hiato has quit (Read error: 110 (Connection timed out)).
21:09:12 -!- und3f has joined.
21:18:19 <Insane> Both of my parents fell for it
21:18:37 <Insane> They didn't actually etner the password
21:18:50 <Insane> But they both think's its genuine
21:23:49 -!- helios24 has quit ("Leaving").
21:32:53 -!- chuck has changed nick to meilrahc.
21:33:17 -!- meilrahc has changed nick to _chuck_.
21:33:56 -!- _chuck_ has changed nick to chuck.
21:34:11 -!- und3f has left (?).
21:49:30 <sekhmet> ehird: Dunno, that's a little harder to track down
21:49:50 <sekhmet> http://rafb.net/p/kiZFVq83.html
21:49:58 <sekhmet> Someone else had pasted that some time ago
21:55:10 <ehird> who here knows scheme
21:56:03 <oklopol> depends on the definition of "know"
21:57:45 <ehird> oklopol: i think you count
22:01:40 -!- GreaseMonkey has joined.
22:03:09 -!- RedDak has joined.
22:11:22 <oklopol> topples are fine, but i prefer them bottomless
22:14:15 <AnMaster> GreaseMonkey, and what are those?
22:14:44 <GreaseMonkey> you put the cards upright like this: /|\ /|\ /|\
22:14:58 <GreaseMonkey> so they look something like this: ____________
22:15:16 <AnMaster> I see, how are they turing complete?
22:15:53 <AnMaster> because if it was true, that would be really fun
22:17:15 <AnMaster> btw as game of life is turing complete, but what I find more interesting: it is multitasking XD
22:17:33 <AnMaster> all computations happen at once in life
22:18:58 -!- RedDak has quit (Remote closed the connection).
22:22:57 -!- immibis has joined.
22:26:01 <ehird> well, i know bsmnt's a schemer
22:26:20 <oklopol> GreaseMonkey: it may be tc given an infinite starting pattern
22:35:09 <Insane> We need a bot in here that executes code in various esoteric languages
22:35:16 <ehird> he's aclled egobot.
22:35:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
22:35:40 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
22:36:13 <Insane> !bf ++++++++++++++++++++++++++++++++++++++++++++++++.+.+.+.+.+.+.+.+.
22:36:32 <ehird> what's wrong with it?
22:36:46 <ehird> !bf8 ,[.,]!hello, world
22:37:39 <ehird> the amount of bytes per cell
22:37:50 <AnMaster> ehird, I want a bignum version
22:38:03 <ehird> AnMaster: you'll never get past 64 bits in brainfuck ;)
22:38:11 <ehird> if you have a program getting to that, it'll just hang on egobot anyway
22:38:15 <ehird> 'cause it'll take years
22:38:32 <Insane> Let's make a 256bit brainfuck interpreter
22:38:43 <ehird> and why are you implying plural there
22:38:46 <ehird> why don't you do it
22:39:12 <Insane> Is the environment wrapping?
22:39:26 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
22:39:28 <immibis> !i 1 Hello. This is how you give input, ehird.
22:39:42 <EgoBot> Hello. This is how you give input, ehird.
22:40:09 <ehird> immibis: I knew that,.
22:40:12 <ehird> but you can also use !
22:40:20 <immibis> how come it doesn't work then?
22:40:25 <ehird> egobot is on crack?
22:40:28 <EgoBot> Hello worldHello worldHello worldHello worldHello worldGoodbye world
22:40:47 <ehird> !bf ,[.[-],]!hello foo
22:40:50 <immibis> no, i typed !i 2 Hello world several times in /query EgoBot
22:41:25 <Insane> !bf ++++++++++.[-]>+++++++++[<+++++++++>-]<.++++.------------.+++++++++++.
22:41:55 <Insane> No extremely and blatantly obvious security holes ^^
22:42:02 <Insane> I tried sending a \n followed by QUIT
22:42:05 <ehird> we've had it for ages
22:42:09 <ehird> it's not a toy irc bot
22:42:11 <immibis> i believe GregorR fixed that hole
22:42:14 <ehird> it doesnt have any bugs like that
22:42:33 <ehird> it will on the server it runs on.
22:42:39 <ehird> however, it is unlikely any terminal is open on it.
22:42:42 <AnMaster> <Insane> No extremely and blatantly obvious security holes ^^
22:43:01 <ehird> AnMaster: freenode isn't an anal ircd
22:43:02 <AnMaster> it just prints quit without a newline after
22:43:13 <AnMaster> Insane, but you didn't have one
22:43:22 <GregorR> It knows what newlines are and doesn't just ignore them, it actually handles them as separate lines of output and sends them all independently.
22:43:28 <GregorR> You should have gotten a PM with the remaining output.
22:43:35 <ehird> GregorR: so why doesn't "!bf ,[.,]!foo" work
22:43:37 <ehird> it did like yesterday
22:43:42 <Insane> Mine just inserts <0x10>
22:43:57 <GregorR> ehird: It takes input with !i
22:44:03 <ehird> It used to allow you to do that though.
22:44:30 <AnMaster> where do I get the source for egobot?
22:44:36 <GregorR> In the files archive at esolangs.org
22:44:37 * AnMaster wonders what language it is in
22:44:46 <GregorR> C++ (please don't kill me)
22:45:05 <immibis> what's wrong with C++, gregorr?
22:45:16 * ehird really needs to write SuperEgoBot
22:45:35 * GregorR just turned in his last graduate application.
22:45:42 <GregorR> Now I just have to wait for rejection letters to pour in.
22:45:50 <Insane> I actually wrote an irc bot in NetBrainfuck
22:46:03 <AnMaster> GregorR, how does D differ from C/C++
22:47:03 <GregorR> http://www.digitalmars.com/d/2.0/comparison.html
22:47:36 <ehird> I personally think SuperEgoBot/IdBot should be written in one of:
22:47:37 <GregorR> That comparison table seems to have gone wonky ...
22:47:49 <ehird> Strongly typed IRC bots.
22:47:55 <ehird> Their consistency is guaranteed!
22:48:04 <immibis> i once wrote an irc bot in bash.
22:48:12 <ehird> AnMaster maintains an irc bot in bash.
22:48:16 <GregorR> AnMaster: Like I said, "<GregorR> That comparison table seems to have gone wonky ..."
22:48:37 <AnMaster> GregorR, indeed and I don't know C++ well enough to fill it in using my head
22:48:40 <GregorR> AnMaster: Suffice to say that there's no one killer feature that makes D better than C++, it's just much cleaner in the general sense.
22:49:00 <AnMaster> GregorR, C++ got a bloated syntax, almost as bad as perl
22:49:14 <GregorR> Yeah, D's syntax is comparatively quite simple.
22:49:19 <GregorR> Even more simple than C in terms of type declarations.
22:49:32 <AnMaster> C# got nice syntax but instead a bloated runtime
22:49:34 <ehird> GregorR: cast your name vote: SuperEgoBot/IdBot
22:49:40 <pikhq> What I know of D makes it look damned elegant.
22:49:42 <GregorR> char*[] is an array of pointers to characters, none of this wonky char *foo[] (which way does that go?!)
22:49:54 <GregorR> ehird: "Ego" is trademark GregorCorp, so IdBot ;)
22:49:59 <ehird> but SuperEgoBot is funny :P
22:50:03 <immibis> char* foo[] (any clearer?)
22:50:08 <ehird> it makes me think of egobot in a red cape
22:50:11 <AnMaster> what is wrong with plain egobot?
22:50:17 <ehird> AnMaster: that's GregorR's
22:50:26 <ehird> and it's also a superego bot!
22:50:33 <pikhq> immibis: Except that the type of foo is char*[]. Confuses yet?
22:51:43 <AnMaster> GregorR, I find pointers in C rather simple most time, unless you get something mad like: char **** blah[][] (or something like that, saw it once, horrible)
22:52:07 <AnMaster> it was in a K&R style parameter definition, inside mosaic iirc
22:52:29 <immibis> char **** blah[][] is an 2-dimensional array of pointers to pointers to pointers to pointers to characters (or pointers to pointers to pointers to strings).
22:52:30 <AnMaster> may have been some other software
22:52:48 <AnMaster> immibis, don't ask me, I use cdecl for that :P
22:52:49 <GregorR> AnMaster: You need parens and such for more complicated types.
22:52:58 <GregorR> AnMaster: In D it's always just left-to-right type declarations.
22:53:10 <AnMaster> GregorR, but do D need any runtime?
22:53:14 <ehird> GregorR: If ego is copyrighted, is superego?
22:53:20 <ehird> That's draconian copyright law! :P
22:53:25 <AnMaster> GregorR, C doesn't need any runtime
22:53:30 <ehird> AnMaster: yes it does.
22:53:34 <ehird> what do you think calls main
22:53:36 <GregorR> Technically people have made it work with no runtime, but you lose many features.
22:53:42 <pikhq> It's called the C standard library.
22:53:48 <ehird> OK, so it's a very trivial kind of runtime, but :)
22:53:50 <oklopol> GregorR: has registered /.*ego.*/
22:53:51 <ehird> pikhq: No. That's differnt.
22:54:01 <oklopol> yeah, they take regexps now.
22:54:02 <GregorR> The D language doesn't require a runtime so long as you don't use 'new' or dynamic arrays.
22:54:03 <ehird> oklopol: Now THAT's dracegonian! ;)
22:54:03 <pikhq> ehird: Fine; strictly speaking, you don't need stdlib.
22:54:10 <AnMaster> ehird, what about static linking against your own functions replacing the libc stuff you use?
22:54:20 <pikhq> You just need stdlib for doing more than inline assembly.
22:54:23 <GregorR> AnMaster: That just means you've written your own runtime.
22:54:26 <pikhq> I assume D is actually similar.
22:54:44 <GregorR> Yeah, it is similar, the standard runtime just happens to have more features, so you lose more of the language if you go runtime-less.
22:54:52 <AnMaster> GregorR, well I know C++ does need a rather large cruft thing called libstdc++ or something like that
22:55:10 -!- timotiis has quit ("leaving").
22:55:20 <pikhq> How large is libstdd?
22:55:33 <ehird> But the neccessary parts - gc, etc
22:55:53 <GregorR> And if you use Tango (yay for competing runtimes) the core part isn't lumped with additional bits.
22:55:54 <ehird> You could get a working (though not very full featured, as far as garbage collection goes) D system in.. hmm, 300-400 lines?
22:55:56 <AnMaster> also gc is bad, it prevents stuff from going into swap when needed
22:55:58 <pikhq> Does D statically link in the parts you need?
22:56:00 <ehird> That's assuming you write an actual, real GC.
22:56:04 <ehird> AnMaster: you can disable it
22:56:13 <AnMaster> that is what I hate with java and such
22:56:38 <GregorR> I remember thinking like that ...
22:56:42 <pikhq> AnMaster: D's garbage collection is on by default, but you may turn it off when you want to leave it alone.
22:56:52 * pikhq both loves and hates garbage collection. . .
22:56:59 <pikhq> Really, it depends upon what you're doing.
22:57:04 <AnMaster> garbage collection is for the lazy
22:57:15 <GregorR> AnMaster: Yes, it is. And?
22:57:21 <pikhq> And sometimes laziness is good.
22:57:25 <AnMaster> and it keeps memory resident, preventing it from going into swap if needed
22:57:44 <GregorR> Languages higher-level than assembly are for the lazy.
22:57:53 <pikhq> GregorR: Assembly is for the lazy.
22:57:53 <oklopol> us non lazy people just use asm
22:58:02 <GregorR> Languages higher-level than machine code for the lazy.
22:58:07 <pikhq> You only need a toggle board on your computer. ;)
22:58:14 <oklopol> hmph, i'll need more complex jokes
22:58:17 <AnMaster> well do they have the downsides of garbage collection?
22:58:37 <pikhq> AnMaster: What kind of paging algorithm would not swap pages out if they're garbage collected?
22:58:44 <immibis> GregorR: Forgetting the word "are" is for the lazy.
22:59:14 <immibis> pikhq: any one, until the garbage collector runs everything is still allocated.
22:59:20 <ehird> AnMaster: you have too much experience with bad GCs.
22:59:23 <AnMaster> pikhq, that isn't the problem, the problem is if the page still contains data but isn't accessed by program right now
22:59:25 <ehird> Lisp systems have good GCs.
22:59:29 <ehird> They are incredibly efficient.
22:59:34 <ehird> AnMaster: Also, bash has gc you foo
22:59:45 -!- ehird has changed nick to totallynotehirdi.
22:59:58 <pikhq> AnMaster: I think that you've experienced some crappy GCs.
23:00:02 -!- totallynotehirdi has changed nick to ehird.
23:00:05 <AnMaster> pikhq, then if the garbage collector of for example java keeps scanning over it: bad, makes kernel avoid paging out that page, prefering other that may be more important
23:00:28 <pikhq> Ah, *that* kind of GC.
23:00:38 <AnMaster> but I know this has been discussed on the kernel mailing lists a fair bit
23:00:39 <pikhq> That GC algorithm, though accurate, is inefficient as fuck.
23:00:45 <immibis> AnMaster: doesn't java gc only run when the program is using lots of memory?
23:01:15 <pikhq> Wouldn't surprise me; with that GC algorithm, you're going to want to defer it. . .
23:01:44 -!- Insane has quit (Read error: 104 (Connection reset by peer)).
23:01:53 <AnMaster> the only thing that should scan memory like that is IMO stuff like valgrind
23:02:31 * pikhq would like to cite reference counting for decent GC. . .
23:02:40 <immibis> try running a java program that uses lots of memory (netbeans for example) and have a memory usage monitor open while you run it.
23:02:49 <immibis> pikhq: circular references...
23:02:54 <pikhq> Although it doesn't handle circular references, it certainly works efficiently.
23:02:57 <AnMaster> immibis, I uninstalled java here :P
23:03:06 <pikhq> immibis: I'm saying it's decent, not that it's perfect.
23:03:52 <ehird> pikhq: A good GC strategy: have a reference counter, and a non-conservative GC. Run the GC a lot less often than you'd run just a conservative GC.
23:04:04 <AnMaster> why use a gc? why not just do it the right way, malloc/free new/delete, or if you do it in C++: http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
23:04:11 <GregorR> I just got offered a research fellowship at Purdue. Which is weird because I haven't been accepted (or rejected) yet.
23:04:26 <ehird> AnMaster: because good programmers are lazy.
23:04:35 <ehird> and doing work the computer can do, unless performing low-level tasks, is a sin.
23:04:42 <ehird> a complete and utter SIN
23:04:50 <ehird> not excusable in any form at all
23:04:53 <ehird> AnMaster: that's even more work.
23:05:21 <AnMaster> ehird, it does it's job. I want my code to run fast. not depend on crappy runtimes (java, and such)
23:05:36 <pikhq> Well, *I* see. . .
23:05:52 <pikhq> AnMaster has been disillusioned from the idea of GC due to the crappiness of Java.
23:06:10 <pikhq> immibis: For efficiency, yes.
23:06:20 <AnMaster> pikhq, mono/.NET is *slightly* better
23:06:22 <pikhq> (for my sanity, as well)
23:06:29 <ehird> AnMaster: A decent GC system can be very fast.
23:06:36 <ehird> Sometimes, faster than manually managed code.
23:06:37 <pikhq> For the love of $diety, don't touch those two.
23:06:53 <AnMaster> ehird, depends on how good the programmer is
23:06:58 <ehird> If you think otherwise, you had the wrong first impressions of GC and *are wrong*
23:07:12 <ehird> You are wrong, and I can't be bothered telling you why - once you use a good GC, you will understand.
23:07:19 <immibis> pikhq: I find Java runs reasonably fast (although nothing runs reasonably fast on this computer, but it does on decent ones)
23:07:32 <AnMaster> ehird, well, is there one for C99?
23:07:59 <pikhq> However, rule one of programming: programmer time is worth one hundred times as much as computer time.
23:08:02 <AnMaster> as in I just want to write it as I currently do mostly, but indeed not having to call free all the time...
23:08:04 <pikhq> AnMaster: There's Boehm GC.
23:08:21 <ehird> AnMaster: Pretty good, yes.
23:08:25 <ehird> Not as good as some Lisp systems.
23:08:37 <ehird> It can't be as good as them, incidentally, because of the nature of C: it must be conservative
23:09:00 <pikhq> Just replace your malloc and realloc calls with calls to the Boehm functions, and voila.
23:09:02 <ehird> AnMaster: replace malloc with GC_MALLOC
23:09:04 <pikhq> Garbage collected.
23:09:08 <ehird> same with calloc and realloc.
23:09:14 <ehird> and then s/free();\n//
23:09:31 <AnMaster> ehird, so what about malloc being done in third party stuff?
23:09:34 <pikhq> Do the same with GC_FREE if you *really* want to, but it's not needed. . .
23:09:36 <ehird> If you call misbehaved libraries that think that allocating their own memory is a good idea,
23:09:44 <ehird> 1. stop using these broken libraries
23:09:50 <ehird> 2. find out which ones it mallocs, then tell the gc about them
23:09:56 <ehird> i forget the macro, but it's along the lines of
23:09:58 <AnMaster> ehird, err, glibc I'm sure allocates memory
23:10:03 <pikhq> ehird: Glibc is one of those libraries. . .
23:10:10 <ehird> HEY_GC_YES_YOU_I_MEAN_YOU_TAKE_A_LOOK_AT_THIS(thing)
23:10:14 <ehird> Well fuck glibc. :p
23:10:22 <pikhq> Although it's explicitly returning a pointer in that case.
23:10:25 <ehird> immibis: Interesting observation.
23:10:31 <immibis> ehird: hey, my script works
23:10:32 <ehird> Is that an automatic script? you were veryfuck fast.
23:10:38 <ehird> immibis said fuck!
23:11:00 <ehird> ahiahahahahaha AnMaster
23:11:00 <AnMaster> immibis, err brainfuck is normal here
23:11:13 <ehird> just plain fuck is normal in here
23:11:16 <ehird> well, when i'm around
23:12:21 * AnMaster wish valgrind could tell when a pointer was *last* accessible
23:13:01 <ehird> GregorR: Are you sure SuperegoBot isn't permissable?
23:13:29 <GregorR> I can't stop you from making it - but I WILL sue you. O_O
23:13:49 <AnMaster> http://www.hpl.hp.com/personal/Hans_Boehm/gc/ "[ This is an updated version of the page formerly at http://reality.sgi.com/boehm/gc.html and before that at ftp://parcftp.xerox.com/pub/gc/gc.html.]"
23:13:59 <AnMaster> that page moved a bit between companies heh
23:14:09 <immibis> fuck recognition is now set by anyone saying "fuck [on|off]" in any channel or query.
23:14:35 <AnMaster> (do not take it as an attack ;P)
23:14:45 <AnMaster> just wanted to show what it could mean
23:15:08 <ehird> immibis: yes, disable it
23:15:13 <AnMaster> immibis, it is more uncommon with "fuck enable"
23:15:22 <ehird> make it recognize these words as fuck:
23:15:30 <ehird> waffle, potato, belgium, fruitcake
23:15:38 <ehird> Still make them say "X said fuck!"
23:15:41 <ehird> AnMaster: Because.
23:15:45 <ehird> AnMaster: Also, HHGTTG.
23:15:59 <ehird> I notice you don't question about waffle, potato or fruitcake.
23:16:10 <AnMaster> ehird, no I was comming to those
23:16:23 <immibis> why HHGTTG? what does it mean?
23:16:35 <AnMaster> immibis, if you don't know that!...
23:16:45 <AnMaster> immibis, hitchhikers guide to the galaxy
23:16:46 <pikhq> immibis: Geek license revoked.
23:17:01 <AnMaster> ehird, now tell me about the other ones
23:17:05 <ehird> sheesh, hurry up! ;)
23:17:07 <immibis> so should i mention that i've read it?
23:17:14 <ehird> AnMaster: they're funny words. I would like them to be filtered.
23:17:21 <AnMaster> immibis, not if you actually haven't
23:17:33 <AnMaster> immibis, you should instead read it
23:17:34 <ehird> <person> Well, waffles ARE tasty.
23:17:38 <ehird> <immibis> person said fuck!
23:17:55 <ehird> GregorR: will you really sue me? :P
23:18:00 <immibis> and i've only read 1 and 3 because i lost the second.
23:18:26 <AnMaster> GregorR, egobot is open source isn't it?
23:18:45 <ehird> GregorR: Yay! So I can make SuperEgoBot? :P
23:18:58 <GregorR> I don't even recall what license I stuck it under, it's in the headers I'm sure :P
23:19:36 <immibis> it only looks at incoming messages.
23:19:53 <immibis> it now recognizes belgium, waffle, potato, fruitcake, and hhgttg.
23:19:59 <pikhq> GPL2 or later, IIRC.
23:20:07 <pikhq> Belgium, man, blegium!
23:20:08 <ehird> I didn't ask for hhgttg.
23:20:15 <pikhq> s/blegium/belgium/
23:20:35 <immibis> fuck off means fuckenable.
23:20:37 <AnMaster> ehird, about boehm gc, err. what about foo = GC_malloc(whatever); bar = foo
23:20:39 <ehird> Well, I like fruitcake.
23:20:46 <ehird> AnMaster: that's fine.
23:20:52 <ehird> AnMaster: it is fine.
23:20:55 <ehird> a pointer is just an integer.
23:21:08 <ehird> So -- who is from Belgium here?
23:21:18 <ehird> hehe, Belgium -- Anybody read HHGTTG?
23:21:21 <AnMaster> ehird, rather longer I bet (since I'm on 64-bit :)
23:21:24 <ehird> I like these new, waffley changes.
23:21:34 <pikhq> AnMaster: Twice as long, actually.
23:21:42 <immibis> you said it should recognize waffleS.
23:22:14 <immibis> someone needs to say fuckenable again.
23:22:28 <AnMaster> ehird, so how does the GC know if there is still any pointer left to a memory block?
23:22:42 <immibis> AnMaster: maybe it could use smart pointers?
23:22:53 <ehird> AnMaster: that's not how it works, i don't think
23:22:54 <immibis> or you need to do something like GC_AddRef(ptr)
23:22:59 <ehird> immibis: you don't
23:22:59 <AnMaster> immibis, <AnMaster> ehird, about boehm gc, err. what about foo = GC_malloc(whatever); bar = foo
23:23:03 <ehird> but you do if glibc does that
23:23:04 <AnMaster> <ehird> AnMaster: that's fine.
23:24:22 <AnMaster> ehird, no I don't unless you can tell me how it can know that I copied the pointer, converted it to an correctly sized uint, put in a structure, converted back and duplicated, how could it possibly keep track of that
23:24:58 <ehird> AnMaster: It's using deep magic. Do you have a problem with that?
23:25:09 <ehird> It's unlikely you'd be able to understand the inner workings of a deeply magical, advanced C gc.
23:25:10 <AnMaster> ehird, yes! and the code use memcpy too
23:25:17 <GregorR> D only follows pointers in types that contain pointers.
23:25:25 <ehird> AnMaster: it's OKAY
23:25:26 <GregorR> That is, if you just have a big ubyte[], it won't follow pointers in it.
23:25:33 <ehird> TONS OF PEOPLE use the boehm gc
23:25:34 <pikhq> GregorR: We're discussing BoehmGC.
23:25:36 <ehird> LOADS of production software
23:25:38 <ehird> LOADS of compilers, too
23:25:52 <pikhq> IIRC, it's in GCC.
23:25:54 <ehird> so SHUT UP and stop thinking that you're the most clever c programmer and if you don't immediately understand how osmething works IT CAN'T BE TRUSTED
23:25:59 <ehird> pikhq: yes, GCC uses it
23:26:01 <GregorR> What do you mean, "how could it keep track of that"?
23:26:08 <GregorR> How is it difficult to keep track of at all?
23:26:20 <GregorR> All it does is scan memory, it doesn't know you put it in an unsigned int, then an array, then whatever.
23:26:27 <ehird> GregorR: So.. is SuperEgoBot okay to use as a name or do I have to be clever and think of somethiing else? ;)
23:26:27 <GregorR> It just knows that it sees something pointer-like that points to valid memory.
23:26:47 <GregorR> ehird: To be honest, I would appreciate it if you didn't use something derivative of the name "EgoBot"
23:26:47 <AnMaster> GregorR, so it scans the memory pages? it isn't smart using ref counting?
23:26:53 <GregorR> ehird: But I'm not going to stop you.
23:26:59 <ehird> GregorR: all right. SuperEgoBot just amuses me ;)
23:27:04 <GregorR> AnMaster: How could it POSSIBLY use ref counting? It just sits on top of C!
23:27:11 <ehird> GregorR: OK, can I at least call it superegobot until I think of a brilliant name for it? :)
23:28:46 <ehird> immibis: he doesn't want me to use a derivative of EgoBot
23:29:51 <immibis> toBogE is EgoBot backwards.
23:30:09 <ehird> GregorR: are you OK with the name toboge?
23:31:53 <AnMaster> ehird, this works even with many shared objects?
23:32:30 <AnMaster> so the .so file uses garbage collector too
23:32:36 <ehird> AnMaster: something like that
23:32:42 <ehird> i don't know the internals, the creators are wizards :)
23:33:03 <AnMaster> ehird, what if a .so does use garbage collector but the main program doesn't?
23:33:03 -!- jix has quit ("CommandQ").
23:33:57 <ehird> beats me, i think everything still goes OK
23:34:04 <ehird> a GC_init() is required, though
23:34:10 <ehird> so you just have to say in the shared library something like
23:34:16 <ehird> 'HAY, use gc_init'
23:34:24 <ehird> or define 'sharedlib_init' and tell people to use that AND SHUT THE FUCK UP immibis
23:34:43 <ehird> CAN SOMEONE PLEASE KICK immibis HE HAS AN AFFECTION FOR RETARDED SPAMMING SCRIPTS
23:34:47 <AnMaster> ehird, also I think a lot of X libraries internally malloc stuff that I don't know about
23:35:02 <AnMaster> immibis, stop testing them here
23:35:17 -!- GreaseMonkey has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. thx.").
23:36:17 <GregorR> ehird: Toboge is sufficiently different, yuh.
23:36:40 <AnMaster> GregorR, err it is egobot backwards
23:37:21 <immibis> i told you it was not intentional and i am very sorry.
23:37:45 <ehird> GregorR: so is SuperEgoBot
23:37:52 <ehird> if that would help
23:39:28 <ehird> GregorR: opinions?
23:43:58 <EgoBot> hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 h
23:57:41 -!- Tritonio__ has joined.
23:59:06 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).