00:17:09 <ais523> wow, Acme::Everything is a clever idea
00:17:19 <ais523> it autoloads any module in CPAN when the appropriate function is called
00:17:25 <ais523> sort of like Emacs does automatically
00:17:43 <ais523> sorry, methods, not functoins
00:17:49 <ais523> s/functoins/functions/
00:18:41 <ehird> ais523: that should be Acme::Auto
00:18:46 <ehird> Acme::Everything should load EVERYTHING
00:19:13 <ais523> it would be easy enough, just get a list of all CPAN modules and programatically convert those into use statements
00:19:26 <ais523> hmm... should it also import everything that can be imported from all of them>
00:24:18 <ehird> ais523: it should do everything
00:24:28 <ehird> such that you could not pollute the namespace any more short of writing your own code
00:24:41 <ais523> 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 <ehird> ais523: fix the clashes. :D
00:28:01 <ehird> ais523: http://search.cpan.org/~stig/Acme-MemorableExit-0.28/lib/Acme/MemorableExit.pm
00:29:24 <ehird> ais523: did you know you can do tail-recursion in python?
00:29:39 <ais523> ehird: I didn't know that, but it seems a reasonable feature to have
00:29:44 <ais523> after all, Perl can tail-recures
00:29:45 <ehird> ais523: not natively
00:29:47 <ehird> but through a Cunning Hack
00:29:56 <ais523> you write goto &subroutine;
00:29:59 <ais523> rather than calling it
00:31:19 <ehird> ais523: http://rafb.net/p/lvmYvk62.html
00:31:44 <ehird> very clever little hack
00:32:10 <ais523> changing recursion to iteration using exceptions
00:33:08 <ehird> ais523: and as the example shows, it handles mututal tail recursion
00:41:16 <ais523> Acme::HaltingProblem's BUGS: "This code does not correctly deal with the case where the machine does not halt."
00:43:47 <ehird> 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:58 <ehird> http://search.cpan.org/src/NWCLARK/Acme-Meta-0.02/Meta.pm
00:45:26 <oerjan> all this halting problem stuff is clearly getting us into a closed time loop
00:46:37 <ehird> http://search.cpan.org/~ambs/Acme-Lisp-0.02/lib/Acme/Lisp.pm this should not be in CPAN.
00:46:42 <ehird> it is, frankly, crap.
00:47:05 <ais523> Acme::Pythonic is quite a clever idea, though
00:47:23 <ais523> now all I need is a Python module to grant me {} and semicolon
00:48:10 <ehird> as one of python's coding
00:48:14 <ehird> which is used for utf-8 etc
00:48:22 <ehird> ais523: python already gives you ;
00:48:34 <ehird> http://timhatch.com/projects/pybraces/
00:48:40 <ais523> does it let me write two commands on a line?
00:50:14 <ehird> ais523: python already does that
00:50:30 <ais523> that is actually really useful
00:51:18 <ehird> ais523: perl is actually making stuff fun again
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:59 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1205814038-preview2.png
05:21:20 <RodgerTheGreat> doing these in full color is really, really time consuming.
05:23:34 <RodgerTheGreat> 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:49 <pikhq> It works well with the feel of this comic.
05:24:05 <pikhq> Sorry, but it's damned well worth it.
05:24:29 <pikhq> It's like the difference between a hacked together shell-script and a full REPL.
05:25:26 <RodgerTheGreat> note that the digital workflow makes it really, really easy to tweak dialogue, which I adore.
05:28:06 <RodgerTheGreat> 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 <RodgerTheGreat> and just for trivia, the original versions of these are all drawn at about 3000x1000
05:35:00 -!- Sgeo has quit ("Ex-Chat").
05:36:25 -!- digital_me has quit ("leaving").
05:37:54 <RodgerTheGreat> and apparently these guys are offering me a summer internship: https://www.jnl.com/index.jsp
05:38:57 <RodgerTheGreat> better than nothing, I suppose. IBM and MS haven't responded to my applications. :(
05:39:45 <pikhq> These guys are offering me an internship: http://www.tufts.edu/
05:41:05 <pikhq> I know the head sys-admin there. . .
05:41:08 <pikhq> Makes it pretty easy. :p
05:43:56 <pikhq> So, yeah: I'll be paid to dick around on various *nixen.
05:45:13 <RodgerTheGreat> I'd *much* rather do dev work than IT, which is one of the benefits of my offer
05:45:37 <pikhq> I don't really *mind* IT stuff that much.
05:45:55 <pikhq> But it'd be nice to be doing dev stuff. . .
05:46:26 <RodgerTheGreat> 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:47 <pikhq> I *am* landing this internship out of high school. ;)
05:47:13 <pikhq> Especially since I'm going to college right afterwards. . .
05:47:26 <pikhq> But I would not want to do IT stuff as a career.
05:47:28 <RodgerTheGreat> 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:23 <pikhq> 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 <pikhq> It's a good first job and all, but honestly, it'd be much nicer to be paid doing interesting development.
05:48:41 <RodgerTheGreat> heh. well, I know a couple people who made that decision.
05:48:50 <pikhq> (kernel development or something?)
05:49:32 <RodgerTheGreat> 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 <pikhq> Yeah, doing compilers would be nice, too.
05:50:02 <pikhq> A bit of stuff on the grunt-work side, but not a bad thing to do at all.
05:51:30 <RodgerTheGreat> one factoid before I go about my steampunk adventure... there's a reason he's called "Mister Thompson".
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 <AnMaster> 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 <AnMaster> by the way the # at x=8, y=122 is executed 11333 times in mycology
12:36:47 <AnMaster> next is : at x=7, y=122 with a total of 5709 times
12:46:58 -!- Slereah has joined.
12:48:20 <Deewiant> AnMaster: that's the bit that prints out the environment variables
12:53:31 <AnMaster> well that explains it, gentoo seems to like setting a lot of env variables
12:53:50 <Deewiant> and that suggests that the total strlen of your envvars is around 5709 :-P
12:54:57 <AnMaster> Deewiant, well gentoo loves setting env variables that users don't need, I agree with that
12:55:06 <AnMaster> 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:17 <AnMaster> why set it in user env I wonder
12:55:33 <Deewiant> possibly to make it easier for portage apps like eix
12:56:06 <AnMaster> 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 <AnMaster> like my pygopherd ebuild does XD
12:59:34 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
13:06:31 <AnMaster> Deewiant, it seems that most time in mycology is spend on printing env variables here hehe
13:07:42 <AnMaster> it is in fact quite a bit faster, about 0.01 seconds(!) with just printing a subset
13:07:51 <Deewiant> well sure, >:#,_ isn't exactly fast
13:08:28 <Deewiant> that's the problem with zero-terminated strings - if it was gnirts<length> instead 0gnirts you could do k, instead
13:08:56 <AnMaster> Deewiant, yep, I have nothing against using gnirts<length>
13:09:09 <AnMaster> it makes allocating string less of a pain too
13:09:57 <Deewiant> 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:38 <Deewiant> it's an esolang after all, can't be too easy
13:11:46 <AnMaster> 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 <AnMaster> ie, is interface well documented
13:12:48 <Deewiant> 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 <AnMaster> <Deewiant> one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P
13:21:51 <AnMaster> * Disconnected (Connection reset by peer). <-- what did I miss?
13:29:17 <AnMaster> faxathisia, what bot or person captures those logs?
13:49:50 -!- sebbu has joined.
15:19:29 -!- sebbu has quit ("bye").
15:40:43 <AnMaster> wtf should o do if the width or height of the area to write is negative?
15:41:11 <Deewiant> I think I thought about doing mirrored output but decided to just reflect
15:41:30 <Deewiant> // could do something tricky here like mirror and flip the area copied
15:41:30 <Deewiant> // or just do a normal copy from (ox-dx, oy-dy) to (ox, oy)
15:41:30 <Deewiant> // but it's more likely it's an error
15:42:53 -!- jix has joined.
15:45:37 <AnMaster> Deewiant, "Also, note k will never, ever actually execute instruction #32, space, or ;."
15:45:47 <AnMaster> how does #32 differ from space?
15:46:08 <Deewiant> or read it as "instruction #32, i.e. space, or ;."
15:48:33 <AnMaster> "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 <Deewiant> it explains in the next paragraph
15:50:10 <AnMaster> Deewiant, but would you consider MODE, or IMAP feral?
15:51:21 <AnMaster> after all it forces me to link with -lm
15:51:46 <AnMaster> actually I already do for BASE, because of log()
15:51:47 <Deewiant> not my fault floating point math is considered so arcane on linux
15:53:15 <AnMaster> Deewiant, for FPDP, how do you store them on stack, after all double > 32 bits iirc?
15:53:46 <AnMaster> "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 <AnMaster> Deewiant, so how on earth does CCBI does it, it got 32-bit cells right?
15:54:26 <Deewiant> union { double x; struct { cellidx a, b; } }
15:54:43 <AnMaster> Deewiant, right and that would make no sense with larger cell sizes
15:55:21 * AnMaster ponders adding a 128-bit mode just for fun, would be slow
15:57:09 <AnMaster> what is the difference between SOCK and SCKE btw, they seem to both do sockets?
15:57:50 <Deewiant> SCKE is two instructions added to SOCK
15:58:22 <Deewiant> certainly nothing that complicated ;-)
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:54:30 -!- Sgeo has joined.
16:56:03 -!- sebbu has joined.
17:06:50 -!- timotiis has joined.
17:20:26 -!- stefo has joined.
17:22:15 -!- oerjan has joined.
17:38:51 <AnMaster> Deewiant, question about DIRF: what should happen if it tries to remove a directory that isn't empty?
17:40:00 -!- stefo has quit (Remote closed the connection).
17:40:05 <AnMaster> the docs for it are so bad, rcfunge...
17:42:02 <Deewiant> one thing you can do is run rcfunge and see what it does
17:43:29 <AnMaster> Deewiant, another issue, general one, what should stuff do, in general, on a zero-length 0gnirts?
17:43:52 <Deewiant> well if they pop a 0gnirts then all they'll get is a 0
17:43:57 <Deewiant> so it's as though dealing with ""
17:44:34 <Deewiant> because "" is exactly a terminating null and nothing else.
17:44:37 <AnMaster> but DIRF should likely reflect on that
17:44:46 * AnMaster do not wish to know what rmdir("") would do
17:47:37 <AnMaster> another issue, what permissions should be set on a created directory using DIRF?
17:47:43 <Deewiant> run it under some kind of chroot if you're scared :-P
17:47:59 <Deewiant> since unspecified, I'd say don't mess with em
17:48:12 <Deewiant> if there are no defaults, pick some.
17:48:30 <AnMaster> int mkdir(const char *pathname, mode_t mode);
17:48:52 <Deewiant> so what does "mkdir foo" in the shell do
17:49:12 <Deewiant> but it certainly does have defaults
17:49:13 <AnMaster> set file mode (as in chmod), not a=rwx - umask
17:49:31 <Deewiant> yes, I can read man pages myself, thank you very much. :-P
17:49:46 -!- timotiis_ has joined.
17:50:14 <AnMaster> Deewiant, useful for temp dir creation you know
17:57:06 <AnMaster> yay, first fingerprint that compiled correctly at first try and passed test suite at first try as well
17:58:02 <RodgerTheGreat> 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 <AnMaster> RodgerTheGreat, it would be completely esoteric
17:58:29 <RodgerTheGreat> 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 <AnMaster> javascript got way too bad performance
17:58:54 <Deewiant> java's a better idea for something like that
17:59:04 <Deewiant> almost as widely available and much better performance
17:59:13 <RodgerTheGreat> Deewiant: indeed. For some things Java's speed is comparable to C++
17:59:13 <AnMaster> likely a native compiled app on a i486 would beat a javascript on a p4
17:59:42 <AnMaster> RodgerTheGreat, if it is number crunching I'd suggest FORTRAN
18:01:12 -!- timotiis has quit (Read error: 113 (No route to host)).
18:01:52 -!- timotiis_ has changed nick to timotiis.
18:08:29 <AnMaster> <Deewiant> 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 <AnMaster> 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 <AnMaster> btw now I got a script that generate template files for fingerprints
19:27:34 -!- ais523 has left (?).
19:30:09 <AnMaster> SimonRC, ie a .c file with empty functions but with right name to add a fingerprint to cfunge
19:31:17 <AnMaster> SimonRC, anyway tell me what the befunge program above does
19:32:12 <SimonRC> it's a hello world, of course
19:32:28 <SimonRC> but a good test of parallelism
19:33:35 <AnMaster> SimonRC, not fragile if interpreter follow standard
19:33:51 <AnMaster> SimonRC, impressive that you could decode it the way it was interleaved
19:34:12 * AnMaster still have problems reading backwards in befunge
19:34:33 <SimonRC> it's an obvious thing to say
19:35:42 <AnMaster> unlike this version below it is "lock free" XD:
19:35:50 <AnMaster> #vtf2*2+"olleH">:#,_'>11p><a,0q
19:40:13 * Sgeo should learn Befunge at some point..
19:41:10 <AnMaster> Slereah, I assume he know it as iirc Sgeo wrote PSOX
19:41:28 <Slereah> And yet, I have heard things.
19:41:45 <AnMaster> btw, not very original example:
19:41:47 <AnMaster> "AMOR"4#v(MCM\-+LXXX+++IV\-++.)a,@
19:41:50 * Sgeo is no good with Brainfuck. Also, PSOX isn't meant to be Brainfuck specific
19:51:08 <pikhq> PSOX is meant for any Esolang.
19:51:24 <pikhq> You could fairly reasonably get ORK or Glass to handle PSOX.
19:51:33 <pikhq> (even easier there; they do objects and strings. ;p)
19:53:37 <Sgeo> Not so great for Taxi though, it expects input to come in line-by-line
19:53:49 <Sgeo> THe loopback function means it's POSSIBLE, but it's not easy
19:58:19 -!- ais523 has joined.
20:07:17 <SimonRC> AnMaster: there is a bug in that "locked" befunge
20:07:33 <AnMaster> SimonRC, it works correctly under cfunge and ccbi here
20:07:38 <SimonRC> the first line should end with q, not @
20:07:50 <AnMaster> SimonRC, err, doesn't matter actually
20:08:00 <SimonRC> otehrwise the first line doesn't quite finish
20:08:12 <SimonRC> but that will make only a little difference to the program behaviour
20:08:48 <SimonRC> there isn't enough time for the newline to be output
20:09:14 <AnMaster> SimonRC, as far as I can calculate it should finish
20:09:17 <SimonRC> I had my @ and q semantics backwards
20:09:21 <AnMaster> if it doesn't the interpreter is broken
20:09:38 <AnMaster> SimonRC, you are making some interpreter/compiler for befunge too?
20:09:58 <SimonRC> I am contemplating Forth -> Befunge
20:10:07 <SimonRC> Forth is a language that flexes on the other side
20:10:22 <SimonRC> i.e. it flexes to fit your platform as well as flexing to fit your solution
20:10:40 <SimonRC> oops, meant platform and *problem*
20:11:09 <SimonRC> I don't know whether to make addresses be 1 or two cells in that case though
20:11:25 <SimonRC> all sane forths have 1-cell addresses
20:11:41 <SimonRC> but the sheer size of funge-space makes that tricky
20:13:35 <AnMaster> Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf in ccbi?
20:13:49 <AnMaster> with optimized cfunge you hardly have time to see it
20:14:04 <AnMaster> with debug cfunge it is still faster than your ccbi binary
20:14:22 <AnMaster> SimonRC, -O3 -NDEBUG -profile-use
20:14:36 <AnMaster> and profile data was generated on mycology
20:15:04 <SimonRC> the interpreter is optimised, rather than it optimising the befunge
20:15:56 <AnMaster> 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 <AnMaster> ie loading is around 0.065 and total is around 0.076
20:16:48 <AnMaster> so about 0.01 second run time, most of which is hash table look up to get next instruction in fungespace
20:17:08 <SimonRC> maybe you could cache the neighbours of each cell?
20:17:14 <AnMaster> in that time it executes 125363 instructions
20:17:26 <AnMaster> SimonRC, the way mycology runs it wouldn't help much
20:17:35 <SimonRC> yea, but it would help on life I bet
20:17:38 <AnMaster> but what about making the interpreter threaded and do some kind of prefetch?
20:18:27 <AnMaster> so one thread fetches instructions and another executes them
20:18:35 <AnMaster> SimonRC, no idea, too tired really ;P
20:18:43 <AnMaster> was thinking of CPU with pipeline
20:18:50 <SimonRC> they would need to switch every befung instruction
20:19:28 <AnMaster> maybe do some cache line thing? ie, cache lines into static arrays in some way
20:19:54 <AnMaster> SimonRC, anyway I still beat CCBI by a LOT
20:20:02 <AnMaster> it is very slow on game of life
20:23:48 * SimonRC wonders how non-nested ( ) work in F98
20:24:20 <SimonRC> AFAICT, weird shit happens
20:24:52 <SimonRC> yes, it does, according to the spec
20:35:46 -!- oerjan has quit ("Bus").
20:38:35 -!- olsner has joined.
20:40:14 <SimonRC> 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:55 <AnMaster> and if you pop one that isn't loaded, but others are, you will pop one from each of those it defines
20:41:35 <AnMaster> so if we got FOOO (provides A B and C) and BAAR (provides B C and D)
20:41:36 <SimonRC> 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:42:02 <AnMaster> how A, B and C are from FOOO and D from BAAR
20:42:08 <SimonRC> so unloading something makes parts of it available where they previously weren't
20:42:29 <AnMaster> SimonRC, called esoteric language for a reason
20:42:54 <AnMaster> SimonRC, but way easier to implement
20:43:34 <AnMaster> SimonRC, "NULL" unloading can be used to pop all stack once
20:44:01 <SimonRC> at least the stack effects are reasonably sane
20:44:16 <AnMaster> SimonRC, yes that is what I said
20:44:23 <AnMaster> <AnMaster> now A, B and C are from FOOO and D from BAAR
20:44:48 <SimonRC> I mean the main stack effects
20:45:07 <SimonRC> ( pushes the fingerprint in a different form
20:45:23 <AnMaster> ( and ) does not affect normal stack
20:45:52 <AnMaster> they pop stuff, and ( pushes the loaded fingerprint back
21:04:16 -!- ehird has joined.
21:04:39 <ehird> foo bar baz bang quux zed
21:05:30 <Slereah> eki eki eki eki p'tang zoo pang!
21:09:18 -!- Tritonio_ has joined.
21:13:58 <ehird> ting tang walla walla bing bang
21:17:54 <AnMaster> ehird, new development snapshot at http://rage.kuonet.org/~anmaster/cfunge/snapshots/cfunge_r95.tar.bz2
21:24:56 <ehird> hmm. Quantum TriINTERCAL? :D
21:26:08 <AnMaster> ehird, if I get my 08 standard finished then yes y got stuff for that
21:28:17 <ais523> ehird: it isn't really quantum
21:28:24 <ais523> just multithreaded a different way from C-INTERCAL
21:30:41 <ehird> ais523: arc 2 was released recently, with the source code to the reddit clone
21:30:43 <ehird> it is hilariously bad
21:30:51 <ehird> i don't know why anyone would care about that
21:31:02 <ais523> AnMaster: look at CLC-INTERCAL's docs
21:31:06 <ehird> it's one 1767 line file, the css is inlined into a string,
21:31:11 <ehird> url-ignore* '("internetisseriousbusiness")
21:31:11 <ehird> comment-ignore* '("http://internetisseriousbusiness"
21:31:11 <ehird> "http://www.internetisseriousbusiness")
21:31:28 <ais523> http://intercal.freshell.org (making it clickable)
21:35:59 <ais523> http://intercal.freeshell.org
21:36:05 <ehird> ais523: could you implement twoducks ala timetravel in b98?
21:36:21 <AnMaster> ehird, you know how painful timetravel is?
21:36:26 <ais523> you would be attempting an iterative method if you did that
21:36:30 <ais523> but it might not converge
21:36:40 <ais523> AnMaster: an esolang based around time travel
21:36:50 <ais523> it can solve the halting problem, and is therefore uncomputable
21:37:23 <ais523> (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 <ais523> (although it strikes me that it is probably possible to write a /conforming/ HOMESPRING implementation in TwoDucks)
21:38:28 <AnMaster> "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 <AnMaster> so not possible to make one heh
21:38:48 <ehird> http://esolangs.org/wiki/Talk:TwoDucks
21:38:56 <ais523> it's possible to make an interp that emulates some TwoDucks programs some of the time
21:39:37 <ais523> hmm... time travel is a monad, isn't it
21:39:47 <ais523> only one where the chain is accessible and modifiable
21:41:10 <ehird> ais523: or rather, Cont
21:41:13 <ehird> Cont is the time-travel monad
21:41:23 <ehird> this is why, given IOT, you can implement TwoDucks
21:41:31 <ehird> TwoDucks = IOT Cont
21:41:37 <ais523> rather than the "Everything is self-consistent"ness of TwoDucks
21:41:46 <ehird> it uses the time of the program
21:42:03 <ais523> Cont time travel: go back in time, kill your own father, you continue without a father but the future is changed
21:42:18 <ais523> TwoDucks time travel: go back in time, you can't kill your own father because it would cause a contradiction
21:42:41 <ehird> ais523: twoducks just specifies things to be paradoxes
21:42:47 <ehird> not that you can't continue as Cont
21:43:27 <ais523> TwoDucks can invert any function
21:43:33 <ais523> I don't see how you can do that with Cont
21:46:19 <ehird> 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 <ais523> Haskell needs something like MultiMonad(IO Cont)
22:07:39 <ais523> which can combine several monads together
22:18:08 <ehird> that's transformers
22:18:14 <ehird> it's impossible to do it generically
22:18:21 <ehird> just as it is impossible to give a Monad instance for everything
22:23:20 <ais523> I specifically wanted it without a transformer
22:38:20 <ais523> 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 <ehird> ais523: but is impossible
22:52:32 * SimonRC admires TDWTF's forum's tag cloud
22:52:40 <SimonRC> not one useful tag amonst them
22:54:08 <SimonRC> # 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:55:58 -!- slereah__ has joined.
22:55:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:00:36 <lament> damn, i don't get haskell's type system at all
23:00:42 <lament> what's the difference between types and values?
23:03:49 -!- oerjan has joined.
23:04:49 <lament> oerjan: what's the difference between types and values, in haskell?
23:05:28 <lament> Why do we need values at all? Can't we just simplify the syntax and do everything just with types?
23:05:33 <oerjan> since haskell is not a dependently typed language, they are completely disjoint
23:05:53 <oerjan> a value has a type, a type has a kind
23:06:23 <oerjan> iir/uc there are systems called pure type systems which do just that
23:06:44 <lament> data Color = Red | Green | Blue
23:06:45 <Sgeo> All books are 3 characters. Check syntax and try again
23:07:04 <oerjan> however there is a technical problem. you want all values that are used as types to be terminating
23:07:20 <lament> data Red; data Green; data Blue; class Color a; instance Color Red; instance Color Green; instance Color Blue
23:07:21 <Sgeo> All books are 3 characters. Check syntax and try again
23:07:34 <oerjan> 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 <Sgeo> I should rename the file so it won't autoload
23:08:10 <lament> in the first example, Red, Green, Blue are values
23:08:15 <lament> in the second, they're types
23:08:48 <oerjan> 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 <lament> 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 <lament> but the distinction seems unnatural
23:09:13 * Sgeo unloads the bot
23:09:39 -!- Tritonio_ has quit ("Bye...").
23:10:50 <lament> oerjan: from a description of pure type systems, my concerns seem justified
23:10:56 <lament> "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 <lament> so haskell has too much syntax
23:11:14 <lament> because it's not powerful enough :)
23:11:33 <oerjan> actually much of haskell's weirdness may be in order to support type inference
23:12:00 <SimonRC> haskell's complexity is mostly superficial
23:12:09 <oerjan> which requires separating some things just in order to give the compiler enough hooks
23:12:35 <ehird> lament: it's ugly because you can write a compiler for it
23:12:38 <SimonRC> the superficial complexity is suppsosed to make it beautiful
23:12:57 <lament> SimonRC: it doesn't. People keep extending the type system with more and more extensions.
23:13:03 <oerjan> haskell is made by grafting things onto the hindley/damas/milner type system, which has complete type inference
23:13:19 <SimonRC> lament: but they are usually nice generalisations
23:13:23 <lament> oerjan: is HM the most general type system with complete inference?
23:13:33 <SimonRC> and they aren't all put on at once
23:13:37 <SimonRC> some contradict one another
23:13:53 <SimonRC> and a typical compiler will only have a slight extension of '98
23:13:55 <lament> hard to imagine what else it could have
23:13:57 <oerjan> adding almost anything makes it undecidable
23:13:58 <ehird> SimonRC: hardly :)
23:14:13 <ehird> Haskell-fghc-exts is a whole new language, practically
23:14:15 <lament> oerjan: so type classes make it undecidable?
23:14:26 <ehird> oerjan: not recursive types, i presume :)
23:14:27 <SimonRC> no, type classes are decideable
23:14:29 <ehird> lament: no. ALMOST anything
23:14:42 <SimonRC> unless you turn on undecideable typeclasses
23:15:13 <oerjan> lament: type classes have strange limitations though in order to keep it decidable
23:16:22 <lament> it's kinda funny - turing-completeness is so easy to achieve by accident, and here you're desperately trying to avoid it
23:16:59 <lament> i need to learn a pure type language
23:17:06 <lament> to get some perspective
23:17:32 <oerjan> 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:18:05 <lament> it's like playing nomic
23:18:25 <lament> add more and more extensions until somebody successfully makes it undecidable without everybody noticing
23:20:38 <oerjan> (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 <oerjan> you can use it to make arbitrary coercions
23:22:59 <oerjan> (exploit is on ghc bug trac)
23:25:14 <ehird> unsafePerformIO is more fun to make coerce with :-)
23:25:31 <oerjan> well yeah but that is intended to be unsafe
23:26:04 <oerjan> it is not getting prettier i guess
23:26:11 <SimonRC> unsafePerformIO can have type (forall a. IO a) -> forall a. a
23:26:23 * lament reads thesis about pure type systems
23:26:36 <oerjan> or actually type families may be considered an improvement in some ways
23:27:25 <SimonRC> 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 <lament> SimonRC: does it have types as a separate concept from values?
23:29:51 <lament> so much stuff to learn.
23:32:21 -!- pikhq has quit ("Rebooting stuff.").
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:48:19 <lament> from what happens with haskell
23:48:34 <lament> it almost seems like people are trying to solve the halting problem
23:48:44 <lament> ie. they want an all-powerful type system
23:49:36 <lament> on one hand it's impossible, on the other hand people do want it
23:50:50 <lament> 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 <lament> You still have a type-checked program if compilation does end.
23:56:25 <ehird> lament: large projects take ages to compile
23:56:30 <ehird> how could you tell the difference?
23:57:31 <ehird> besides, compilation that never ends is not the route to sturdy software with well-defined properties that you can test
23:58:09 <lament> but the alternative is increasingly dirty hacks
23:58:23 <lament> when you have a non-TC system, you can always extend it to be more powerful
23:58:30 <lament> and people will continue doing this
23:58:40 <lament> because they want a more powerful type system
23:58:49 <lament> thus adding more and more hacks to the language
23:59:05 <ehird> lament: solution - dynamic typing
23:59:53 <olsner> probably better to start with a TC but clean type system, then add limits (such as max. recursion depth) to get guaranteed termination