00:17:09 wow, Acme::Everything is a clever idea 00:17:19 it autoloads any module in CPAN when the appropriate function is called 00:17:25 sort of like Emacs does automatically 00:17:43 sorry, methods, not functoins 00:17:49 s/functoins/functions/ 00:18:41 ais523: that should be Acme::Auto 00:18:46 Acme::Everything should load EVERYTHING 00:18:51 * ais523 agrees 00:19:13 it would be easy enough, just get a list of all CPAN modules and programatically convert those into use statements 00:19:26 hmm... should it also import everything that can be imported from all of them> 00:19:29 s/>/?/ 00:24:18 ais523: it should do everything 00:24:28 such that you could not pollute the namespace any more short of writing your own code 00:24:41 what do you do about clashes? 00:25:01 * ais523 worries that the right answer may be to adopt the INTERCAL solution: "Multithread and do both" 00:25:55 ais523: fix the clashes. :D 00:28:01 ais523: http://search.cpan.org/~stig/Acme-MemorableExit-0.28/lib/Acme/MemorableExit.pm 00:29:24 ais523: did you know you can do tail-recursion in python? 00:29:39 ehird: I didn't know that, but it seems a reasonable feature to have 00:29:44 after all, Perl can tail-recures 00:29:45 ais523: not natively 00:29:47 but through a Cunning Hack 00:29:49 s/recures/recurse/ 00:29:56 you write goto &subroutine; 00:29:59 rather than calling it 00:31:19 ais523: http://rafb.net/p/lvmYvk62.html 00:31:44 very clever little hack 00:32:10 changing recursion to iteration using exceptions 00:33:01 ais523: yep 00:33:08 ais523: and as the example shows, it handles mututal tail recursion 00:41:16 Acme::HaltingProblem's BUGS: "This code does not correctly deal with the case where the machine does not halt." 00:43:39 haha 00:43:47 http://search.cpan.org/~dankogai/Acme-Math-Google-0.02/lib/Acme/Math/Google.pm 00:44:35 * ais523 was looking at that /before/ you posted the link 00:44:51 ooh, scary 00:44:58 http://search.cpan.org/src/NWCLARK/Acme-Meta-0.02/Meta.pm 00:45:26 all this halting problem stuff is clearly getting us into a closed time loop 00:46:37 http://search.cpan.org/~ambs/Acme-Lisp-0.02/lib/Acme/Lisp.pm this should not be in CPAN. 00:46:42 it is, frankly, crap. 00:47:05 Acme::Pythonic is quite a clever idea, though 00:47:20 more like evil 00:47:23 now all I need is a Python module to grant me {} and semicolon 00:48:07 ais523: been done 00:48:10 as one of python's coding 00:48:11 s 00:48:14 which is used for utf-8 etc 00:48:22 ais523: python already gives you ; 00:48:24 it's just ignored 00:48:34 http://timhatch.com/projects/pybraces/ 00:48:40 does it let me write two commands on a line? 00:50:14 ais523: python already does that 00:50:15 a; b 00:50:30 that is actually really useful 00:51:18 ais523: perl is actually making stuff fun again 00:51:18 :D 00:51:33 -!- ais523 has quit ("it's very late, I have to go home"). 00:57:08 -!- BMeph has joined. 00:59:40 -!- jix has quit (Remote closed the connection). 02:02:45 -!- digital_me has joined. 02:28:14 -!- calamari has joined. 02:53:09 -!- theholyduck has joined. 02:53:18 -!- theholyduck has left (?). 02:57:07 -!- olsner has quit ("Leaving"). 03:04:40 -!- ehird has quit ("Konversation terminated!"). 03:54:49 -!- faxathisia has joined. 04:03:24 -!- marshmallows has quit (Read error: 113 (No route to host)). 05:20:58 I've finished more panels: 05:20:59 http://www.nonlogic.org/dump/images/1205814038-preview2.png 05:21:20 doing these in full color is really, really time consuming. 05:23:31 :D 05:23:34 to anyone who's interested in this project, what would you rather see? A) gorgeous color produced at an achingly slow pace or B) Black and white, much faster 05:23:42 Gorgeous color. 05:23:48 * RodgerTheGreat sighs 05:23:49 It works well with the feel of this comic. 05:24:05 Sorry, but it's damned well worth it. 05:24:24 alright, I'll keep plodding along like this 05:24:29 It's like the difference between a hacked together shell-script and a full REPL. 05:25:04 is the story interesting so far, at least? 05:25:14 Quite. 05:25:26 note that the digital workflow makes it really, really easy to tweak dialogue, which I adore. 05:28:06 http://www.nonlogic.org/dump/images/1205814448-panel6.png <- I may move bubbles around to make it more clear that purple and pink thing is a rocket. 05:29:17 and just for trivia, the original versions of these are all drawn at about 3000x1000 05:33:12 G'night all 05:33:13 does anyone else have any thoughts and/or opinions? 05:33:19 cya, Sgeo 05:35:00 -!- Sgeo has quit ("Ex-Chat"). 05:36:25 -!- digital_me has quit ("leaving"). 05:36:31 hm. I guess not many people are awake. 05:36:36 Course not. 05:37:54 and apparently these guys are offering me a summer internship: https://www.jnl.com/index.jsp 05:38:57 better than nothing, I suppose. IBM and MS haven't responded to my applications. :( 05:39:45 These guys are offering me an internship: http://www.tufts.edu/ 05:40:53 nifty 05:41:05 I know the head sys-admin there. . . 05:41:08 Makes it pretty easy. :p 05:43:56 So, yeah: I'll be paid to dick around on various *nixen. 05:45:13 I'd *much* rather do dev work than IT, which is one of the benefits of my offer 05:45:37 I don't really *mind* IT stuff that much. 05:45:55 But it'd be nice to be doing dev stuff. . . 05:46:26 honestly, if I'd wanted to do IT I could've landed a job out of high school. I'm getting a CS degree to prove I know how to code, design and implement complex projects, and innovate. 05:46:44 IT is akin to being an "internet janitor" 05:46:47 I *am* landing this internship out of high school. ;) 05:46:58 yeah, so in your case it isn't too bad 05:47:13 Especially since I'm going to college right afterwards. . . 05:47:26 But I would not want to do IT stuff as a career. 05:47:28 just don't lose sight of your objectives and drop that job like a sack of hammers when you have the qualifications to do something better 05:48:05 Yeah. 05:48:23 It's not like I'm going to one day think 'Fuck college, I could do this the rest of my life!' 05:48:41 It's a good first job and all, but honestly, it'd be much nicer to be paid doing interesting development. 05:48:41 heh. well, I know a couple people who made that decision. 05:48:50 (kernel development or something?) 05:49:32 I really think I want to make compilers. I wouldn't mind a job as a game designer/developer if that industry didn't completely suck to work in. 05:49:49 Yeah, doing compilers would be nice, too. 05:50:02 A bit of stuff on the grunt-work side, but not a bad thing to do at all. 05:51:03 well, I think I'm turning in. 05:51:10 Mmkay. 05:51:30 one factoid before I go about my steampunk adventure... there's a reason he's called "Mister Thompson". 05:51:43 Oooh. 05:52:03 -!- RodgerTheGreat has quit. 07:04:33 -!- BMeph has quit ("calls it a night"). 07:15:28 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:53:55 -!- oklopol has joined. 08:55:51 -!- oklofok has quit (Read error: 113 (No route to host)). 08:56:49 -!- olsner has joined. 09:02:47 -!- oerjan has quit ("Krnknhs"). 09:21:53 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 09:22:10 -!- oklofok has joined. 10:30:57 -!- olsner has quit ("Leaving"). 11:01:37 -!- SimonRC has quit (Read error: 110 (Connection timed out)). 11:11:42 -!- oklofok has quit (Read error: 113 (No route to host)). 11:15:57 -!- SimonRC has joined. 12:33:56 Deewiant, I added a sandbox mode that restricts what scripts can do, ie. no fileio (when I implement it), y reporting a subset of env variables only and some other things 12:35:22 by the way the # at x=8, y=122 is executed 11333 times in mycology 12:36:47 next is : at x=7, y=122 with a total of 5709 times 12:37:01 err 112 for both those 12:37:08 y I mean 12:46:58 -!- Slereah has joined. 12:48:20 AnMaster: that's the bit that prints out the environment variables 12:53:16 Deewiant, aha 12:53:31 well that explains it, gentoo seems to like setting a lot of env variables 12:53:43 $ env | wc -l 12:53:44 85 <-- gentoo 12:53:50 and that suggests that the total strlen of your envvars is around 5709 :-P 12:53:54 how about -c 12:53:58 $ env | wc -l 12:53:58 22 <-- free bsd 12:54:10 $ env | wc -c 12:54:10 5543 12:54:17 freebsd 12:54:19 $ env | wc -c 12:54:19 443 12:54:30 Deewiant, hehe :) 12:54:36 2641 here, on windows 12:54:57 Deewiant, well gentoo loves setting env variables that users don't need, I agree with that 12:55:06 CONFIG_PROTECT=/var/bind /var/gopher/gophermap /usr/share/X11/xkb /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown /usr/share/config 12:55:10 only portage cares about that 12:55:17 why set it in user env I wonder 12:55:33 possibly to make it easier for portage apps like eix 12:56:06 Deewiant, could be done in make.conf I'd suggest, though that would need some make.d, as different app should be able to install their own ones 12:56:19 like my pygopherd ebuild does XD 12:59:34 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 13:06:31 Deewiant, it seems that most time in mycology is spend on printing env variables here hehe 13:06:58 apart from loading that is 13:07:42 it is in fact quite a bit faster, about 0.01 seconds(!) with just printing a subset 13:07:51 well sure, >:#,_ isn't exactly fast 13:07:55 at least it's not _,#! #:< 13:07:57 hm 13:08:04 * AnMaster parses 13:08:28 that's the problem with zero-terminated strings - if it was gnirts instead 0gnirts you could do k, instead 13:08:43 s/instead/instead of/ 13:08:56 Deewiant, yep, I have nothing against using gnirts 13:09:09 it makes allocating string less of a pain too 13:09:15 when popping value I mean 13:09:57 but on the other hand, this way you need to think a bit whenever you need to loop, so maybe it's better ;-) 13:10:22 er? 13:10:38 it's an esolang after all, can't be too easy 13:10:47 hah. true 13:11:46 Deewiant, one thing, would you think it was easy for a third party to write a new fingerprint for my interpreter? no minifunge yet, so it needs to be compiled in and added into an array, but apart from that I mean 13:11:54 ie, is interface well documented 13:12:48 one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P 13:20:07 -!- AnMaster_ has joined. 13:20:54 -!- lifthrasiir has quit (Remote closed the connection). 13:21:25 -!- AnMaster has quit (Nick collision from services.). 13:21:31 -!- AnMaster_ has changed nick to AnMaster. 13:21:48 one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P 13:21:51 * Disconnected (Connection reset by peer). <-- what did I miss? 13:22:16 AnMaster: Nothing 13:22:33 good 13:23:05 http://tunes.org/~nef/logs/esoteric/ 13:29:17 faxathisia, what bot or person captures those logs? 13:29:37 clog and cmeme 13:49:50 -!- sebbu has joined. 15:19:29 -!- sebbu has quit ("bye"). 15:21:03 # 15:39:43 Deewiant, you there? 15:40:28 aye 15:40:43 wtf should o do if the width or height of the area to write is negative? 15:40:51 output mirrored? 15:40:56 reflect? 15:41:11 or absolute value? 15:41:11 I think I thought about doing mirrored output but decided to just reflect 15:41:17 ah 15:41:30 // undefined behaviour 15:41:30 // could do something tricky here like mirror and flip the area copied 15:41:30 // or just do a normal copy from (ox-dx, oy-dy) to (ox, oy) 15:41:30 // but it's more likely it's an error 15:41:38 -> reverse(); return; 15:42:40 ah 15:42:53 -!- jix has joined. 15:45:37 Deewiant, "Also, note k will never, ever actually execute instruction #32, space, or ;." 15:45:41 but it's up to you :-) 15:45:47 how does #32 differ from space? 15:45:47 yeah? 15:45:58 probably a typo 15:46:08 or read it as "instruction #32, i.e. space, or ;." 15:48:33 "not re-entrant (feral extensions)" <-- in what sense of re-entrant? As in: calling it twice in a row gives same result? 15:49:10 it explains in the next paragraph 15:49:29 not clearly 15:49:42 to me it sounds like TRDS 15:49:58 yeah that is definitely feral 15:50:10 Deewiant, but would you consider MODE, or IMAP feral? 15:50:22 somewhat 15:51:03 FPDP? 15:51:16 don't think so, why? 15:51:21 after all it forces me to link with -lm 15:51:22 :P 15:51:26 :-P 15:51:46 actually I already do for BASE, because of log() 15:51:47 not my fault floating point math is considered so arcane on linux 15:51:54 Deewiant, and freebsd :P 15:53:15 Deewiant, for FPDP, how do you store them on stack, after all double > 32 bits iirc? 15:53:46 "Double precision, called "double" in the C language family, and "double precision" or "real*8" in Fortran. This occupies 64 bits (8 bytes) and has a significand precision of 53 bits (about 16 decimal digits)." 15:54:03 Deewiant, so how on earth does CCBI does it, it got 32-bit cells right? 15:54:26 union { double x; struct { cellidx a, b; } } 15:54:34 or something 15:54:43 Deewiant, right and that would make no sense with larger cell sizes 15:54:50 ie, 64-bit 15:55:01 a compile time option here 15:55:21 * AnMaster ponders adding a 128-bit mode just for fun, would be slow 15:57:09 what is the difference between SOCK and SCKE btw, they seem to both do sockets? 15:57:50 SCKE is two instructions added to SOCK 15:58:08 oh what ones? IPv6? 15:58:16 can't remember 15:58:22 certainly nothing that complicated ;-) 15:59:15 if not I may add a SCK6 ;) 15:59:23 later on I mean 16:37:59 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 16:42:50 -!- jix has quit ("CommandQ"). 16:52:41 -!- RodgerTheGreat has joined. 16:52:55 hi everyone 16:54:30 -!- Sgeo has joined. 16:56:03 -!- sebbu has joined. 17:06:50 -!- timotiis has joined. 17:11:30 Yo. 17:12:29 oY 17:12:55 hola 17:20:26 -!- stefo has joined. 17:22:15 -!- oerjan has joined. 17:38:51 Deewiant, question about DIRF: what should happen if it tries to remove a directory that isn't empty? 17:39:43 prolly reflect 17:39:50 ok 17:40:00 -!- stefo has quit (Remote closed the connection). 17:40:05 the docs for it are so bad, rcfunge... 17:41:50 yep :-) 17:42:02 one thing you can do is run rcfunge and see what it does 17:43:29 Deewiant, another issue, general one, what should stuff do, in general, on a zero-length 0gnirts? 17:43:52 well if they pop a 0gnirts then all they'll get is a 0 17:43:57 so it's as though dealing with "" 17:44:03 hm 17:44:34 because "" is exactly a terminating null and nothing else. 17:44:37 but DIRF should likely reflect on that 17:44:46 * AnMaster do not wish to know what rmdir("") would do 17:47:37 another issue, what permissions should be set on a created directory using DIRF? 17:47:43 run it under some kind of chroot if you're scared :-P 17:47:59 since unspecified, I'd say don't mess with em 17:48:04 i.e. the defaults 17:48:12 if there are no defaults, pick some. 17:48:18 Deewiant, no defaults afaik 17:48:30 int mkdir(const char *pathname, mode_t mode); 17:48:52 so what does "mkdir foo" in the shell do 17:48:58 ah that is different 17:49:04 yes, I know 17:49:11 SYNOPSIS 17:49:11 mkdir [OPTION] DIRECTORY... 17:49:12 but it certainly does have defaults 17:49:13 -m, --mode=MODE 17:49:13 set file mode (as in chmod), not a=rwx - umask 17:49:29 777 & ~umask I suspect 17:49:31 yes, I can read man pages myself, thank you very much. :-P 17:49:38 so use that 17:49:46 -!- timotiis_ has joined. 17:49:46 why not S_IRWXU? 17:49:56 (man sys_stat.h) 17:50:01 it's up to you 17:50:04 do whatever you want 17:50:14 Deewiant, useful for temp dir creation you know 17:57:06 yay, first fingerprint that compiled correctly at first try and passed test suite at first try as well 17:57:09 \o/ 17:57:14 DIRF that is 17:58:02 here's a random thought: would Javascript with AJAX be a viable platform for distributed computation? "Fold proteins by idling at this page" 17:58:26 RodgerTheGreat, it would be completely esoteric 17:58:29 on one hand, it'd be slow as fuck. On the other hand, it would be easy to get machines running it 17:58:35 javascript got way too bad performance 17:58:45 yeah, that's what I figured 17:58:53 I just wondered if anyone had tried it. 17:58:54 java's a better idea for something like that 17:59:04 almost as widely available and much better performance 17:59:13 Deewiant: indeed. For some things Java's speed is comparable to C++ 17:59:13 likely a native compiled app on a i486 would beat a javascript on a p4 17:59:14 :P 17:59:29 depends on the browser 17:59:31 well, no, not quite. :-P 17:59:42 RodgerTheGreat, if it is number crunching I'd suggest FORTRAN 18:00:13 AnMaster: that's rather missing the point 18:01:12 -!- timotiis has quit (Read error: 113 (No route to host)). 18:01:52 -!- timotiis_ has changed nick to timotiis. 18:02:17 RodgerTheGreat, indeed 18:08:29 almost as widely available and much better performance <-- yeah I got java, but not for browser, as there is no such for linux amd64 yet 18:08:38 ie, only server jvm or whatever it is called 18:16:15 * SimonRC reads Garfield minus Garfield 18:21:54 -!- Tritonio_ has quit (Remote closed the connection). 18:27:38 -!- ais523 has joined. 18:36:38 btw now I got a script that generate template files for fingerprints 19:21:26 "template files"? 19:27:34 -!- ais523 has left (?). 19:29:45 #vt"drwolh">:#,_ @ 19:29:45 >"lo le">:#,_a,@ 19:29:46 yay 19:30:09 SimonRC, ie a .c file with empty functions but with right name to add a fingerprint to cfunge 19:30:25 ok 19:31:17 SimonRC, anyway tell me what the befunge program above does 19:31:18 :D 19:32:12 it's a hello world, of course 19:32:15 in parallel 19:32:20 very fragile, I think 19:32:28 but a good test of parallelism 19:33:35 SimonRC, not fragile if interpreter follow standard 19:33:51 SimonRC, impressive that you could decode it the way it was interleaved 19:34:00 um, not really 19:34:12 * AnMaster still have problems reading backwards in befunge 19:34:33 it's an obvious thing to say 19:34:38 hah 19:34:39 ok 19:35:42 unlike this version below it is "lock free" XD: 19:35:50 #vtf2*2+"olleH">:#,_'>11p> ><"dlrow">:#,_'>fb+0p@ 19:40:13 * Sgeo should learn Befunge at some point.. 19:40:30 Or brainfuck. 19:40:31 :D 19:41:10 Slereah, I assume he know it as iirc Sgeo wrote PSOX 19:41:28 And yet, I have heard things. 19:41:34 oh? 19:41:45 btw, not very original example: 19:41:47 "AMOR"4#v(MCM\-+LXXX+++IV\-++.)a,@ 19:41:47 @ 19:41:50 * Sgeo is no good with Brainfuck. Also, PSOX isn't meant to be Brainfuck specific 19:41:55 need ROMA fingerprint 19:51:08 PSOX is meant for any Esolang. 19:51:24 You could fairly reasonably get ORK or Glass to handle PSOX. 19:51:33 (even easier there; they do objects and strings. ;p) 19:53:37 Not so great for Taxi though, it expects input to come in line-by-line 19:53:49 THe loopback function means it's POSSIBLE, but it's not easy 19:58:19 -!- ais523 has joined. 20:07:17 AnMaster: there is a bug in that "locked" befunge 20:07:23 SimonRC, oh? 20:07:33 SimonRC, it works correctly under cfunge and ccbi here 20:07:38 the first line should end with q, not @ 20:07:47 I mean the second line 20:07:50 SimonRC, err, doesn't matter actually 20:08:00 otehrwise the first line doesn't quite finish 20:08:12 but that will make only a little difference to the program behaviour 20:08:48 there isn't enough time for the newline to be output 20:08:50 * AnMaster looks 20:09:09 oops 20:09:14 SimonRC, as far as I can calculate it should finish 20:09:17 I had my @ and q semantics backwards 20:09:21 if it doesn't the interpreter is broken 20:09:38 SimonRC, you are making some interpreter/compiler for befunge too? 20:09:47 not at the moment 20:09:58 I am contemplating Forth -> Befunge 20:10:07 Forth is a language that flexes on the other side 20:10:22 i.e. it flexes to fit your platform as well as flexing to fit your solution 20:10:40 oops, meant platform and *problem* 20:11:09 I don't know whether to make addresses be 1 or two cells in that case though 20:11:25 all sane forths have 1-cell addresses 20:11:41 but the sheer size of funge-space makes that tricky 20:13:35 Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf in ccbi? 20:13:38 it is very slow 20:13:49 with optimized cfunge you hardly have time to see it 20:14:04 with debug cfunge it is still faster than your ccbi binary 20:14:04 hehe 20:14:05 "optimised" how? 20:14:22 SimonRC, -O3 -NDEBUG -profile-use 20:14:36 and profile data was generated on mycology 20:14:39 ok 20:15:04 the interpreter is optimised, rather than it optimising the befunge 20:15:10 indeed 20:15:56 SimonRC, a quick calculation of results on mycology shows my interpreter runs mycology at around 12.5 MHz, that is excluding time to load file (that takes 6/7 of the runtime on mycology) 20:16:27 ie loading is around 0.065 and total is around 0.076 20:16:43 ok 20:16:48 so about 0.01 second run time, most of which is hash table look up to get next instruction in fungespace 20:17:08 maybe you could cache the neighbours of each cell? 20:17:14 in that time it executes 125363 instructions 20:17:26 SimonRC, the way mycology runs it wouldn't help much 20:17:35 yea, but it would help on life I bet 20:17:38 but what about making the interpreter threaded and do some kind of prefetch? 20:17:49 threaded? 20:17:55 ie, -pthread 20:18:09 -lpthread at link time too 20:18:15 how would that help? 20:18:27 so one thread fetches instructions and another executes them 20:18:35 SimonRC, no idea, too tired really ;P 20:18:37 I doubt that would help 20:18:43 was thinking of CPU with pipeline 20:18:50 they would need to switch every befung instruction 20:18:50 or whatever 20:18:59 SimonRC, hm? 20:19:02 yeah 20:19:03 probably 20:19:28 maybe do some cache line thing? ie, cache lines into static arrays in some way 20:19:54 SimonRC, anyway I still beat CCBI by a LOT 20:19:57 :) 20:20:02 it is very slow on game of life 20:23:48 * SimonRC wonders how non-nested ( ) work in F98 20:24:20 AFAICT, weird shit happens 20:24:52 yes, it does, according to the spec 20:24:54 blech 20:34:13 SimonRC, err? 20:34:14 what? 20:35:46 -!- oerjan has quit ("Bus"). 20:36:33 SimonRC, how is it weird? 20:36:41 you just pop 20:36:53 my interpreter handles it :) 20:38:35 -!- olsner has joined. 20:40:14 AnMaster: but you get a funny mix of semantics of the overloaded instructions unless your pushes and pops match up to a certain degree 20:40:27 SimonRC, can be very useful 20:40:55 and if you pop one that isn't loaded, but others are, you will pop one from each of those it defines 20:40:56 :) 20:41:35 so if we got FOOO (provides A B and C) and BAAR (provides B C and D) 20:41:36 suppose you load a1, and b1 then load a2, then load a3 and b3, then unload a2, the sematics of a is a2 and the sematics of b is b3 20:41:40 which is just confusing 20:41:40 then you load FOOO 20:41:43 load BAAR 20:41:47 unload FOOO 20:42:02 how A, B and C are from FOOO and D from BAAR 20:42:04 :D 20:42:07 now* 20:42:08 so unloading something makes parts of it available where they previously weren't 20:42:17 argh, blither, wibble 20:42:20 SimonRC, it is how it works 20:42:29 SimonRC, called esoteric language for a reason 20:42:30 it's crazy 20:42:54 SimonRC, but way easier to implement 20:43:06 just a stack for each opcode 20:43:34 SimonRC, "NULL" unloading can be used to pop all stack once 20:43:39 ie unload all really 20:43:57 "LLUN"4( 20:44:00 err 20:44:01 at least the stack effects are reasonably sane 20:44:03 "LLUN"4) 20:44:04 I meant 20:44:16 SimonRC, yes that is what I said 20:44:22 load BAAR 20:44:23 unload FOOO 20:44:23 now A, B and C are from FOOO and D from BAAR 20:44:32 or rather, first load FOOO 20:44:36 then do those steps 20:44:48 I mean the main stack effects 20:45:07 ( pushes the fingerprint in a different form 20:45:15 err? 20:45:23 ( and ) does not affect normal stack 20:45:32 yes they do 20:45:39 yes partly truye 20:45:41 true* 20:45:52 they pop stuff, and ( pushes the loaded fingerprint back 20:46:03 yes 21:04:16 -!- ehird has joined. 21:04:39 foo bar baz bang quux zed 21:05:30 eki eki eki eki p'tang zoo pang! 21:09:18 -!- Tritonio_ has joined. 21:13:54 ooh ee ooh ah ah 21:13:58 ting tang walla walla bing bang 21:17:54 ehird, new development snapshot at http://rage.kuonet.org/~anmaster/cfunge/snapshots/cfunge_r95.tar.bz2 21:22:32 ehird, includes some examples 21:24:56 hmm. Quantum TriINTERCAL? :D 21:26:08 ehird, if I get my 08 standard finished then yes y got stuff for that 21:26:34 I actually already wrote it 21:26:45 that part I mean 21:26:53 quantum, and what n-nary 21:28:17 ehird: it isn't really quantum 21:28:24 just multithreaded a different way from C-INTERCAL 21:29:09 ais523, oh? got a link? 21:30:41 ais523: arc 2 was released recently, with the source code to the reddit clone 21:30:43 it is hilariously bad 21:30:51 i don't know why anyone would care about that 21:30:52 but there you go 21:31:02 AnMaster: look at CLC-INTERCAL's docs 21:31:06 it's one 1767 line file, the css is inlined into a string, 21:31:07 and this: 21:31:10 (= url-kill* nil 21:31:11 url-ignore* '("internetisseriousbusiness") 21:31:11 comment-kill* nil 21:31:11 comment-ignore* '("http://internetisseriousbusiness" 21:31:11 "http://www.internetisseriousbusiness") 21:31:11 ip-ban* nil) 21:31:19 intercal.freshell.org 21:31:28 http://intercal.freshell.org (making it clickable) 21:35:47 ais523, you typoed that url 21:35:50 forgot an e 21:35:54 yes 21:35:59 http://intercal.freeshell.org 21:36:01 so not very clockable 21:36:04 clickable* 21:36:05 ais523: could you implement twoducks ala timetravel in b98? 21:36:14 ehird: not really 21:36:21 ehird, you know how painful timetravel is? 21:36:26 you would be attempting an iterative method if you did that 21:36:30 ehird, and what is twoducks? 21:36:30 but it might not converge 21:36:40 AnMaster: an esolang based around time travel 21:36:47 ah 21:36:50 it can solve the halting problem, and is therefore uncomputable 21:37:23 (the spec isn't clear on what to do if there's a paradox, such as if you set a program up to solve its own halting problem) 21:37:53 (although it strikes me that it is probably possible to write a /conforming/ HOMESPRING implementation in TwoDucks) 21:38:28 "TwoDucks is an esoteric programming language by User:Zzo38 which allows you to go back in time and change things. It is uncomputable on a Turing machine; it even allows you to solve the halting problem." 21:38:34 so not possible to make one heh 21:38:40 yes BUT 21:38:48 http://esolangs.org/wiki/Talk:TwoDucks 21:38:56 it's possible to make an interp that emulates some TwoDucks programs some of the time 21:39:37 hmm... time travel is a monad, isn't it 21:39:47 only one where the chain is accessible and modifiable 21:41:01 ais523: ContT 21:41:10 ais523: or rather, Cont 21:41:13 Cont is the time-travel monad 21:41:23 but it uses metatime 21:41:23 this is why, given IOT, you can implement TwoDucks 21:41:31 TwoDucks = IOT Cont 21:41:37 rather than the "Everything is self-consistent"ness of TwoDucks 21:41:43 ais523: well, no 21:41:46 it uses the time of the program 21:42:03 Cont time travel: go back in time, kill your own father, you continue without a father but the future is changed 21:42:18 TwoDucks time travel: go back in time, you can't kill your own father because it would cause a contradiction 21:42:41 ais523: twoducks just specifies things to be paradoxes 21:42:47 not that you can't continue as Cont 21:43:27 TwoDucks can invert any function 21:43:33 I don't see how you can do that with Cont 21:46:00 ais523: true 21:46:05 but.. 21:46:07 IOT Cont 21:46:08 IS twoducks 21:46:19 because the IO forces Cont to become the 'real time' 21:51:26 -!- slereah_ has joined. 21:52:37 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 22:07:32 Haskell needs something like MultiMonad(IO Cont) 22:07:39 which can combine several monads together 22:18:05 ais523: um, yes 22:18:08 that's transformers 22:18:14 it's impossible to do it generically 22:18:21 just as it is impossible to give a Monad instance for everything 22:23:20 I specifically wanted it without a transformer 22:36:52 ais523: why? 22:36:54 it's the only way 22:38:20 ehird: because specifying a list of monads as an argument to some sort of type function feels more elegant than endless transforms 22:40:24 ais523: but is impossible 22:52:00 so? Make it possible! 22:52:32 * SimonRC admires TDWTF's forum's tag cloud 22:52:40 not one useful tag amonst them 22:54:08 # banana # Blame Canada # BoonDoggle # etc # Failing Flamer # Falming Failure # feeding the swampling # feeding the troll # Flaming Fa1ure # Flaming Failure # Flaming Faliure # FUCKING HELL WHY DOES IT DELETE TWO CHARACTERS WHEN I HIT BACKSPACE ONCE? # Gee-haw! # IWonderWhatHappensWhenYouUseAReallyReallyReallyLongTagLetsFindOutIfAnythingBreaksShallWe # Jam it! # Lorem ipsum dolor sit amet # MasterAsshatPlan got owned! # sort your life out SpectateSwamp # 22:54:21 ok that was a bit big 22:55:58 -!- slereah__ has joined. 22:55:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 23:00:36 damn, i don't get haskell's type system at all 23:00:42 what's the difference between types and values? 23:03:49 -!- oerjan has joined. 23:04:49 oerjan: what's the difference between types and values, in haskell? 23:05:28 Why do we need values at all? Can't we just simplify the syntax and do everything just with types? 23:05:33 since haskell is not a dependently typed language, they are completely disjoint 23:05:53 a value has a type, a type has a kind 23:06:23 iir/uc there are systems called pure type systems which do just that 23:06:44 data Color = Red | Green | Blue 23:06:45 All books are 3 characters. Check syntax and try again 23:06:49 or 23:07:04 however there is a technical problem. you want all values that are used as types to be terminating 23:07:20 data Red; data Green; data Blue; class Color a; instance Color Red; instance Color Green; instance Color Blue 23:07:21 All books are 3 characters. Check syntax and try again 23:07:34 Sgeo: you use that phrase a lot. i don't think it means what you think it means. 23:07:58 * Sgeo has a biblebot running for no good reason 23:08:05 I should rename the file so it won't autoload 23:08:10 in the first example, Red, Green, Blue are values 23:08:15 in the second, they're types 23:08:48 lament: note that while haskell's types are turing complete with a couple of flags, the type computations are very different from the value computations 23:08:53 in both cases we combine them together into a "type", which in the second case turns out to be a type class 23:09:05 but the distinction seems unnatural 23:09:13 * Sgeo unloads the bot 23:09:39 -!- Tritonio_ has quit ("Bye..."). 23:10:50 oerjan: from a description of pure type systems, my concerns seem justified 23:10:56 "PTSs are well suited as a basis for a functional programming language because they are at the top of a hierarchy of increasingly stronger type systems. The concepts of `existential types', `rank-n polymorphism' and `dependent types' arise naturally in functional programming languages based on the systems in this hierarchy. There is no need for ad-hoc extensions to incorporate these features." 23:11:10 so haskell has too much syntax 23:11:14 because it's not powerful enough :) 23:11:33 actually much of haskell's weirdness may be in order to support type inference 23:12:00 haskell's complexity is mostly superficial 23:12:09 which requires separating some things just in order to give the compiler enough hooks 23:12:16 right 23:12:18 it's ugly 23:12:24 not really 23:12:35 lament: it's ugly because you can write a compiler for it 23:12:38 excellent logic 23:12:38 the superficial complexity is suppsosed to make it beautiful 23:12:57 SimonRC: it doesn't. People keep extending the type system with more and more extensions. 23:12:59 e.g.: where versus let 23:13:03 haskell is made by grafting things onto the hindley/damas/milner type system, which has complete type inference 23:13:19 lament: but they are usually nice generalisations 23:13:23 oerjan: is HM the most general type system with complete inference? 23:13:33 and they aren't all put on at once 23:13:37 some contradict one another 23:13:39 nearly so, i believe 23:13:44 makes sense 23:13:53 and a typical compiler will only have a slight extension of '98 23:13:55 hard to imagine what else it could have 23:13:57 adding almost anything makes it undecidable 23:13:58 SimonRC: hardly :) 23:14:13 Haskell-fghc-exts is a whole new language, practically 23:14:15 oerjan: so type classes make it undecidable? 23:14:26 oerjan: not recursive types, i presume :) 23:14:27 no, type classes are decideable 23:14:29 lament: no. ALMOST anything 23:14:42 unless you turn on undecideable typeclasses 23:14:49 (for ghc at least) 23:15:13 lament: type classes have strange limitations though in order to keep it decidable 23:15:19 right 23:15:21 okay 23:16:22 it's kinda funny - turing-completeness is so easy to achieve by accident, and here you're desperately trying to avoid it 23:16:32 heh :) 23:16:59 i need to learn a pure type language 23:17:06 to get some perspective 23:17:32 the other day it was mentioned on #haskell how the generalized newtype deriving is inconsistent with some of the other extensions (type families, GADTs i think) 23:17:50 heh 23:18:05 it's like playing nomic 23:18:25 add more and more extensions until somebody successfully makes it undecidable without everybody noticing 23:18:59 hmm 23:20:38 (class ToInt x where toInt :: c x -> c Int or something like that breaks newtype deriving if c is something weirder than ordinary algebraic data types, iiuc) 23:22:42 you can use it to make arbitrary coercions 23:22:59 (exploit is on ghc bug trac) 23:23:44 ouch 23:25:07 eh 23:25:14 unsafePerformIO is more fun to make coerce with :-) 23:25:31 well yeah but that is intended to be unsafe 23:25:34 indeed 23:25:50 haskell is ugly :) 23:26:04 it is not getting prettier i guess 23:26:11 unsafePerformIO can have type (forall a. IO a) -> forall a. a 23:26:14 FAIL! 23:26:23 * lament reads thesis about pure type systems 23:26:36 or actually type families may be considered an improvement in some ways 23:27:25 A friend of mine is working on epigram (e-pig.org) where the typesystem has the same strength as the language: not-quite-TC-but-you-can-do-everything-sensible 23:27:56 SimonRC: does it have types as a separate concept from values? 23:28:11 not really 23:28:15 it has dependant types 23:29:51 so much stuff to learn. 23:31:06 ePig! 23:31:10 it's a PIG 23:31:12 on the INTERNET 23:32:21 -!- pikhq has quit ("Rebooting stuff."). 23:33:10 epigram looks shiny 23:34:24 -!- pikhq has joined. 23:34:27 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 23:35:58 -!- sebbu has quit ("@+"). 23:39:23 n : Nat; X : * 23:39:29 cute 23:46:12 heh 23:48:19 from what happens with haskell 23:48:34 it almost seems like people are trying to solve the halting problem 23:48:44 ie. they want an all-powerful type system 23:49:36 on one hand it's impossible, on the other hand people do want it 23:50:50 proposed solution: use an all-powerful type system. If compilation doesn't end, just deal with it and rewrite your program accordingly. 23:51:11 You still have a type-checked program if compilation does end. 23:56:25 lament: large projects take ages to compile 23:56:30 how could you tell the difference? 23:57:31 besides, compilation that never ends is not the route to sturdy software with well-defined properties that you can test 23:58:09 but the alternative is increasingly dirty hacks 23:58:23 when you have a non-TC system, you can always extend it to be more powerful 23:58:30 and people will continue doing this 23:58:40 because they want a more powerful type system 23:58:49 thus adding more and more hacks to the language 23:59:05 lament: solution - dynamic typing 23:59:06 ;) 23:59:46 waitamo... 23:59:53 probably better to start with a TC but clean type system, then add limits (such as max. recursion depth) to get guaranteed termination