00:28:56 pikhq, there? 00:29:25 Nope. 00:29:50 pikhq, would you want to implement my extended C version? it would include regex for return and parameters as oklopol suggested 00:30:48 -!- timotiis has quit ("leaving"). 00:32:52 Should I allow "define" ? It opens up room for side effects. 00:33:01 Without "define" side effects are much harder to create. 00:34:14 define == global variable. 00:34:21 I am thinking of only allowing const globals. 00:38:21 are you writing a scheme? 00:38:45 No. 00:38:56 Just thinking about taking features from scheme. 00:41:36 in scheme, define is hardly responsible for side effects 00:41:56 yeah you use set! 00:42:20 But it can be. 00:42:28 no I don't think so 00:42:34 Without define there is no room for side effects anywhere. 00:42:37 it's probably not R5RS COMPLIANT 00:42:58 (let ((x '())) (set! x 3) ....) 00:44:13 (define x 3) (+ x x) (define x 4) (+ x x) The define has a side effect, it causes a different result. 00:46:07 you don't know what "side effects" mean. 00:46:11 *means 00:47:17 Equivalent to doing nothing. 00:47:29 Defining alters the environment. 00:48:07 16:42 Without define there is no room for side effects anywhere. 00:48:12 * marshmallows doesn't have a precise definition of effects :S 00:48:19 lament: In my language. 00:48:31 apparently non-termination can be considered an effect 00:48:50 Eh, let me rephrase. 00:49:07 Define cause side effects, so I cannot decide to implement it or not. 00:49:21 the Recursion monad :) 00:49:39 lament: Touche regarding my previous statement. 00:49:58 data Rec a = Now a | Later (Rec a) 00:49:58 All books are 3 characters. Check syntax and try again 00:50:21 Sgeo, ? 00:51:31 So, Rec is now or later? 00:51:31 :p 00:52:00 non-termination is then indicated by Later (Later (Later ( ... :) 00:52:16 have you heard of sturctural recursion 00:52:29 (or the other thing I can't remember the name of) 00:52:35 codata? 00:52:43 no 00:52:45 (which is what this Rec should be) 00:52:51 general recursion 00:52:52 in scheme, only top-level defines are sideeffecting 00:52:53 it means you can't call yourself in general, but must use a specific combinator 00:53:04 eliminators 00:53:08 folds 00:53:19 wait, that's not true is it 00:53:19 e.g. those ^^ 00:53:50 yeah, it's true 00:53:55 lament: i think define is equivalent to set! whenever a define of the same variable is in the same scope 00:54:08 1:=> (define (foo) (begin (define x 2) (display x) (define x 54) (display x))) 00:54:12 1:=> (foo) 00:54:12 5454# 00:54:15 the one I studued was for machines where everything was a Nat, and the only recursion was calling yourself with an argument decremented 00:54:28 oerjan: no, apparently it's only top-level. 00:54:31 you can do most stuff, but not (e.g.) Ackermann's 00:54:45 oh? 00:55:05 i didn't even realize scheme behaved this way. This is most odd. 00:55:09 define is the same as set! on the top level if the variable is bound 00:55:26 and not otherwise? i see. 00:55:33 marshmallows: you have to admit my example doesn't output what you expect it to output. 00:56:15 probably to make toplevel interactive mode not require any (less?) special treatment? 00:56:40 since in an interactive interpreter you definitely want to allow redefinitions 00:56:52 actually that's bigloo 00:56:56 zzzzzzzzzzzz 00:57:01 and PLT simply doesn't allow me to execute that statement 00:57:08 "define: not allowed in an expression context in: (define x 54)" 00:57:13 SimonRC: primitive recursion 00:57:24 oerjan: yup 00:57:24 lamet use let instead of begin 00:57:25 zzzzzzzzzzzz 00:57:36 sorry? 00:57:52 maybe that's wrong too 00:57:58 no, it doesn't matter what you use 00:58:00 i quote r5rs 00:58:12 "Definitions may occur at the beginning of a (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression)" 00:58:20 the key phrase being "at the beginning" 01:00:15 scheme is annoyingly complicated for being supposedly so simple 01:00:17 but it's good complexity 01:01:14 there's a special case for allowing definitions inside a begin when that begin is your first statement 01:01:24 ie (begin (begin (define x 2)) (display x)) ==> "2" 01:01:40 so the begins get "folded" 01:03:41 (begin (begin (define x 1) (display x)) (define x 2) (display x)) ==> "12" ; look, i'm redefining stuff! 01:04:30 (i don't actually get it, why is that allowed?) 01:07:12 -!- jix has joined. 01:07:34 ohh 01:08:05 the begins don't just get folded, they also get folded with the top level 01:08:16 so the definitions inside a begin on top level are top-level definitions 01:08:21 and work like set! 01:08:40 > (begin (define x 1) (display x) (define x 2) (display x)) 01:08:41 12 01:08:49 but trying to put that in a function is an error 01:08:54 because you're no longer on top level 01:09:53 isn't that kinda stupid? 01:10:57 * lament thinks the top level environment should not be "magical" 01:13:11 * lament thinks some more and changes his mind 01:24:08 lament: Heh. 01:43:50 * Sgeo is bored 01:44:08 I'd be at a party right now if it weren't so far away or if dad wasn't working 01:53:20 -!- jix has quit ("CommandQ"). 02:03:59 haha, party 02:07:39 -!- sebbu has quit ("@+"). 02:37:13 -!- Corun has joined. 02:38:18 I feel like doing a random comic. Ideas, anyone? 02:38:55 frogs 02:39:11 dragons 02:39:12 ok 02:39:17 Hot dogs. 02:39:17 Umbrellas. 02:39:31 and a haunted castle 02:39:40 Skis. 02:39:40 Party hats. 02:39:40 Chimney sweeps. 02:39:45 hm. I'm pondering here 02:39:52 Emmanuel Kant. 02:39:55 slereah_: quality over quantity, dude 02:39:59 -!- Corun has left (?). 02:40:10 Well, what's the criteria for random quality? 02:40:54 10% Nobel prize quality, 10% Plan 9 from outer space. Fill in the intermediates yourself 02:40:55 thought provoking, original and interesting. 02:41:16 something that sparks my interest and that I can build from. 02:41:29 Mad Science! 02:41:35 that sparks _my_ interest 02:41:55 and it could tie up all the other suggestions 02:42:26 hm 02:42:43 mad science and chimney sweeps sounds like a good candidate 02:44:38 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 02:44:53 -!- slereah_ has joined. 02:45:07 genetically engineered dragons used as chimney sweepers 02:45:08 INTERNEEEEEEEEEEEEETS >:| 02:46:34 I can already picture them. 02:46:34 Like hairy chinese dragons. 02:57:36 i love hot dogs 02:57:40 damn i'm hungry 02:59:19 See RodgerTheGreat? It's a story that just write itself! 02:59:46 -!- calamari has quit ("Leaving"). 02:59:55 I'm already off and running on some steampunk 02:59:56 -!- calamari has joined. 03:23:11 'Conformance checkers must check that the input document conforms when scripting is disabled, and should also check that the input document conforms when scripting is enabled. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [HALTINGPROBLEM])' 03:23:46 ~http://www.w3.org/TR/html5/ 03:23:52 http://www.w3.org/TR/html5/ 03:24:24 Yes, let's also put in a spec "Conforming programs SHOULD try to make 1+1=3" 03:25:39 that's a strawman: it is probably only impossible for _some_ input documents 04:07:37 a small tidbit of things to come: http://www.nonlogic.org/dump/images/1205723239-preview.png 04:10:34 Oooh, steampunk. 04:15:35 indeed 04:17:43 Which reminds me, in case any of you haven't noticed, that Casey and Andy has resumed. 04:22:07 and as a bonus, some character designs: http://www.nonlogic.org/dump/images/1205724112-chars.png 04:24:13 -!- adu has joined. 04:33:55 1337. 04:35:33 I'm aiming for 2-3 pages for a quick story here over the course of the next week or so, and if It turns out well, I'll think about continuations 04:37:34 continuations are good. i hear delimited ones are even better. 04:37:36 continuations? 04:38:07 I recently realized how to implement a tail-call on ppc 04:38:56 oerjan: whats a delimited continuation? 04:42:41 better ? :S 04:42:51 I thought they are equivalent 04:48:07 oh i'm a bit vague on that 04:49:50 I don't know what to do 04:55:24 i think it is something like, an ordinary continuation contains the entire rest of the program, while a delimited continuation only contains it _up to a point_ 04:56:59 and then you can do some kind of manipulation of what happens once you reach that point 04:57:23 I see 04:57:26 combined with the usual use and even reentering of the continuation 04:59:21 O_o http://rosettacode.org/wiki/Rot-13#XSLT 05:04:27 i think we have different ideas about what a continuation is 05:05:03 what aspect of programming languages should I write about? 05:05:09 xslt is so lame 05:05:41 marshmallows: I think you should write about genaric datastructures and how they relate to binding environments 05:05:54 for example 05:05:58 I don't know what a genaric datastructure is 05:06:02 any other ideas? 05:06:19 a genaric "list of integer" would have only elements that are of type integer 05:06:33 I can't write about this topic though 05:06:41 what for? school? 05:06:55 because I'm bored 05:07:00 oh 05:07:28 then write about the most common 101 datatypes used in the industry today 05:07:40 :[ 05:09:49 i would imagine the top 10 would be (int, string, bool, vector, list, float, hash-table, enum, exception, and possibly queues) 05:10:41 marshmallows: why are you asking if you don't want my ideas? 05:11:50 marshmallows: what do you want to write about? 05:11:58 I can't decide 05:12:48 then maybe the wisest option is not to write anything 05:13:12 perhaps reading would be a better idea 05:37:35 -!- olsner has quit (Read error: 110 (Connection timed out)). 06:31:54 -!- andydude has joined. 06:31:56 -!- adu has quit (Connection timed out). 06:32:50 -!- andydude has changed nick to adu. 06:45:06 -!- atsampson has joined. 06:46:41 -!- Sgeo has quit (Remote closed the connection). 06:52:36 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 06:52:36 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 06:52:36 -!- cherez has quit (brown.freenode.net irc.freenode.net). 06:56:53 -!- atsampso1 has quit (Read error: 110 (Connection timed out)). 06:58:20 -!- cmeme has joined. 06:58:41 -!- oklofok has joined. 07:02:31 -!- calamari has quit ("Leaving"). 07:11:53 -!- oklofok has quit (Remote closed the connection). 07:12:11 -!- cherez has joined. 07:12:52 -!- oklofok has joined. 07:39:09 -!- andydude has joined. 07:40:25 -!- adu has quit (Nick collision from services.). 07:40:33 -!- andydude has changed nick to adu. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:11 -!- oerjan has quit ("Gooed knight"). 08:55:28 -!- Tritonio_ has joined. 09:12:35 -!- adu has quit (Remote closed the connection). 09:32:55 -!- Tritonio_ has quit (Remote closed the connection). 14:08:42 -!- slereah__ has joined. 14:22:47 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 14:28:05 -!- slereah_ has joined. 14:41:52 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 15:09:19 -!- Tritonio_ has joined. 15:15:59 RodgerTheGreat: the comic looks good so far 15:16:12 but the blond guy's hair changes colour 15:16:20 everything changes color 15:17:37 alas using the standard technique of making everything capital letters prevents the full effect of something being called "the Apparatus" 15:17:48 (i.e. the capital A gets lost) 15:18:52 granted 15:19:27 keep us updated 15:22:21 I shall 16:04:30 -!- jix has joined. 16:23:18 -!- oerjan has joined. 16:58:24 -!- Sgeo has joined. 17:06:27 SimonRC, comic? 17:06:33 SimonRC, what comic? 17:06:47 (hm, could you make an esolang of it?) 17:12:10 http://www.nonlogic.org/dump/images/1205723239-preview.png 17:12:37 (by RodgerTheGreat unless my memory is like swiss cheese) 17:15:41 -!- sebbu has joined. 17:24:56 -!- ehird has joined. 17:25:37 -!- ehird has set topic: #esoteric - Extending tetration to the reals in Brainfuck. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 17:26:39 marshmallows = new? 17:26:47 hi ehird 17:26:47 [16:26] [Whois] marshmallows is an operator on channels: #ALGOL 17:26:49 well that does it 17:26:51 :-) 17:27:03 evidently; an agent of evil 17:27:07 :D 17:28:20 * oerjan has discovered marshmallows's secret, with the help of the mighty Logs 17:28:49 data Rec a = Now a | Later (Rec a) 17:28:50 All books are 3 characters. Check syntax and try again 17:28:52 brilliant 17:29:04 fix Later 17:29:04 :D 17:29:18 indeed o_O 17:30:09 lament: your scheme is broken, by the way 17:30:22 #;1> (define (foo) (begin (define x 2) (display x) (define x 54) (display x))) 17:30:22 #;2> (foo) 17:30:22 254#;3> 17:30:40 bigloo is not a scheme interpreter 17:30:43 not a conforming one at least 17:31:17 lament: however, remove (begin ...) and replace with ... 17:31:22 it's implicit in lambda-bodys 17:31:28 and your example becomes standard 17:31:59 thought provoking, original and interesting. 17:32:01 YOUR MOTHER 17:32:08 * ehird kicks self repeatedly as punishment 17:32:30 for what? o_O 17:32:50 oerjan: saying that :D 17:32:51 'Conformance checkers must check that the input document conforms when scripting is disabled, and should also check that the input document conforms when scripting is enabled. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [HALTINGPROBLEM])' 17:32:55 that's perfectly reasonable 17:33:02 ensuring validity is perfectly fine 17:33:14 the only time it would break is pretty much when a deliberately malicious script was there 17:35:38 02:25:51 17:35:38 I am trying to decide if I should even implement closures.02:30:50 17:35:38 They are so slow. 17:35:47 closures are slow, let's go writing micro-optimized languages 17:36:11 i mean jeez 17:36:12 its an esolang 17:36:13 :| 17:36:50 Deformative: "comment..." 17:36:54 that's what smalltalk does 17:36:58 and uses '...' for string 17:36:58 s 17:56:46 I don't know what to do 17:56:55 should I use haskell or scheme to write a WAM in? 17:57:05 (or C, or something else?) 17:59:09 Prolog. *ducks* 18:04:51 ehird: what's bigloo? 18:05:38 http://uncyclopedia.org/wiki/An_article_that_contains_nothing_but_a_cut-down_version_of_itself_that_does_not_contain_itself 18:05:43 lament: your scheme apparently 18:05:48 (i know what bigloo is. I just don't understand why everybody hates it so much when it seems one of the better implementations) 18:06:18 in general the scheme community is weird in that they hate stuff that's clearly good 18:06:18 lament: because it ISN'T a scheme implementation 18:06:29 it is broken. 18:06:37 so obviously not 'clearly good' 18:06:42 what do you mean it isn't? they say it's "mostly compliant" 18:06:52 which is as good as most things 18:07:18 lament: the reason your example gets that output is because bigloo is broken. 18:07:22 bigloo is also broken in countless other ways. 18:07:27 ergo, bigloo is not clearly good 18:09:10 is gcc broken because it supports single-line comments in C? 18:09:41 lament: look, bigloo is broken 18:09:58 but evidently you know more about scheme than me and #scheme and you must, therefore, be right when you claim that bigloo is 'clearly good' without justification 18:10:30 how's saying it's broken without justification any better than saying it's clearly good without justification? 18:10:42 When i said "clearly good", i mostly referred to r6rs, by the way :) 18:10:53 hahaha 18:10:54 which is an unrelated issue 18:11:11 R6RS is great! 18:11:22 it doesn't even matter if it's great or not so great 18:11:28 It's like eating mcdonalds everday 18:11:30 the amount of hate #scheme generates towards it is just unbelievable 18:12:17 marshmallows: why do you say that? 18:19:46 I can't produce a rational argument, I simply feel that way 18:19:54 This is funny though http://www.utdallas.edu/~ramakrishnan/Projects/GC_for_C/index.htm 18:20:00 gc for c is not funny... 18:20:08 well, that page is 18:20:10 I need a GC 18:20:15 but boehm's gc, for instance, is a good idea for real use 18:20:18 I don't really want to write one 18:20:21 marshmallows: boehm. it is great. 18:20:26 well tested, robust, very widely used.. 18:20:32 just don't fuzz about with pointers too much ;) 18:20:34 PLEASE DON’T USE THE CONTENTS OF THIS PAGE FOR PLAGIARISM 18:20:34 It didn't compile for me 18:20:39 I'll try again 18:21:08 is that embedded INTERCAL code? 18:21:15 /* 18:21:15 <> 18:21:15 18:21:15 */ 18:21:21 /* 18:21:21 This is the source code of our collector. Save this file in the name "GC.h" and gothrough the "Read_me.pdf" and "User_Manual.pdf" file for more details. 18:21:21 */ 18:21:32 also it has excessive whitespace and each stdlib include file is extensively documented 18:21:53 FOR EXAMPLE: 18:21:53 /* 18:21:54 This header file is included inorder to enable us to do string operations 18:21:54 */ 18:21:54 #include 18:22:25 lament: their malloc printf's when it can't allocate 18:22:27 if(gc_ptr == NULL) 18:22:27 { 18:22:27 /* return NULL */ 18:22:27 printf("\nYour Request cannot be satisfied even after Garbage Collection \n"); 18:22:27 return NULL; 18:22:29 } 18:22:40 and on incorrect calls, prompts the user 18:22:41 printf("\nGC_ERROR 1 : The argument for the GC_malloc function should always be positive"); 18:22:41 printf("\nDo u want to exit or continue without allocation (y/n ) : "); 18:22:41 scanf(" %c",&gc_continue); 18:22:52 haha 18:23:24 lament: you could use that for the befunge 'ask on div 0' thing 18:23:24 :D 18:59:44 -!- oerjan has quit ("leaving"). 19:13:15 -!- ehird`ii has joined. 19:13:28 testy 19:13:43 echo>foo sending to irc is a weird feeling 19:14:19 testy2 19:14:32 testy3 19:14:46 very amusing little thing.. gotta play with this some more 19:16:11 now... how do I quit?\! 19:18:22 -!- ehird`ii has quit (Remote closed the connection). 19:22:07 -!- ehird_ has joined. 19:22:11 -!- ehird has quit (Read error: 113 (No route to host)). 19:56:44 ehird_, err? 19:56:49 now... how do I quit?\!? 19:56:53 what were you doing? 20:01:13 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)). 20:04:01 Deewiant, there? 20:04:28 if a befunge interpreter runs out of memory trying to push a value on stack, what should it do? call abort() or reflect with known broken state? 20:04:43 -!- ehird_ has joined. 20:07:23 * Sgeo had a lucid dream! 20:07:44 http://www.dreamviews.com/community/showpost.php?p=735756&postcount=104 20:08:23 -!- slereah_ has changed nick to slereah__. 20:11:26 -!- ais523 has joined. 20:13:06 Sgeo: do you want a medal? :P 20:13:11 hi, ais523 20:13:29 'You are dreaming. Do a reality check!' <-- no. I am not 20:13:43 I do not use a computer in my dreams, because that would be sad. :D 20:14:04 ehird_: hi 20:14:07 * Sgeo doesn't either 20:14:23 * ais523 doesn't remember having used a computer in dreams 20:14:25 (Strangely enough, because I'm on the computer ALL THE TIME irl) 20:14:32 But apparently some people do 20:14:34 but I often think about programming whilst trying to fall asleep 20:14:45 i'm heavy in lucid dreams 20:14:46 AnMaster: I'd say the best solution is to reflect, but at that point the befunge program can't really do anything about the situation so might as well abort 20:14:55 ehird_, what was " very amusing little thing.. gotta play with this some more" about? 20:14:59 like i'm carrying all the weight of my mind saying 'you're not meant to be able to do this in dreams, damnit' while walking 20:15:06 AnMaster: a file-system based FIFO irc client 20:15:13 Deewiant: context? 20:15:17 AnMaster: you cat to 'in' files and tail -f 'out' files 20:15:20 Deewiant, yes because I just replaced the stack array pointer will a null pointer anyway XD 20:15:22 and it has a directory tree 20:15:27 of server/entity/in,out 20:15:40 ehird_, link? 20:15:44 ehird_, coolness 20:15:50 does anyone here have code for a very simple IRC client, so that it could be translated into an esolang? 20:15:52 ais523: running out of memory when pushing a value on the on stack 20:15:58 er, s/the on/the/ 20:15:59 AnMaster: http://www.suckless.org/wiki/tools/irc/irc_it 20:16:04 AnMaster: from the people who brought you wmii&dwm 20:16:10 ehird_, tried zsh irc? or was it zirc? 20:16:14 ais523: yes, yes i do 20:16:23 http://www.suckless.org/wiki/tools/irc/simple_irc_client 20:16:26 isn't that convenient? ;) 20:16:34 ais523: <250 lines of c 20:16:55 ehird_, anyway there is an irc client in *pure* zsh, no external commands called 20:17:03 AnMaster: yes i know 20:17:04 and you can work in your shell at the same time 20:17:05 i told you about it. 20:17:10 it kind of hooks into the shell 20:17:15 i told you about it. 20:17:32 ais523: be warned, sic isn't very nice to use 20:17:34 ehird_, nah you didn't, I remember it was someone on #gentoo-amd64 who did 20:17:41 ais523: it's bitchx-style - multiplexes everything into one stream 20:17:42 ehird_: I don't care particularly 20:17:44 so you get mixed up channels 20:17:46 etc 20:17:46 it's the proof of concept, really 20:18:00 and you can always just start two clients for two channels and use them with different nicks 20:18:07 ais523, what language? befunge? 20:18:14 AnMaster: INTERCAL 20:18:14 presumably befunge-98 20:18:17 ais523, ah 20:18:19 ais523: uhh, intercal has sockets? 20:18:27 you cannot use netcat: you need stdin for user input 20:19:03 INTERCAL + PSOX has sockets!@ 20:19:14 because I just found out that CLC-INTERCAL added generalised networking support 20:19:14 (previously, networking could only be used to steal data from other INTERCAL programs) 20:19:15 Sgeo, -_- 20:19:16 Sgeo: yes 20:19:20 Sgeo: oh shut up. 20:19:29 especially since the overhead to using psox from intercal would be painful 20:19:34 I would have done it like that if it weren't for the networking library already present 20:19:38 (ditto in just about every non-brainfuck language. don't fool yourself :)) 20:19:41 ehird_, oh why would it? 20:19:43 and ehird_: you could localise the overhead in a subroutine pretty easily 20:19:51 AnMaster: psox is basically brainfuck-centric. 20:19:57 Sgeo just says it isn't for marketing potential 20:20:16 at least in C-INTERCAL; CLC-INTERCAL would be harder because some ASCII characters are easier to produce than others 20:20:19 ehird_, bf centric? how+ 20:20:22 s/+/?/ 20:20:25 (because it uses Baudot as its character set) 20:20:26 AnMaster: try and use it, then see :) 20:20:35 brainfuck-centric sounds boring 20:20:40 ais523: hmm, is C-intercal modular/extensible/foobarbaz? 20:20:45 ais523: I might write a SOCKET foobar. 20:20:49 It was designed mostly from the point of view of using Brainfuck, but it doesn't actually force you to use Brainfuck 20:20:51 ehird_: pretty much 20:20:56 ehird_, a "foobar"? 20:21:03 although I'm writing an FFI for it at the moment, which would make it even more extensible 20:21:03 == intercallish for module? 20:21:12 AnMaster: pretty much :D 20:21:14 ehirdish 20:21:21 AnMaster: generally we just use library files which you literally copy into a program's source code 20:21:37 they're all kept with the distribution to avoid line number clashes 20:21:42 (it's sort of like CPAN, but lower tech) 20:21:53 ais523, couldn't be done for networking I think? would need some interpreter level support 20:21:59 There is a loopback mechanism making it usable (but not easily) in languages that take in lines and not individual characters 20:22:03 AnMaster: CLC-INTERCAL has that 20:22:26 you just need to write a specially crafted line with the line number 666 20:22:35 err 20:22:38 wtf 20:22:39 ?! 20:22:49 AnMaster: it's INTERCAL, what did you expect 20:22:50 I may implement it in C-INTERCAL some time soon, but I'd use the line number 1666 so as to use a line number already reserved for the compiler 20:22:55 ehird_, not that -_- 20:23:07 ais523: I just realised we've exausted all possible Unlambda/Underload/Overload/etc names 20:23:09 Oh wait 20:23:10 Overlambda 20:23:12 that's what's left 20:23:16 -!- olsner has joined. 20:23:26 ehird_, sidewayslambda? 20:23:30 ais523: I guess overlambda would be a 15-tier system 20:23:36 ais523: with things like an ffi at the very bottom 20:23:38 Underlambda exists? 20:23:43 ehird_: Underlambda is just a cross between Unlambda/Underload 20:23:44 ais523, did you say line number reserved for compiler, errrrrrrrr? 20:23:45 Sgeo: ais523's new language 20:23:45 Sgeo: yes 20:23:49 I'm working on the spec at the moment 20:23:52 so that tier-1 is a glorified ffi with tcness 20:23:56 AnMaster: lines 1000-1999 are for the syslib 20:24:02 :D 20:24:09 ais523, so your program must be shorter than 1000 lines? 20:24:13 AnMaster: no 20:24:16 AnMaster: you can use 2000-.. 20:24:18 AnMaster: no, 2000-65535 are fine 20:24:25 so a LOT of whitespace lines? 20:24:25 and not every line needs a number anyway 20:24:32 AnMaster: no 20:24:35 AnMaster: your line numbers needn't be in order 20:24:36 just do '2000 foo' 20:24:38 or contiguous 20:24:41 ehird_: (2000) foo 20:24:43 err 20:24:44 yes 20:24:45 whatever 20:24:45 oh line as in 10 PRINT HELLO GOTO 10 20:24:45 :D 20:24:45 ? 20:24:57 AnMaster: like that 20:25:02 but the numbers needn't be in order 20:25:04 ais523: hmm, is there a C-INTERCAL grammar that isn't yacc/lex anywhere? 20:25:06 like, a spec for it 20:25:09 *PRINT LOOK AROUND YOU 20:25:22 ehird_: you can deduce it from the C-INTERCAL manual 20:25:29 or there's an IACC grammar in CLC-INTERCAL 20:25:43 ais523: alternatively, how hard would it be to hack c-intercal to produce some simple output which gave start+end+token-type positions for intercal? 20:25:44 -!- sebbu has quit ("reboot"). 20:25:49 ehird_: not hard 20:25:51 that would be syntax-highlighting sorted 20:26:31 ehird_: I'd planned that sort of thing already 20:26:43 you should see the grammar, though, it takes lexical tie-ins to a whole new level 20:26:52 ais523: maybe it should dump it as an INTERCAL program which constructs the data structure 20:26:53 :D 20:27:14 ehird_: you say such things in jest. Have you ever looked at CLC-INTERCAL? 20:27:18 it's full of that sort of thing 20:27:55 C-INTERCAL compiles to a non-esolang, therefore has to be saner 20:27:55 ais523: whoaa, wait 20:27:58 http://www-cs-faculty.stanford.edu/~knuth/programs/tpk.i 20:28:01 that gives me an ideaaaaaa 20:28:02 but CLC-INTERCAL compiles to custom bytecode 20:28:06 an ideaaaaaaaaaaaaa 20:28:10 TAOCP in INTERCAL. 20:28:16 There's already one in redcode, so.. 20:28:18 TAOCP? 20:28:31 what is TAOCP? 20:28:37 .. 20:28:45 Knuth you people!!! 20:28:49 ? 20:28:58 The Art of Computer Programming! 20:28:58 I've bacronymed it into "The Art Of Computer Programming", but am not sure whether I am right 20:29:14 You know, Knuth's '70-Aleph0 work 20:29:18 ehird_, well since it is kuth, why not do TeX in intercal? 20:29:22 the origin of tex/ 20:29:22 ? 20:29:27 AnMaster: ehh, taocp is in blocks 20:29:31 you can translate one algo at a time 20:29:34 but tex.. sheesh 20:29:37 http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web <-- tex82 20:29:40 hideous :D 20:29:47 ehird_, I mean a tex processor/interpreter/whatever in intercal 20:29:48 & is actually in an HTML document 20:29:49 which is hilarious 20:29:54 AnMaster: hideously complex. 20:30:07 ehird_, yes both are 20:30:14 ehird_: INTERCAL-72 acts block-structured and imperative, because all languages were back then 20:30:22 so it's not too hard to translate that sort of code 20:30:31 luckily, CLC-INTERCAL sorted out the problem by banning NEXT 20:30:35 AnMaster: um no.. 20:30:41 and even in C-INTERCAL I consider using it for subroutines to be bad form 20:30:46 AnMaster: you can do TAOCP one at a time 20:30:46 sheehs 20:30:50 ehird_, err? 20:31:07 AnMaster: http://impomatic.blogspot.com/ 20:31:10 that'st he redcode one 20:31:20 ehird_, I just said coding a a program in intercal that can process TeX 20:31:28 and produce, say, *.dvi 20:31:56 AnMaster: do you know how complex tex is? 20:32:00 and how quite primitive intercal is? 20:32:02 ehird_, rather complex yes 20:32:04 well, it has loads of stuff 20:32:04 I know that 20:32:07 ehird_: INTERCAL isn't primitive 20:32:09 that was why I suggested it 20:32:11 ais523: I meant it like.. 20:32:17 it just looks that way from a read through the INTERCAL-72 manual 20:32:17 primitive as in very repetitive 20:32:20 to do even basic stuff 20:32:23 read a more modern manual, you'll get the hang of it 20:32:30 since although it has many instructions, they do not do much useful 20:32:49 AnMaster: 'implement tex' is like saying 'implement c' 20:32:55 except a little less horrific 20:32:56 err that http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web, got weird stuff in it 20:32:59 while p≠null do 20:33:02 wtf? 20:33:04 AnMaster: it's html... 20:33:08 "pâ‰"?! 20:33:09 save it as .html 20:33:10 then ctrl-a 20:33:16 and copy it into a .web file 20:33:21 have you not seen a backtracking, or multithreaded, or class-oriented, or overloading and enslaving-using INTERCAL program? 20:33:25 uhu 20:33:25 or are you stuck in 1972? 20:33:36 ais523: i'm trying to say that the basic operations like text transforming 20:33:37 ais523, "enslaving-using"? 20:33:38 are very tedious 20:33:45 AnMaster: like pointers, but in reverse 20:34:01 it's a CLC-INTERCAL concept that's kind of hard to explain and that I don't understand properly 20:34:02 in reverse... not sure I get what you mean? 20:34:10 AnMaster: neither do I 20:34:22 AnMaster: anyway, those chars are things like ≠ 20:34:27 (=/= if you can't see it) 20:34:28 ais523, so what are they, you maintain a intercal implementation right? 20:34:31 so save as html! 20:34:34 AnMaster: I don't implement them 20:34:38 ehird_, I got utf8 here 20:34:43 ais523, ah 20:34:50 AnMaster: save tex.web as an html document damnit 20:34:50 so CLC does? 20:34:54 AnMaster: yes 20:35:09 it's the only INTERCAL implementation I know that actually handles the type system properly 20:35:24 ehird_, isn't it rather silly that it is on the internet as text/plain 20:35:34 C-INTERCAL's version is a statically-typed hack that usually works correctly, but with one exception that it's worth warning people against 20:35:34 tex.web proves that you can write good software with any tools 20:36:50 AnMaster: knuth's webserver is bugged, so what 20:37:05 heh 20:37:13 lament: or rather without... like dynamic memory allocation! 20:37:25 * ais523 remembers that Wikipedia refuses to serve any documents with the type text/plain because IE keeps trying to interpret it as JavaScript and running it 20:37:37 http://www.classnamer.com/ 20:37:41 what's tex.web? 20:37:48 they use text/css, which in all commonly-used browsers does what text/plain ought to do 20:37:53 marshmallows: http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web 20:37:55 marshmallows: source to tex, circa 82 20:38:01 lament: no, that's more recent 20:38:09 it's still tex.web 20:38:09 why is it in an HTML file? 20:38:15 3.141592 20:38:19 lament: Yeah someone linked it a while ago 20:38:22 because WEB is a literate programming system 20:38:25 marshmallows: who cares 20:38:28 lament: no, it's in a
20:38:31  anyway
20:38:33  THE REAL REASON
20:38:38  is that knuth wanted to put tex.web on his website
20:38:38  ehird: me since I have NFI what it is
20:38:42  so he wrote an html document wrapping it
20:38:45  and uploaded it
20:38:49  lament: with an extra ! at the start of the program, TECO becomes a literate programming language
20:38:49  but he uploaded as tex.web
20:38:50  ok
20:38:55  and his webserver serves not-.html as text/plain
20:39:09  marshmallows: it's Knuth's TeX typesetting system, as it was in 1982
20:39:15  ais523: i'm not sure why i would be interested in TECO :)
20:39:27  lament: it's a classic esolang
20:39:29  ais523: I want to learn teco. :(
20:39:34  although it wasn't intended as such originally
20:39:45  IMO it's up there with BancSTAR
20:39:50  i don't think things like that qualify as esolangs
20:40:08  hmm
20:40:10  BancSTAR is clearly an esolang, despite the fact that it was intended as a serious language
20:40:13  its code looks like noise
20:40:17  I want a language that is pure-literate
20:40:18  but so does binary code
20:40:18  it's like Network Headache
20:40:27  lament: TECO is binary, more or less
20:40:31  hmm
20:40:34  what about nested literate
20:40:36  all the characters in the character set, including the control codes, have meanings
20:40:38  ais523: right. that doesn't make it an esolang.
20:40:42  comment>>
20:40:49  no wait
20:40:51  reverse that
20:40:53  ais523: it's not being unreadable that makes something an esolang
20:40:54  ehird_: TECO isn't !comment!code!comment!code!
20:40:56  comment>code>comment>code<<<
20:41:07  so like this:
20:41:07  but it amounts to that because the chances of the bits between the !s having any meaning is very low
20:41:17  This procedure does X, then does Y:
20:41:33  >X{y:int >our temp var< ...}$<
20:41:34  :D
20:45:53 -!- tola has joined.
20:49:34  ais523: perl global variable initialized to false
20:49:35  quick!
20:49:36  :D
20:49:38  no wait
20:49:44  initalized to true
20:50:09  ehird_: $]
20:50:18  it's the version number, which is not false, and therefore true
20:50:26  ais523: wow
20:50:27  :D
20:50:40  unless you happen to be using Perl version 0, which doesn't exist
20:51:17  ais523: multiple statements in one expression?
20:51:27  do{statement;statement;}
20:51:33  the last statement gives the value of the expression
20:51:53  oh, and those braces don't count as braces for any purpose but for delimiting the do
20:52:02  they can't be redo'ne, for instance
20:52:09  but you can put a real pair of braces inside them if you like
20:53:22  ais523: (??{$foo})
20:53:23  right
20:53:24  ?
20:53:28  yes
20:54:09 * slereah__ received this : http://membres.lycos.fr/bewulf/Russell/Ada2.jpg
20:54:10  :D
20:55:04  ais523: http://pastebin.ca/946562 this would be the ugliest perl ever if it actually worked
20:55:18  ehird_: you've never seen ugly Perl, obviously
20:55:51  uh... you can't /assign/ to the version number
20:55:53 * SimonRC likes classnamer.com
20:56:30  if you never use <> again, you could instead use $/ as a default-true global
20:56:35  (the line separator)
20:56:40  "RecursiveLolcatMonitor"  hehehe
20:56:47  I /think/ newline is true
20:57:14  no, newline is apparently false
20:57:16  ais523: i have to escape $/ in a regexp obviously
20:58:02  OK, then use $. which is the number of times you've called <> so far
20:58:11  it'll be 1 by that point in the program, and you're allowed to assign to it
20:58:38  ais523: wtf use does that var have
20:58:54  ehird_: writing line numbers in the margin of documents
20:58:58  and translating sed into perl
20:59:04  ais523: here is my error
20:59:07  Bareword found where operator expected at lit.pl line 4, near "s/[^@]*/print $.?"$0":"
$0 there are no Visitors, Listeners, Iterators, etc though  :-(
20:59:19  ehird_: the bareword is PRE
20:59:23  ais523: oh wtf
20:59:26  because you forgot to escape the / in 
20:59:40 be kind on yourself and use a different delimiter than / for the regexp 20:59:40 ais523: and $0 isn't interpolated, damn 20:59:43 :( 20:59:55 you can write s%[^@]*%print... for instance 21:00:01 what did you expect $0 to be? 21:00:09 ais523: whole-match 21:00:11 $& 21:01:16 E>1
0
1
0
1
0
1
0
1
0
1
0
1
0
21:01:18 that's what it does now 21:01:18 :D 21:01:25 s%[^@]*%print $.?$&:"
$&
";$.=!$.%e and redo; 21:03:37 ehird_: isn't that what it's meant to do? 21:03:53 ais523: um..no 21:03:56 it's meant to return the whole match 21:04:09 oh, it's because s%%e will insert the result of the expression into the original string 21:04:20 okay.. :p 21:04:28 put ;"" at the end of the expression 21:04:33 so you have no replacement 21:04:39 E>

so $& is broken 21:05:09 $& is my replacement, somehow.. 21:05:47 ais523: in s/foo/.../, performed on 'foo', group 0 = 'foo' 21:06:30 that should be $& 21:06:36 although I can't remember when it's assigned to 21:06:44 just do things the easy way, using parens and $1 21:06:58 $& is really inefficient, anyway 21:07:15 it slows down all the regexps in your program if you even mention it once 21:07:24 still does the same thing oddly 21:07:38 ehird_: you're using * not + 21:07:41 so you can make a zero match 21:07:45 and you don't mean that 21:07:58 Literate program

helloworldabcdef
21:07:58  
21:08:05 or you'll keep matching no chars at the start of the string... 21:08:08 my /e is broken 21:08:09 :D 21:08:48 hm 21:08:52 it now infiniloops 21:09:14 ahh i see 21:10:05 ais523: really, i just want to eval some code when i see some stuff 21:10:09 then remove that stuff from the document 21:10:24 use /eg, rather than looping 21:10:40 then you don't start from the start every time 21:10:51 ais523: but then my @ replacement doesn't work 21:11:06 since the rules have to be done one after another, in a 'try this, or this, or this' fashion 21:11:14 then advance how much it consumed 21:11:59 ehird_: you aren't replacing the @s 21:12:05 just the characters between them 21:12:14 s/@/$.=!$.;""/e and redo; 21:12:18 QED 21:12:56 hmm 21:12:59 I want ^@ 21:13:10 but then i get 21:13:11 Literate programhelloworldabcdef 21:13:11 21:15:25 ais523: !$. == $. 21:15:29 or: $. == 0 21:15:32 then !$. == 0 21:16:06 or rather 21:16:11 my $.=!$. in my replacement doesn't work 21:16:38 hmm... I've never used ; in an /e replacement before, but presumably it works (I can't think of what else it would do other than error) 21:18:12 ais523: http://collabedit.com/display?id=ae50449cf0ae8339cc7a28cf546ff29c cute. i'm going to put my code here as an experiment 21:18:33 ehird_: I'm too busy with other things right now to help, really 21:18:42 if you ask again on Thursday I'll be a lot freer 21:27:17 "Object-oriented programming is an exceptionally bad idea which could only have originated in California." -Djikstra, apparently 21:29:07 I'm not sure that objects have failed 21:30:34 Deewiant, should the interpreter abort() on any out of memory conditions or just on stack one? 21:31:23 AnMaster: I think you'll find that your interpreter will abort() by itself if it runs out of memory ;-) 21:31:27 Deewiant, on stack-stack the specs seem to suggest it should work as r, but it doesn't say anything about other routines 21:31:32 AnMaster: for { and } it should be r 21:31:33 yeh 21:31:53 Deewiant, I tried with ulimit -v, it didn't abort, it caused GC to print lots of warnings 21:31:57 and errors 21:32:01 but it didn't abort 21:32:33 right, C doesn't have exceptions. :-P 21:32:41 Deewiant, ok point taken 21:32:53 I forgot to check some return values of mallocs for NULL indeed 21:34:32 AnMaster: linux will kill a process -- any process -- if it runs out of memory 21:34:41 write a 4-line malloc wrapper that abort()s on NULL. 21:34:42 ehird_, yes I know that 21:34:44 use it everywhere. 21:34:55 ehird_, well that slows things down ;P *runs* 21:36:02 ehird_, and I would need one for calloc, and one for GC_MALLOC_ATOMIC and so on 21:36:04 realloc too 21:38:21 I dumped a trace from mycology, one instruction for each line: 21:38:23 $ wc -l trace.txt 21:38:23 125363 trace.txt 21:38:51 processing 125363 befunge instructions in 0.08 second, amazing what modern computers can do really 21:39:46 and most of that is IO reading file in 21:40:08 AnMaster: never use calloc() 21:40:13 calloc is a sign of lazy programming 21:40:14 -!- mib_ko3mgv8a has joined. 21:40:18 plus, it's slow, which matters to you so much 21:40:31 ehird_, hm? slower than malloc + memset to fill with 0 after? 21:40:46 AnMaster: that in itself is pretty slow 21:40:59 ehird_, needed that in that place hrrm 21:41:12 * AnMaster rewrites 21:41:13 AnMaster: fix that place 21:41:14 :D 21:41:48 anyway my tests shows than around 0.06 seconds = loading file, the rest two = run program 21:42:02 most time is spent in hash code in both cases 21:42:17 as funge-space = hash table 21:42:17 huh? hashing? 21:42:20 ah, ok 21:42:30 what's wrong with calloc? 21:42:55 well, for a start, funge-space must be initialised to 0 21:43:08 actually, to ' ', i.e. 32. 21:43:17 so assuming that 0.02 is spent at program running, my interpreter runs mycology at about 6 MHz, or slightly faster due to rounding 21:43:18 SimonRC: you can't initialize ALL Of fungespace. 21:43:20 um, yes, that was what I meant 21:43:29 SimonRC: you just use a default value on a hash table 21:43:35 yes 21:43:37 SimonRC, of course it isn't, default value == ' ' 21:43:47 we need a UniFunge 21:43:49 :D 21:43:51 so if no cell exist it returns space 21:43:57 there is a Unefunge already 21:43:58 it's like befunge, but abusing tons of unicode 21:43:59 ehird_, unefunge does exist 21:44:03 SimonRC: unifunge, dmanit 21:44:04 ah, unicode 21:44:06 ah 21:44:06 outch 21:44:08 ouch 21:44:23 well, there is ping-pong 21:44:38 I wonder why just 6 MHz :/ 21:44:42 or so 21:45:14 well, you are obviously using a few hundred real instructions for each virtual one 21:45:16 still pretty fast compared to bashfunge that was at most in the khz range 21:45:17 :D 21:46:12 AnMaster: write an asmfunge 21:46:15 :D 21:46:22 ehird_, forget that! 21:46:35 (ping-pong has a custom charset) 21:46:50 actually a faster hash library would help 21:46:56 I used gprof 21:47:05 most time is spent in searching hash table 21:47:41 AnMaster: you are using a perfect hash table, right? 21:47:42 :| 21:48:18 ehird_, err? I just took a hash library that was easy to use, had a compatible license, and didn't suck too much 21:48:22 probably far from best 21:48:25 AnMaster: xD 21:48:28 you have a finite set of keys. 21:48:32 ergo: http://www.gnu.org/software/gperf/ 21:48:39 a known set of keys, too 21:48:50 SimonRC: exactly 21:49:02 -!- ehird_ has changed nick to ehird. 21:49:21 ehird, anyway I don't know what my hash will contain, it could be any befunge program 21:49:22 :/ 21:49:34 AnMaster: you should learn about hash tables.. 21:49:40 you know exactly what keys you will have 21:49:45 -!- mib_ko3mgv8a has quit ("http://www.mibbit.com ajax IRC Client"). 21:49:51 ehird, yes I should learn about them 21:50:00 AnMaster: basically: 21:50:10 ehird, keys will be structs like { .x = ..., .y = ... } 21:50:11 if you have a finite set of keys and you know exactly what keys are possible, 21:50:13 at least they are now 21:50:16 ... 21:50:29 SimonRC: Please tell AnMaster his fungespace has a warped, terrible design. 21:50:37 ehird, it probably hash 21:50:39 has* 21:50:40 I agree 21:50:51 ehird, but I got an abstraction so easy to change 21:50:55 AnMaster: if you use a perfect hash functino like gperf will generate for you and stop using structs for the keys you will be great 21:51:05 you might have to throw out your abstraction for efficiency 21:51:28 hmm 21:52:01 ehird, hm it is just a case of get/set functions and load file and wrap 21:52:28 actually the most efficient representation for funge-space is a hard problem 21:52:45 SimonRC, well it is a 2D array that need to be sparse 21:52:52 yes, i know 21:53:05 oh and negative values are valid 21:53:10 like say, -4,-6 21:53:11 often the middle is very dense, so an array would be good 21:53:14 totally valid 21:53:58 but the program might store a value anywhere in funge-space, so you must be able to handle that without suddenly allocating a multi-PB array 21:54:06 SimonRC, indeed 21:54:21 some kind of trie would suck for the common case... 21:54:27 SimonRC, valid ranges here are, depending on compile time options, either int32_t or int64_t 21:54:40 for both x and y 21:54:49 and you will want to exploit high code locality 21:54:50 hmm 21:54:56 'mv *.pl *.py' should work :( 21:55:00 clever *-globbing. 21:55:06 as replacement 21:55:09 ehird: how would that work? 21:55:14 SimonRC: move all .pl to .py 21:55:22 there is usually a "rename" utility 21:55:23 ehird, it would need to be integrated into the shell 21:55:23 SimonRC: the * is taken as the 'common part' 21:55:32 AnMaster: yup 21:55:32 AnMaster: not if the shell was clever with * globbing 21:55:43 if you consider * to be a special variable-alike 21:55:48 ehird: um, then the shell would need to know about cp 21:55:51 SimonRC: no 21:55:53 autoload zmv 21:55:54 ehird, try rename like SimonRC said 21:56:01 marshmallows, zsher? 21:56:10 SimonRC: it would work for 'foo *.pl *.py' 21:56:14 it would just redefine what * means 21:56:23 ehird, why not write such a shell? 21:56:39 AnMaster: lazy 21:56:42 ehird, also how would it call it? call the function x times? 21:56:48 or program or whatever 21:56:54 AnMaster: not sure yet 21:56:55 use the right tool for the job 21:56:55 :D 21:56:56 man rename 21:57:14 ehird, or just a simple loop 21:57:19 AnMaster: shut UP, every time someone comes up with an idea, even if not intended to be made into practice, you yell at them for not using your preferred toolchain 21:57:19 :| 21:57:30 ehird: no he isn't 21:57:36 for file in *.pl; do mv "$file" "$(basename "$file" .pl).py"; done 21:57:39 NOT TESTED 21:57:49 so don't complain if that does the wrong thing 21:57:57 you could get rid of basename calll 21:57:58 call* 21:58:06 using parameter expansion iirc 21:58:22 left as an exercise to the reader ;P 21:58:47 ls >>= mv `ap` (s/*pl/*py/) 21:58:49 lol 21:59:00 marshmallows, is that zsh? 21:59:04 no 21:59:10 marshmallows, what shell? 21:59:16 none 21:59:22 oh what is it then? 21:59:30 AnMaster: that's haskell with the right functions 21:59:35 hmm 21:59:40 list-monad + IO i think 21:59:47 and... s/// :P 22:00:46 perl has lots of good quoting .. I wish more langs had 22:02:05 you can add regex functions to any language, but you have to use strings :/ 22:06:09 ehird, as far as I can see reading gperf docs, it seems to require a static data set, wouldn't that mean it would just match a single program, ie, mycology, or wumpus or whatever? 22:06:35 AnMaster: your data set is (x,y).. 22:06:36 0,0 22:06:37 0,1 22:06:40 yes 22:06:41 etc 22:06:41 true 22:06:46 ehird, and negative values 22:06:50 AnMaster: yes yes whatever 22:06:50 :) 22:07:02 AnMaster: Just use gperf for each data range you offer (32 and 64) 22:07:10 and use one or the other hash depending on the choice 22:07:15 hm 22:16:14 ehird, I'm still not sure I understand, from reading gperf docs it seems to be for strings only? :/ and where does it do ranges? 22:16:31 ie, -2^31 to 2^31 22:16:33 or whatever 22:17:13 I don't have disk space for a file with 2 * 2^64 lines 22:19:57 hmm 22:20:02 you could jit stuff 22:20:17 initially, interpret 22:20:45 if a region is executed a lot with no change, JIT it, but look out for changes to an "dependents" the region has 22:22:37 SimonRC, good idea, but considering mycology, most sections aren't executed several times 22:22:55 well there will be little speed penalty 22:23:23 SimonRC, JIT would mean compile to machine code? 22:23:29 yes 22:23:32 you know that fails on lots of OS 22:23:38 like openbsd that I'm on atm 22:23:40 'mv *.pl *.py' should work :( 22:23:42 well the JVM manages it 22:23:53 ehird: 'ren *.pl *.py' does work in DOS 22:23:58 and does what you wanted 22:24:03 because the shell does no globbing at all 22:24:06 SimonRC, memory pages are either writable or executable but not both 22:24:17 that is because DOS relies on the program to do globbing 22:24:23 SimonRC, important security feature of modern systems 22:24:34 AnMaster: so how to JVMs do JITting? 22:24:42 AnMaster: but self-modifying code is often useful! 22:24:58 SimonRC, they mark themself as needing writable stack/whatever 22:25:06 err executable and writable 22:25:13 however it is complex to do that 22:25:15 iirc 22:25:47 SimonRC, also compile to machine code, well what arch 22:25:55 x86? x86_64? ppc? ppc64? 22:26:00 whatever is supported 22:26:07 I want portable code, and I use all of those arches myself 22:26:15 note that I'm not good at asm either 22:26:28 AnMaster: then just use a portable asm 22:26:34 wait, you want me to do something 1000 JMV and .NET engineers can't and produce a protable JITter? 22:26:35 like C--, or an OISC 22:26:37 ais523, eh? 22:26:52 (C-- would be the 'serious' choice) 22:27:09 ais523, that would mean a compiler at runtime? 22:27:12 AnMaster: no 22:27:19 unless I misunderstood C-- 22:27:23 it just assembles into a range of different architectures 22:27:23 got a link for C--? 22:27:26 it's a programming language 22:27:38 ais523, right, but how would that work for JIT? 22:27:42 indeed 22:27:57 how to compile code not at runtime when the code is written at runtime? 22:28:04 http://www.cminusminus.org/ 22:28:12 hmm... for JIT you'd probably have to precompile some example asm 22:28:26 and then use the results of that as your asm for the target system 22:28:40 -_- 22:30:34 "Research on C-- and Quick C-- is supported by a generous gift from Microsoft Research and by the National Science Foundation under grant number 0325460." 22:30:38 heh 22:30:41 m$... 22:31:47 AnMaster: they probably need a portable asm for some reason 22:32:00 C-- is used by ghc as well, according to Wikipedia 22:32:20 anyway it doesn't make sense for a JIT as far as I can see 22:32:31 back 22:32:32 who said something 22:33:05 ehird: me, AnMaster, SimonRC 22:34:26 AnMaster: 22:34:33 ehird, yes? 22:34:37 'M$' is pretty immature 22:34:48 yes they are 22:34:50 * AnMaster runs 22:34:54 AnMaster: simon peyter jones -- Haskeller and one of the founders of GHC, the main haskell compiler -- is on MS research 22:34:58 and also made c-- 22:35:11 -!- oerjan has joined. 22:35:18 ehird: that would explain why ghc uses C-- and Microsoft funds it 22:35:22 yes 22:36:07 microsoft is evil!!!! 22:36:13 boycott ghc! 22:36:15 * ais523 thinks that there are all types of people at Microsoft; the company itself is completely self-serving and acts in a way most of its employees dislike, but the employees themselves aren't all bad 22:36:39 they're mostly just confounded by the company's rules to the point where they're not allowed to do nonevil things all that often 22:36:39 microsoft is, first of all, Big 22:36:52 yhc looks really cool 22:36:55 lament: and has Various Noodly Appendages 22:36:59 ehird, see what I said about gperf 22:37:12 ehird, care to explain my questions? 22:37:30 ehird check it out 22:37:59 ais523, their marketing is evil 22:38:01 marshmallows: meh 22:38:07 AnMaster: yes 22:38:09 ais523, just one word: "sourcefource" 22:38:14 it even fooled their own employees 22:38:16 or however they spell it 22:38:37 AnMaster: there is a Great War between God and Evil, and Linux is Good and M$$$$ and the $PEOPLE$ who use it SUCK and are EVIL!!! Why is everyone so STUPID to use it????? 22:38:39 (one of the MS high-ups related to Vista was fooled by a 'Vista Capable' sticker into buying a machine that basically couldn't run it) 22:38:46 * ehird is perhaps exaggerating to the point of stereotypes 22:38:56 but I have seen this stereotype around in a very literal form :) 22:39:17 yes indeed you are 22:39:27 I know there are good ppl at MS 22:39:33 but the company *IS* evil 22:39:41 * ais523 agrees with AnMaster 22:39:44 AnMaster: evil is such a funny term 22:39:45 define it. 22:39:46 well, it does nasty things 22:39:51 except I would have highlighted the word 'company' 22:39:52 ehird, ais523 can do that 22:40:03 but only to the extent that many companies would in that situation 22:40:08 i.e. natural dominance 22:40:45 AnMaster: outsourcing, eh? 22:40:47 and its software is comstimes dreadful 22:40:51 *sometimes 22:41:04 ehird, yes I would define evil as the microsoft company 22:41:13 ehird, I'm still not sure I understand, from reading gperf docs it seems to be for strings only? :/ and where does it do ranges? 22:41:20 ehird, care to answer? 22:41:36 AnMaster: the hash function for a range is the identity function. 22:41:44 assuming its result can fit in that range that is 22:41:55 err? 22:42:54 "# The gperf utility is tuned to execute quickly, and works quickly for small to medium size data sets (around 1000 keywords). It is extremely useful for maintaining perfect hash functions for compiler keyword sets. Several recent enhancements now enable gperf to work efficiently on much larger keyword sets (over 15,000 keywords). When processing large keyword sets it helps greatly to have over 8 megs 22:42:54 of RAM. " 22:43:21 that software must be old 22:43:25 or rather the docs must 22:44:25 AnMaster: not all computers have a lot of memory 22:44:45 although ehird laughed at the Emacs documentation for saying things like 'if you don't have a mouse' 22:44:48 ais523, true, yet I fail to see how gperf, after reading the docs, can do this 22:45:39 well, good night 22:45:40 I was using a computer which was too simple to run Emacs or even vim (I had to learn some minimal vi), and where I had to supply my own terminal (telnet or ssh) 22:46:06 hmm 22:46:17 what are vim's advantages over emacs? 22:47:15 SimonRC: no RSI 22:47:41 in particular? 22:47:55 SimonRC: smaller keystrokes feel like they do more 22:48:00 i.e. more of a wizard 22:48:14 + its range-thingy system is cool 22:48:20 apparently test show that it isn't much faster though 22:48:23 ehird: yes 22:48:28 if at all faster 22:48:34 because you have to tink more 22:48:48 SimonRC: most experienced vim users won't think about most of the keystrokes, I think.. 22:48:50 same with emacs 22:48:50 you can press arrow keys much faster than type complex movement commands 22:48:56 and hardly 22:49:02 4 words along: 22:49:06 M-> M-> ... 22:49:07 or 22:49:10 4w 22:49:16 Or.. 22:49:19 C-u 4 M-> 22:49:30 -!- oklofok has quit (No route to host). 22:52:09 ehird: I just noticed the command line of my IRC client: konversation -caption Konversation --icon=konversation 22:52:17 surely that's a bit more repetitive than would be needed? 22:52:35 ehird: M-4 M-> 22:53:28 no, not M->, that's end-of-document 22:53:31 maybe M-.? 22:53:41 no, M-f 22:53:44 err, I meant 22:53:44 --> 22:53:47 as in the arrow key 22:54:03 i would have said f, but SimonRC said 'you can press ARROW KEYS ..' 22:54:31 ah, yes 22:54:36 waitamo... 22:54:39 * SimonRC thinks 22:54:51 for speed purposes, vim has arrow keys 22:54:55 they're marked hjkl 22:55:08 they are just as fast as arrows to type 22:55:18 though switching modes will slow you down 22:55:19 SimonRC: vi was invented before arrow keys 22:55:20 deal with it 22:55:27 well yes 22:55:31 also, its easier to switch modes with hjkl because your hands are closer 22:55:38 you have to move your hands to the arrow keys. 22:55:51 plus at least one person -- me -- finds the layout of the arrow keys uncomfortable to use 22:55:55 and literally, as the i key is right next to them 22:58:16 SimonRC: soo... there's a couple advantages for you 22:58:17 :p 22:58:25 oh, and vim integrates with the unix way 22:58:28 filters, etc 22:58:41 you have probably seen the recent thing about using vi(m) for a hex editor 22:58:44 :!xxd -> to hex 22:58:49 :!xxd -r -> and back 22:59:00 err 22:59:03 :!%xxd 22:59:04 :!%xxd -r 22:59:05 it's M-x hexl-mode in Emacs 22:59:13 ais523: yes, but that's not the point 22:59:19 the point is that 'xxd' can know nothing about vi(m) 22:59:21 and still function fine 22:59:40 there's probably a way to do that in Emacs somewhere too 22:59:52 it's probably hardly ever used, though, because Emacs purists tend to resist using any non-Emacs programs 23:00:04 Emacs is often described as an OS. It isn't. It's a shell 23:00:18 * ais523 can imagine an OS that uses Emacs as a window manager 23:00:21 ais523: I am just demonstrating the vi philosophy 23:00:30 yes 23:00:35 I personally think the philosophy of filters etc. is a lot nicer than emacs' 23:00:37 I approve of the vi philosophy 23:00:46 and i would use vim if lisp&haskell weren't painful with it 23:00:54 vi and emacs are good for different things 23:01:14 emacs is very good with programming languages, for instance, but less good for conffiles and still less good for formatted text 23:01:43 it's irritating to have to type M-q regularly just to get lines to wrap properly (even with auto-fill-mode turned on) 23:02:21 ais523: i would say that vi is very good for programming languages too 23:02:24 we just need a modern vi 23:02:48 ehird: its main issue (also its main strength, but not in this context) is that vi doesn't know enough about the file it's editing 23:03:14 for instance, python-mode in Emacs can automatically move a line between all the correct possible indentations when you press tab, and tell you what they close 23:03:23 that sort of thing doesn't fit well in vi 23:03:24 ais523: you underestimate modern vim 23:03:29 yes 23:03:37 ais523: but, yes that issue needs some thinking 23:03:37 but IMO making vi more like emacs defeats the point of vi 23:03:58 ais523: indeed 23:04:03 we need a third option 23:04:03 like 23:04:04 vi 23:04:05 ^ 23:04:06 | 23:04:10 ---------> ??? 23:04:11 | 23:04:12 v 23:04:12 emacs 23:04:22 now, obviously linking the top and the bottom won't work 23:04:31 but if you can figure out ???, you can bend them both half-way 23:04:31 * ais523 thought ??? was what you did just before you profited 23:04:35 and maybe come up with something decent 23:04:39 ais523: may be so! ;) 23:04:52 ??? would be a great name for a program 23:05:00 you'd have to type it as \?\?\? in most shells 23:05:07 and you couldn't run it at all in Windows 23:05:15 (because it's an invalid filename in NTFS) 23:05:27 hehehe 23:05:39 I created a file called .url once somehow 23:06:02 $ ??? 23:06:02 /usr/bin/ld: dmd: No such file: File format not recognized 23:06:02 collect2: ld returned 1 exit status 23:06:07 windows wouldn't let me name other files similar things 23:06:28 * ais523 was curious to see what would happen 23:07:05 it seems that the first three-char filename in alphabetical order in my home dir was 'c++' (a directory), and I also had a program c++ on my system 23:07:17 but dmd was also a directory (me experimenting with D), and so c++ couldn't link it 23:08:04 * SimonRC goes (impending NFS downtime) 23:08:04 ais523: better - *** 23:08:09 $ *** 23:08:09 bash: Root.pm: command not found 23:08:13 you get fun error messages! 23:08:29 ah, capital R makes it come first alphabetically 23:08:52 incidentally, I've seen a shell-script used to implement init, which used shell globbing to run all the startup scripts in priority order 23:09:06 because the filenames encode the priority in ASCIIbetical order using numbers 23:09:13 echo "#!/bin/sh\nsudo rm -rf *" > ~ehird/\ \ \ \ \ .sh 23:09:15 * SimonRC goes (impending NFS downtime) 23:09:24 ais523: can you make cpan sane? :/ 23:09:33 like, NOT ask me about every single thing 23:09:34 SimonRC: you forgot to chmod it +x 23:09:42 ehird: I haven't seen how CPAN is implemented 23:09:44 and NOT spew out 9 pages of output that reads like a conversation with a child 23:09:47 but have only had trouble with it myself 23:10:01 (that was the time I tried, and failed, to install Perligata) 23:10:12 'I didn't find X! Ok, now I'm searching for it... found X in: (9 long directories). Initializing package bootup system... continue? [y]' 23:10:21 hah 23:10:24 ==> Auto-install the 67 mandatory module(s) from CPAN? [y] 23:10:28 after a list of 67 modules 23:10:31 with detailed version info 23:10:38 ehird: apt-get does that too 23:10:43 ais523: one per line. 23:10:46 ah 23:10:55 ais523: did i mention it listed all the files in the package i'm installing? 23:10:58 close to 1000 of them 23:11:00 one per line. 23:11:04 including all the tests. 23:11:39 ehird: I wonder if anyone's written a grep program (or sed if grep isn't powerful enough) that filters out all the useless stuff from CPAN? 23:12:28 ais523: I think it's called /dev/null 23:12:47 no, that wouldn't filter out anything 23:12:50 cpan () { yes | cpan $* > /dev/null 2>&1 } 23:13:12 /dev/dotstar might be more useful 23:13:32 but you'd have to create that device somehow 23:13:40 ais523: see my function 23:13:49 also, there should be a mkdev: 23:13:57 mkdev /dev/foo '...' 23:13:58 example: 23:14:11 mkdev /dev/foo perl -e "print 'ima /dev;\n'" 23:14:15 cat /dev/foo => ima /dev 23:14:27 mkdev /dev/rot13 rot13 23:14:37 echo "hi" >/dev/rot13; cat /dev/rot13 => 23:14:38 etc 23:15:25 -!- oklofok has joined. 23:15:47 there might be some way to rig one of those up out of mknod and some custom kernel modules 23:16:02 but I don't feel like trying right now 23:18:51 ais523: acme:: is fun 23:19:02 ehird: seen Acme::Bleach? 23:19:10 it predates Whitespace 23:19:53 my favorite is 'dont' 23:20:09 dont { foo } # foo is never executed 23:20:20 marshmallows: INTERCAL has that feature 23:20:27 ais523: many times 23:20:51 maybe(PROB) { foo } # foo is executed, probability PROB 23:21:00 maybe { foo } # foo is executed, with a random probability 23:21:06 ehird: but that isn't what MAYBE does in INTERCAL! 23:21:10 it should abuse ranges 23:21:15 maybe(1..0) { one out of ten times } 23:21:21 maybe { ... } then picks a random range, of course. ;) 23:21:58 an INTERCAL-named version would be double_oh_seven(PROB) { foo } 23:23:03 although emulating INTERCAL MAYBE would be great 23:23:17 maybe { ... } (store a continuation on a continuation stack, then execute ...) 23:23:29 go_ahead; (pop a continuation from the continuation stack) 23:23:44 ais523: you can apparently do continuations in perl 23:23:47 Jifty does it apparently 23:24:01 go_back; (if the top continuation on the continuation stack is not stale, go back to it except don't execute the maybe and mark it as stale; otherwise pop it) 23:24:18 (popping a continuation discards it) 23:24:22 there's the INTERCAL backtracking model in a nutshell 23:24:40 Could you do Prolog in INTERCAL? 23:24:52 marshmallows: I have a very unfinished Prolog-to-INTERCAL compiler somewhere 23:24:57 I don't see any technical reason why not 23:25:12 INTERCAL has all the features needed to easily implement Prolog 23:26:48 it even has a unification-like feature, but it turns out to be more confusing than useful to try to compile Prolog unification into it 23:27:03 mostly because INTERCAL doesn't support as many data types natively as Prolog does 23:28:00 but also because it isn't properly transitive like Prolog unification is 23:28:25 INTERCAL is crazy..... 23:29:05 marshmallows: really? that's an odd and unique opinion 23:29:23 lol 23:29:23 nobody has ever thought that before :) 23:30:33 many of the Acme:: modules appear to have no documentation 23:30:42 I found this in one of the READMEs: "If this is still here it means the programmer was too lazy to create the readme file." 23:31:25 http://search.cpan.org/~rjbs/Acme-Lingua-EN-Inflect-Modern-0.003/lib/Acme/Lingua/EN/Inflect/Modern.pm 23:31:50 hmm... the readme was added in a later version... I still don't understand, though, while I would need to prevent users accessing my web server on a full moon 23:32:29 ais523: http://search.cpan.org/src/GMCCAR/Acme-ManekiNeko-0.02/ManekiNeko.pm 23:34:10 haha: `use less 'memory';` 23:34:13 http://search.cpan.org/src/ADAMK/Acme-BadExample-1.00/lib/Acme/BadExample.pm 23:35:22 found in a BUGS section: "Any use of this module should be considered a bug." 23:35:37 CPAN Acme:: could have a whole qdb to itself 23:35:39 :) 23:35:40 probably does, for that matter 23:35:42 ais523: haha 23:35:48 ais523: what we need is a qdb-spawning site 23:35:58 you enter a name, click a button, and whooomp a qdb 23:36:12 and it could have All Time Tops For All QDBs 23:36:13 and similar 23:36:21 wow, Acme:: has a lot of esolangs in it 23:36:39 -!- tola has left (?). 23:36:58 ais523: I vow to get BadExample running! 23:37:02 ..sometime 23:37:51 * ais523 still wants to write revcat 23:37:59 a program that detects what's connected to its stdout and stdin 23:38:05 and then copies its /output/ to its /input/ 23:38:29 last I tried, though, I couldn't figure out how to do it 23:38:55 you should be able to do things like revcat < src.txt | revcat | revcat >> dest.txt copies dest.txt to src.txt, as long as src.txt exists 23:40:14 I think someone was trying to talk to me, but whatever it was is past my scroll buffer 23:41:34 RodgerTheGreat: nobody's mentioned your nick in the last 2 days in #esoteric 23:41:46 at least, not while I was here at the time (I checked my personal logs) 23:41:50 hm 23:42:04 checking clog's or cmeme's are likely to produce better results 23:42:16 well, it must've been between 10:30 am today and now 23:43:18 er i mentioned your nick 23:43:25 oh 23:43:43 but only to point out that i thought you were responsible for the recent comic link 23:44:05 oh, the "in progress" shot? 23:44:22 the mad science Apparatus one :) 23:44:44 yes 23:44:58 this http://www.nonlogic.org/dump/images/1205723239-preview.png 23:51:47 ais523: revcat is impossible 23:51:58 ehird: it's possible in some cases 23:52:01 but not all 23:52:11 e.g. yes | revcat | less doesn't make a whole lot of sense 23:52:46 AFAICT it would have to do something clever, and probably OS-dependent, to figure out what was connected to the other end of stdout and stdin 23:55:24 ais523: well, th pipe case is impossible 23:55:27 since shells manage that internally 23:55:42 the most introspection you could do is 'a process is ripping out my insides' 23:56:22 couldn't you get all revcat processes to check the process table to see which processes were other revcats? 23:56:34 and then send test data to see which order they were connected in? 23:56:40 ais523: maybe