←2008-03-16 2008-03-17 2008-03-18→ ↑2008 ↑all
00:28:56 <AnMaster> pikhq, there?
00:29:25 <pikhq> Nope.
00:29:50 <AnMaster> 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 <Deformative> Should I allow "define" ? It opens up room for side effects.
00:33:01 <Deformative> Without "define" side effects are much harder to create.
00:34:14 <Deformative> define == global variable.
00:34:21 <Deformative> I am thinking of only allowing const globals.
00:38:21 <lament> are you writing a scheme?
00:38:45 <Deformative> No.
00:38:56 <Deformative> Just thinking about taking features from scheme.
00:41:36 <lament> in scheme, define is hardly responsible for side effects
00:41:56 <marshmallows> yeah you use set!
00:42:20 <Deformative> But it can be.
00:42:28 <marshmallows> no I don't think so
00:42:34 <Deformative> Without define there is no room for side effects anywhere.
00:42:37 <marshmallows> it's probably not R5RS COMPLIANT
00:42:58 <marshmallows> (let ((x '())) (set! x 3) ....)
00:44:13 <Deformative> (define x 3) (+ x x) (define x 4) (+ x x) The define has a side effect, it causes a different result.
00:46:07 <lament> you don't know what "side effects" mean.
00:46:11 <lament> *means
00:47:17 <Deformative> Equivalent to doing nothing.
00:47:29 <Deformative> Defining alters the environment.
00:48:07 <lament> 16:42 <Deformative> 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 <Deformative> lament: In my language.
00:48:31 <marshmallows> apparently non-termination can be considered an effect
00:48:50 <Deformative> Eh, let me rephrase.
00:49:07 <Deformative> Define cause side effects, so I cannot decide to implement it or not.
00:49:21 <oerjan> the Recursion monad :)
00:49:39 <Deformative> lament: Touche regarding my previous statement.
00:49:58 <oerjan> data Rec a = Now a | Later (Rec a)
00:49:58 <Sgeo> All books are 3 characters. Check syntax and try again
00:50:21 <AnMaster> Sgeo, ?
00:51:31 <pikhq> So, Rec is now or later?
00:51:31 <pikhq> :p
00:52:00 <oerjan> non-termination is then indicated by Later (Later (Later ( ... :)
00:52:16 <SimonRC> have you heard of sturctural recursion
00:52:29 <SimonRC> (or the other thing I can't remember the name of)
00:52:35 <oerjan> codata?
00:52:43 <SimonRC> no
00:52:45 <oerjan> (which is what this Rec should be)
00:52:51 <marshmallows> general recursion
00:52:52 <lament> in scheme, only top-level defines are sideeffecting
00:52:53 <SimonRC> it means you can't call yourself in general, but must use a specific combinator
00:53:04 <marshmallows> eliminators
00:53:08 <marshmallows> folds
00:53:19 <lament> wait, that's not true is it
00:53:19 <SimonRC> e.g. those ^^
00:53:50 <lament> yeah, it's true
00:53:55 <oerjan> lament: i think define is equivalent to set! whenever a define of the same variable is in the same scope
00:54:08 <lament> 1:=> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
00:54:12 <lament> 1:=> (foo)
00:54:12 <lament> 5454#<output_port:stdout>
00:54:15 <SimonRC> 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 <lament> oerjan: no, apparently it's only top-level.
00:54:31 <SimonRC> you can do most stuff, but not (e.g.) Ackermann's
00:54:45 <oerjan> oh?
00:55:05 <lament> i didn't even realize scheme behaved this way. This is most odd.
00:55:09 <marshmallows> define is the same as set! on the top level if the variable is bound
00:55:26 <oerjan> and not otherwise? i see.
00:55:33 <lament> marshmallows: you have to admit my example doesn't output what you expect it to output.
00:56:15 <oerjan> probably to make toplevel interactive mode not require any (less?) special treatment?
00:56:40 <oerjan> since in an interactive interpreter you definitely want to allow redefinitions
00:56:52 <lament> actually that's bigloo
00:56:56 <SimonRC> zzzzzzzzzzzz
00:57:01 <lament> and PLT simply doesn't allow me to execute that statement
00:57:08 <lament> "define: not allowed in an expression context in: (define x 54)"
00:57:13 <oerjan> SimonRC: primitive recursion
00:57:24 <SimonRC> oerjan: yup
00:57:24 <marshmallows> lamet use let instead of begin
00:57:25 <SimonRC> zzzzzzzzzzzz
00:57:36 <lament> sorry?
00:57:52 <marshmallows> maybe that's wrong too
00:57:58 <lament> no, it doesn't matter what you use
00:58:00 <lament> i quote r5rs
00:58:12 <lament> "Definitions may occur at the beginning of a <body> (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression)"
00:58:20 <lament> the key phrase being "at the beginning"
01:00:15 <lament> scheme is annoyingly complicated for being supposedly so simple
01:00:17 <lament> but it's good complexity
01:01:14 <lament> there's a special case for allowing definitions inside a begin when that begin is your first statement
01:01:24 <lament> ie (begin (begin (define x 2)) (display x)) ==> "2"
01:01:40 <lament> so the begins get "folded"
01:03:41 <lament> (begin (begin (define x 1) (display x)) (define x 2) (display x)) ==> "12" ; look, i'm redefining stuff!
01:04:30 <lament> (i don't actually get it, why is that allowed?)
01:07:12 -!- jix has joined.
01:07:34 <lament> ohh
01:08:05 <lament> the begins don't just get folded, they also get folded with the top level
01:08:16 <lament> so the definitions inside a begin on top level are top-level definitions
01:08:21 <lament> and work like set!
01:08:40 <lament> > (begin (define x 1) (display x) (define x 2) (display x))
01:08:41 <lament> 12
01:08:49 <lament> but trying to put that in a function is an error
01:08:54 <lament> because you're no longer on top level
01:09:53 <lament> 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 <Deformative> lament: Heh.
01:43:50 * Sgeo is bored
01:44:08 <Sgeo> 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 <bsmntbombdood> haha, party
02:07:39 -!- sebbu has quit ("@+").
02:37:13 -!- Corun has joined.
02:38:18 <RodgerTheGreat> I feel like doing a random comic. Ideas, anyone?
02:38:55 <oerjan> frogs
02:39:11 <oerjan> dragons
02:39:12 <RodgerTheGreat> ok
02:39:17 <slereah_> Hot dogs.
02:39:17 <slereah_> Umbrellas.
02:39:31 <oerjan> and a haunted castle
02:39:40 <slereah_> Skis.
02:39:40 <slereah_> Party hats.
02:39:40 <slereah_> Chimney sweeps.
02:39:45 <RodgerTheGreat> hm. I'm pondering here
02:39:52 <slereah_> Emmanuel Kant.
02:39:55 <RodgerTheGreat> slereah_: quality over quantity, dude
02:39:59 -!- Corun has left (?).
02:40:10 <slereah_> Well, what's the criteria for random quality?
02:40:54 <oerjan> 10% Nobel prize quality, 10% Plan 9 from outer space. Fill in the intermediates yourself
02:40:55 <RodgerTheGreat> thought provoking, original and interesting.
02:41:16 <RodgerTheGreat> something that sparks my interest and that I can build from.
02:41:29 <oerjan> Mad Science!
02:41:35 <oerjan> that sparks _my_ interest
02:41:55 <oerjan> and it could tie up all the other suggestions
02:42:26 <RodgerTheGreat> hm
02:42:43 <RodgerTheGreat> 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 <oerjan> genetically engineered dragons used as chimney sweepers
02:45:08 <slereah_> INTERNEEEEEEEEEEEEETS >:|
02:46:34 <slereah_> I can already picture them.
02:46:34 <slereah_> Like hairy chinese dragons.
02:57:36 <bsmntbombdood> i love hot dogs
02:57:40 <bsmntbombdood> damn i'm hungry
02:59:19 <slereah_> See RodgerTheGreat? It's a story that just write itself!
02:59:46 -!- calamari has quit ("Leaving").
02:59:55 <RodgerTheGreat> I'm already off and running on some steampunk
02:59:56 -!- calamari has joined.
03:23:11 <Sgeo> '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 <Sgeo> ~http://www.w3.org/TR/html5/
03:23:52 <Sgeo> http://www.w3.org/TR/html5/
03:24:24 <Sgeo> Yes, let's also put in a spec "Conforming programs SHOULD try to make 1+1=3"
03:25:39 <oerjan> that's a strawman: it is probably only impossible for _some_ input documents
04:07:37 <RodgerTheGreat> a small tidbit of things to come: http://www.nonlogic.org/dump/images/1205723239-preview.png
04:10:34 <pikhq> Oooh, steampunk.
04:15:35 <RodgerTheGreat> indeed
04:17:43 <oerjan> Which reminds me, in case any of you haven't noticed, that Casey and Andy has resumed.
04:22:07 <RodgerTheGreat> 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 <pikhq> 1337.
04:35:33 <RodgerTheGreat> 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 <oerjan> continuations are good. i hear delimited ones are even better.
04:37:36 <adu> continuations?
04:38:07 <adu> I recently realized how to implement a tail-call on ppc
04:38:56 <adu> oerjan: whats a delimited continuation?
04:42:41 <marshmallows> better ? :S
04:42:51 <marshmallows> I thought they are equivalent
04:48:07 <oerjan> oh i'm a bit vague on that
04:49:50 <marshmallows> I don't know what to do
04:55:24 <oerjan> 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 <oerjan> and then you can do some kind of manipulation of what happens once you reach that point
04:57:23 <marshmallows> I see
04:57:26 <oerjan> combined with the usual use and even reentering of the continuation
04:59:21 <marshmallows> O_o http://rosettacode.org/wiki/Rot-13#XSLT
05:04:27 <adu> i think we have different ideas about what a continuation is
05:05:03 <marshmallows> what aspect of programming languages should I write about?
05:05:09 <adu> xslt is so lame
05:05:41 <adu> marshmallows: I think you should write about genaric datastructures and how they relate to binding environments
05:05:54 <adu> for example
05:05:58 <marshmallows> I don't know what a genaric datastructure is
05:06:02 <marshmallows> any other ideas?
05:06:19 <adu> a genaric "list of integer" would have only elements that are of type integer
05:06:33 <marshmallows> I can't write about this topic though
05:06:41 <adu> what for? school?
05:06:55 <marshmallows> because I'm bored
05:07:00 <adu> oh
05:07:28 <adu> then write about the most common 101 datatypes used in the industry today
05:07:40 <marshmallows> :[
05:09:49 <adu> i would imagine the top 10 would be (int, string, bool, vector, list, float, hash-table, enum, exception, and possibly queues)
05:10:41 <adu> marshmallows: why are you asking if you don't want my ideas?
05:11:50 <adu> marshmallows: what do you want to write about?
05:11:58 <marshmallows> I can't decide
05:12:48 <adu> then maybe the wisest option is not to write anything
05:13:12 <adu> 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 <SimonRC> RodgerTheGreat: the comic looks good so far
15:16:12 <SimonRC> but the blond guy's hair changes colour
15:16:20 <RodgerTheGreat> everything changes color
15:17:37 <SimonRC> alas using the standard technique of making everything capital letters prevents the full effect of something being called "the Apparatus"
15:17:48 <SimonRC> (i.e. the capital A gets lost)
15:18:52 <RodgerTheGreat> granted
15:19:27 <SimonRC> keep us updated
15:22:21 <RodgerTheGreat> I shall
16:04:30 -!- jix has joined.
16:23:18 -!- oerjan has joined.
16:58:24 -!- Sgeo has joined.
17:06:27 <AnMaster> SimonRC, comic?
17:06:33 <AnMaster> SimonRC, what comic?
17:06:47 <AnMaster> (hm, could you make an esolang of it?)
17:12:10 <oerjan> http://www.nonlogic.org/dump/images/1205723239-preview.png
17:12:37 <oerjan> (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 <ehird> marshmallows = new?
17:26:47 <marshmallows> hi ehird
17:26:47 <ehird> [16:26] [Whois] marshmallows is an operator on channels: #ALGOL
17:26:49 <ehird> well that does it
17:26:51 <ehird> :-)
17:27:03 <ehird> evidently; an agent of evil
17:27:07 <marshmallows> :D
17:28:20 * oerjan has discovered marshmallows's secret, with the help of the mighty Logs
17:28:49 <ehird> data Rec a = Now a | Later (Rec a)
17:28:50 <Sgeo> All books are 3 characters. Check syntax and try again
17:28:52 <ehird> brilliant
17:29:04 <ehird> fix Later
17:29:04 <ehird> :D
17:29:18 <oerjan> indeed o_O
17:30:09 <ehird> lament: your scheme is broken, by the way
17:30:22 <ehird> #;1> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
17:30:22 <ehird> #;2> (foo)
17:30:22 <ehird> 254#;3>
17:30:40 <ehird> bigloo is not a scheme interpreter
17:30:43 <ehird> not a conforming one at least
17:31:17 <ehird> lament: however, remove (begin ...) and replace with ...
17:31:22 <ehird> it's implicit in lambda-bodys
17:31:28 <ehird> and your example becomes standard
17:31:59 <ehird> <RodgerTheGreat>thought provoking, original and interesting.
17:32:01 <ehird> YOUR MOTHER
17:32:08 * ehird kicks self repeatedly as punishment
17:32:30 <oerjan> for what? o_O
17:32:50 <ehird> oerjan: saying that :D
17:32:51 <ehird> <Sgeo>'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 <ehird> that's perfectly reasonable
17:33:02 <ehird> ensuring validity is perfectly fine
17:33:14 <ehird> the only time it would break is pretty much when a deliberately malicious script was there
17:35:38 <ehird> 02:25:51
17:35:38 <ehird> <Deformative>I am trying to decide if I should even implement closures.02:30:50
17:35:38 <ehird> <Deformative>They are so slow.
17:35:47 <ehird> closures are slow, let's go writing micro-optimized languages
17:36:11 <ehird> i mean jeez
17:36:12 <ehird> its an esolang
17:36:13 <ehird> :|
17:36:50 <ehird> Deformative: "comment..."
17:36:54 <ehird> that's what smalltalk does
17:36:58 <ehird> and uses '...' for string
17:36:58 <ehird> s
17:56:46 <marshmallows> I don't know what to do
17:56:55 <marshmallows> should I use haskell or scheme to write a WAM in?
17:57:05 <marshmallows> (or C, or something else?)
17:59:09 <oerjan> Prolog. *ducks*
18:04:51 <lament> ehird: what's bigloo?
18:05:38 <ehird> http://uncyclopedia.org/wiki/An_article_that_contains_nothing_but_a_cut-down_version_of_itself_that_does_not_contain_itself
18:05:43 <ehird> lament: your scheme apparently
18:05:48 <lament> (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 <lament> in general the scheme community is weird in that they hate stuff that's clearly good
18:06:18 <ehird> lament: because it ISN'T a scheme implementation
18:06:29 <ehird> it is broken.
18:06:37 <ehird> so obviously not 'clearly good'
18:06:42 <lament> what do you mean it isn't? they say it's "mostly compliant"
18:06:52 <lament> which is as good as most things
18:07:18 <ehird> lament: the reason your example gets that output is because bigloo is broken.
18:07:22 <ehird> bigloo is also broken in countless other ways.
18:07:27 <ehird> ergo, bigloo is not clearly good
18:09:10 <lament> is gcc broken because it supports single-line comments in C?
18:09:41 <ehird> lament: look, bigloo is broken
18:09:58 <ehird> 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 <lament> how's saying it's broken without justification any better than saying it's clearly good without justification?
18:10:42 <lament> When i said "clearly good", i mostly referred to r6rs, by the way :)
18:10:53 <marshmallows> hahaha
18:10:54 <lament> which is an unrelated issue
18:11:11 <marshmallows> R6RS is great!
18:11:22 <lament> it doesn't even matter if it's great or not so great
18:11:28 <marshmallows> It's like eating mcdonalds everday
18:11:30 <lament> the amount of hate #scheme generates towards it is just unbelievable
18:12:17 <lament> marshmallows: why do you say that?
18:19:46 <marshmallows> I can't produce a rational argument, I simply feel that way
18:19:54 <marshmallows> This is funny though http://www.utdallas.edu/~ramakrishnan/Projects/GC_for_C/index.htm
18:20:00 <ehird> gc for c is not funny...
18:20:08 <ehird> well, that page is
18:20:10 <marshmallows> I need a GC
18:20:15 <ehird> but boehm's gc, for instance, is a good idea for real use
18:20:18 <marshmallows> I don't really want to write one
18:20:21 <ehird> marshmallows: boehm. it is great.
18:20:26 <ehird> well tested, robust, very widely used..
18:20:32 <ehird> just don't fuzz about with pointers too much ;)
18:20:34 <lament> PLEASE DON’T USE THE CONTENTS OF THIS PAGE FOR PLAGIARISM
18:20:34 <marshmallows> It didn't compile for me
18:20:39 <marshmallows> I'll try again
18:21:08 <lament> is that embedded INTERCAL code?
18:21:15 <ehird> /*
18:21:15 <ehird> <<Inclusion of the Header Files used in the project an the reason for their inclusion follows>>
18:21:15 <ehird>
18:21:15 <ehird> */
18:21:21 <ehird> /*
18:21:21 <ehird> 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 <ehird> */
18:21:32 <ehird> also it has excessive whitespace and each stdlib include file is extensively documented
18:21:53 <ehird> FOR EXAMPLE:
18:21:53 <ehird> /*
18:21:54 <ehird> This header file is included inorder to enable us to do string operations
18:21:54 <ehird> */
18:21:54 <ehird> #include <string.h>
18:22:25 <ehird> lament: their malloc printf's when it can't allocate
18:22:27 <ehird> if(gc_ptr == NULL)
18:22:27 <ehird> {
18:22:27 <ehird> /* return NULL */
18:22:27 <ehird> printf("\nYour Request cannot be satisfied even after Garbage Collection \n");
18:22:27 <ehird> return NULL;
18:22:29 <ehird> }
18:22:40 <ehird> and on incorrect calls, prompts the user
18:22:41 <ehird> printf("\nGC_ERROR 1 : The argument for the GC_malloc function should always be positive");
18:22:41 <ehird> printf("\nDo u want to exit or continue without allocation (y/n ) : ");
18:22:41 <ehird> scanf(" %c",&gc_continue);
18:22:52 <lament> haha
18:23:24 <ehird> lament: you could use that for the befunge 'ask on div 0' thing
18:23:24 <ehird> :D
18:59:44 -!- oerjan has quit ("leaving").
19:13:15 -!- ehird`ii has joined.
19:13:28 <ehird`ii> testy
19:13:43 <ehird`ii> echo>foo sending to irc is a weird feeling
19:14:19 <ehird`ii> testy2
19:14:32 <ehird`ii> testy3
19:14:46 <ehird`ii> very amusing little thing.. gotta play with this some more
19:16:11 <ehird`ii> 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 <AnMaster> ehird_, err?
19:56:49 <AnMaster> <ehird`ii> now... how do I quit?\!?
19:56:53 <AnMaster> what were you doing?
20:01:13 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
20:04:01 <AnMaster> Deewiant, there?
20:04:28 <AnMaster> 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 <Sgeo> 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 <ehird_> Sgeo: do you want a medal? :P
20:13:11 <ehird_> hi, ais523
20:13:29 <ehird_> 'You are dreaming. Do a reality check!' <-- no. I am not
20:13:43 <ehird_> I do not use a computer in my dreams, because that would be sad. :D
20:14:04 <ais523> 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 <Sgeo> (Strangely enough, because I'm on the computer ALL THE TIME irl)
20:14:32 <Sgeo> But apparently some people do
20:14:34 <ais523> but I often think about programming whilst trying to fall asleep
20:14:45 <ehird_> i'm heavy in lucid dreams
20:14:46 <Deewiant> 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 <AnMaster> ehird_, what was "<ehird`ii> very amusing little thing.. gotta play with this some more" about?
20:14:59 <ehird_> 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 <ehird_> AnMaster: a file-system based FIFO irc client
20:15:13 <ais523> Deewiant: context?
20:15:17 <ehird_> AnMaster: you cat to 'in' files and tail -f 'out' files
20:15:20 <AnMaster> Deewiant, yes because I just replaced the stack array pointer will a null pointer anyway XD
20:15:22 <ehird_> and it has a directory tree
20:15:27 <ehird_> of server/entity/in,out
20:15:40 <AnMaster> ehird_, link?
20:15:44 <Sgeo> ehird_, coolness
20:15:50 <ais523> does anyone here have code for a very simple IRC client, so that it could be translated into an esolang?
20:15:52 <Deewiant> ais523: running out of memory when pushing a value on the on stack
20:15:58 <Deewiant> er, s/the on/the/
20:15:59 <ehird_> AnMaster: http://www.suckless.org/wiki/tools/irc/irc_it
20:16:04 <ehird_> AnMaster: from the people who brought you wmii&dwm
20:16:10 <AnMaster> ehird_, tried zsh irc? or was it zirc?
20:16:14 <ehird_> ais523: yes, yes i do
20:16:23 <ehird_> http://www.suckless.org/wiki/tools/irc/simple_irc_client
20:16:26 <ehird_> isn't that convenient? ;)
20:16:34 <ehird_> ais523: <250 lines of c
20:16:55 <AnMaster> ehird_, anyway there is an irc client in *pure* zsh, no external commands called
20:17:03 <ehird_> AnMaster: yes i know
20:17:04 <AnMaster> and you can work in your shell at the same time
20:17:05 <ehird_> i told you about it.
20:17:10 <AnMaster> it kind of hooks into the shell
20:17:15 <ehird_> i told you about it.
20:17:32 <ehird_> ais523: be warned, sic isn't very nice to use
20:17:34 <AnMaster> ehird_, nah you didn't, I remember it was someone on #gentoo-amd64 who did
20:17:41 <ehird_> ais523: it's bitchx-style - multiplexes everything into one stream
20:17:42 <ais523> ehird_: I don't care particularly
20:17:44 <ehird_> so you get mixed up channels
20:17:46 <ehird_> etc
20:17:46 <ais523> it's the proof of concept, really
20:18:00 <ais523> and you can always just start two clients for two channels and use them with different nicks
20:18:07 <AnMaster> ais523, what language? befunge?
20:18:14 <ais523> AnMaster: INTERCAL
20:18:14 <ehird_> presumably befunge-98
20:18:17 <AnMaster> ais523, ah
20:18:19 <ehird_> ais523: uhh, intercal has sockets?
20:18:27 <ehird_> you cannot use netcat: you need stdin for user input
20:19:03 <Sgeo> INTERCAL + PSOX has sockets!@
20:19:14 <ais523> because I just found out that CLC-INTERCAL added generalised networking support
20:19:14 <ais523> (previously, networking could only be used to steal data from other INTERCAL programs)
20:19:15 <AnMaster> Sgeo, -_-
20:19:16 <ais523> Sgeo: yes
20:19:20 <ehird_> Sgeo: oh shut up.
20:19:29 <ehird_> especially since the overhead to using psox from intercal would be painful
20:19:34 <ais523> I would have done it like that if it weren't for the networking library already present
20:19:38 <ehird_> (ditto in just about every non-brainfuck language. don't fool yourself :))
20:19:41 <AnMaster> ehird_, oh why would it?
20:19:43 <ais523> and ehird_: you could localise the overhead in a subroutine pretty easily
20:19:51 <ehird_> AnMaster: psox is basically brainfuck-centric.
20:19:57 <ehird_> Sgeo just says it isn't for marketing potential
20:20:16 <ais523> at least in C-INTERCAL; CLC-INTERCAL would be harder because some ASCII characters are easier to produce than others
20:20:19 <AnMaster> ehird_, bf centric? how+
20:20:22 <AnMaster> s/+/?/
20:20:25 <ais523> (because it uses Baudot as its character set)
20:20:26 <ehird_> AnMaster: try and use it, then see :)
20:20:35 <lament> brainfuck-centric sounds boring
20:20:40 <ehird_> ais523: hmm, is C-intercal modular/extensible/foobarbaz?
20:20:45 <ehird_> ais523: I might write a SOCKET foobar.
20:20:49 <Sgeo> 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 <ais523> ehird_: pretty much
20:20:56 <AnMaster> ehird_, a "foobar"?
20:21:03 <ais523> although I'm writing an FFI for it at the moment, which would make it even more extensible
20:21:03 <AnMaster> == intercallish for module?
20:21:12 <ehird_> AnMaster: pretty much :D
20:21:14 <ehird_> ehirdish
20:21:21 <ais523> AnMaster: generally we just use library files which you literally copy into a program's source code
20:21:37 <ais523> they're all kept with the distribution to avoid line number clashes
20:21:42 <ais523> (it's sort of like CPAN, but lower tech)
20:21:53 <AnMaster> ais523, couldn't be done for networking I think? would need some interpreter level support
20:21:59 <Sgeo> There is a loopback mechanism making it usable (but not easily) in languages that take in lines and not individual characters
20:22:03 <ais523> AnMaster: CLC-INTERCAL has that
20:22:26 <ais523> you just need to write a specially crafted line with the line number 666
20:22:35 <AnMaster> err
20:22:38 <AnMaster> wtf
20:22:39 <AnMaster> ?!
20:22:49 <ehird_> AnMaster: it's INTERCAL, what did you expect
20:22:50 <ais523> 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 <AnMaster> ehird_, not that -_-
20:23:07 <ehird_> ais523: I just realised we've exausted all possible Unlambda/Underload/Overload/etc names
20:23:09 <ehird_> Oh wait
20:23:10 <ehird_> Overlambda
20:23:12 <ehird_> that's what's left
20:23:16 -!- olsner has joined.
20:23:26 <AnMaster> ehird_, sidewayslambda?
20:23:30 <ehird_> ais523: I guess overlambda would be a 15-tier system
20:23:36 <ehird_> ais523: with things like an ffi at the very bottom
20:23:38 <Sgeo> Underlambda exists?
20:23:43 <ais523> ehird_: Underlambda is just a cross between Unlambda/Underload
20:23:44 <AnMaster> ais523, did you say line number reserved for compiler, errrrrrrrr?
20:23:45 <ehird_> Sgeo: ais523's new language
20:23:45 <ais523> Sgeo: yes
20:23:49 <ais523> I'm working on the spec at the moment
20:23:52 <ehird_> so that tier-1 is a glorified ffi with tcness
20:23:56 <ais523> AnMaster: lines 1000-1999 are for the syslib
20:24:02 <ehird_> :D
20:24:09 <AnMaster> ais523, so your program must be shorter than 1000 lines?
20:24:13 <ehird_> AnMaster: no
20:24:16 <ehird_> AnMaster: you can use 2000-..
20:24:18 <ais523> AnMaster: no, 2000-65535 are fine
20:24:25 <AnMaster> so a LOT of whitespace lines?
20:24:25 <ais523> and not every line needs a number anyway
20:24:32 <ehird_> AnMaster: no
20:24:35 <ais523> AnMaster: your line numbers needn't be in order
20:24:36 <ehird_> just do '2000 foo'
20:24:38 <ais523> or contiguous
20:24:41 <ais523> ehird_: (2000) foo
20:24:43 <ehird_> err
20:24:44 <ehird_> yes
20:24:45 <ehird_> whatever
20:24:45 <AnMaster> oh line as in 10 PRINT HELLO GOTO 10
20:24:45 <ehird_> :D
20:24:45 <AnMaster> ?
20:24:57 <ais523> AnMaster: like that
20:25:02 <ais523> but the numbers needn't be in order
20:25:04 <ehird_> ais523: hmm, is there a C-INTERCAL grammar that isn't yacc/lex anywhere?
20:25:06 <ehird_> like, a spec for it
20:25:09 <slereah__> *PRINT LOOK AROUND YOU
20:25:22 <ais523> ehird_: you can deduce it from the C-INTERCAL manual
20:25:29 <ais523> or there's an IACC grammar in CLC-INTERCAL
20:25:43 <ehird_> 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 <ais523> ehird_: not hard
20:25:51 <ehird_> that would be syntax-highlighting sorted
20:26:31 <ais523> ehird_: I'd planned that sort of thing already
20:26:43 <ais523> you should see the grammar, though, it takes lexical tie-ins to a whole new level
20:26:52 <ehird_> ais523: maybe it should dump it as an INTERCAL program which constructs the data structure
20:26:53 <ehird_> :D
20:27:14 <ais523> ehird_: you say such things in jest. Have you ever looked at CLC-INTERCAL?
20:27:18 <ais523> it's full of that sort of thing
20:27:55 <ais523> C-INTERCAL compiles to a non-esolang, therefore has to be saner
20:27:55 <ehird_> ais523: whoaa, wait
20:27:58 <ehird_> http://www-cs-faculty.stanford.edu/~knuth/programs/tpk.i
20:28:01 <ehird_> that gives me an ideaaaaaa
20:28:02 <ais523> but CLC-INTERCAL compiles to custom bytecode
20:28:06 <ehird_> an ideaaaaaaaaaaaaa
20:28:10 <ehird_> TAOCP in INTERCAL.
20:28:16 <ehird_> There's already one in redcode, so..
20:28:18 <ais523> TAOCP?
20:28:31 <AnMaster> what is TAOCP?
20:28:37 <ehird_> ..
20:28:45 <ehird_> Knuth you people!!!
20:28:49 <AnMaster> ?
20:28:58 <ehird_> The Art of Computer Programming!
20:28:58 <ais523> I've bacronymed it into "The Art Of Computer Programming", but am not sure whether I am right
20:29:14 <ehird_> You know, Knuth's '70-Aleph0 work
20:29:18 <AnMaster> ehird_, well since it is kuth, why not do TeX in intercal?
20:29:22 <ehird_> the origin of tex/
20:29:22 <ehird_> ?
20:29:27 <ehird_> AnMaster: ehh, taocp is in blocks
20:29:31 <ehird_> you can translate one algo at a time
20:29:34 <ehird_> but tex.. sheesh
20:29:37 <ehird_> http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web <-- tex82
20:29:40 <ehird_> hideous :D
20:29:47 <AnMaster> ehird_, I mean a tex processor/interpreter/whatever in intercal
20:29:48 <ehird_> & is actually in an HTML document
20:29:49 <ehird_> which is hilarious
20:29:54 <ehird_> AnMaster: hideously complex.
20:30:07 <AnMaster> ehird_, yes both are
20:30:14 <ais523> ehird_: INTERCAL-72 acts block-structured and imperative, because all languages were back then
20:30:22 <ais523> so it's not too hard to translate that sort of code
20:30:31 <ais523> luckily, CLC-INTERCAL sorted out the problem by banning NEXT
20:30:35 <ehird_> AnMaster: um no..
20:30:41 <ais523> and even in C-INTERCAL I consider using it for subroutines to be bad form
20:30:46 <ehird_> AnMaster: you can do TAOCP one at a time
20:30:46 <ehird_> sheehs
20:30:50 <AnMaster> ehird_, err?
20:31:07 <ehird_> AnMaster: http://impomatic.blogspot.com/
20:31:10 <ehird_> that'st he redcode one
20:31:20 <AnMaster> ehird_, I just said coding a a program in intercal that can process TeX
20:31:28 <AnMaster> and produce, say, *.dvi
20:31:56 <ehird_> AnMaster: do you know how complex tex is?
20:32:00 <ehird_> and how quite primitive intercal is?
20:32:02 <AnMaster> ehird_, rather complex yes
20:32:04 <ehird_> well, it has loads of stuff
20:32:04 <AnMaster> I know that
20:32:07 <ais523> ehird_: INTERCAL isn't primitive
20:32:09 <AnMaster> that was why I suggested it
20:32:11 <ehird_> ais523: I meant it like..
20:32:17 <ais523> it just looks that way from a read through the INTERCAL-72 manual
20:32:17 <ehird_> primitive as in very repetitive
20:32:20 <ehird_> to do even basic stuff
20:32:23 <ais523> read a more modern manual, you'll get the hang of it
20:32:30 <ehird_> since although it has many instructions, they do not do much useful
20:32:49 <ehird_> AnMaster: 'implement tex' is like saying 'implement c'
20:32:55 <ehird_> except a little less horrific
20:32:56 <AnMaster> err that http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web, got weird stuff in it
20:32:59 <AnMaster> while p≠null do
20:33:02 <AnMaster> wtf?
20:33:04 <ehird_> AnMaster: it's html...
20:33:08 <AnMaster> "pâ‰"?!
20:33:09 <ehird_> save it as .html
20:33:10 <ehird_> then ctrl-a
20:33:16 <ehird_> and copy it into a .web file
20:33:21 <ais523> have you not seen a backtracking, or multithreaded, or class-oriented, or overloading and enslaving-using INTERCAL program?
20:33:25 <AnMaster> uhu
20:33:25 <ais523> or are you stuck in 1972?
20:33:36 <ehird_> ais523: i'm trying to say that the basic operations like text transforming
20:33:37 <AnMaster> ais523, "enslaving-using"?
20:33:38 <ehird_> are very tedious
20:33:45 <ais523> AnMaster: like pointers, but in reverse
20:34:01 <ais523> it's a CLC-INTERCAL concept that's kind of hard to explain and that I don't understand properly
20:34:02 <AnMaster> in reverse... not sure I get what you mean?
20:34:10 <ais523> AnMaster: neither do I
20:34:22 <ehird_> AnMaster: anyway, those chars are things like ≠
20:34:27 <ehird_> (=/= if you can't see it)
20:34:28 <AnMaster> ais523, so what are they, you maintain a intercal implementation right?
20:34:31 <ehird_> so save as html!
20:34:34 <ais523> AnMaster: I don't implement them
20:34:38 <AnMaster> ehird_, I got utf8 here
20:34:43 <AnMaster> ais523, ah
20:34:50 <ehird_> AnMaster: save tex.web as an html document damnit
20:34:50 <AnMaster> so CLC does?
20:34:54 <ais523> AnMaster: yes
20:35:09 <ais523> it's the only INTERCAL implementation I know that actually handles the type system properly
20:35:24 <AnMaster> ehird_, isn't it rather silly that it is on the internet as text/plain
20:35:34 <ais523> 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 <lament> tex.web proves that you can write good software with any tools
20:36:50 <ehird_> AnMaster: knuth's webserver is bugged, so what
20:37:05 <AnMaster> heh
20:37:13 <ehird_> 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 <ehird_> http://www.classnamer.com/
20:37:41 <marshmallows> what's tex.web?
20:37:48 <ais523> they use text/css, which in all commonly-used browsers does what text/plain ought to do
20:37:53 <lament> marshmallows: http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web
20:37:55 <ehird_> marshmallows: source to tex, circa 82
20:38:01 <ehird_> lament: no, that's more recent
20:38:09 <lament> it's still tex.web
20:38:09 <marshmallows> why is it in an HTML file?
20:38:15 <lament> 3.141592
20:38:19 <marshmallows> lament: Yeah someone linked it a while ago
20:38:22 <lament> because WEB is a literate programming system
20:38:25 <ehird_> marshmallows: who cares
20:38:28 <ehird_> lament: no, it's in a <pre>
20:38:31 <ehird_> anyway
20:38:33 <ehird_> THE REAL REASON
20:38:38 <ehird_> is that knuth wanted to put tex.web on his website
20:38:38 <marshmallows> ehird: me since I have NFI what it is
20:38:42 <ehird_> so he wrote an html document wrapping it
20:38:45 <ehird_> and uploaded it
20:38:49 <ais523> lament: with an extra ! at the start of the program, TECO becomes a literate programming language
20:38:49 <ehird_> but he uploaded as tex.web
20:38:50 <marshmallows> ok
20:38:55 <ehird_> and his webserver serves not-.html as text/plain
20:39:09 <ehird_> marshmallows: it's Knuth's TeX typesetting system, as it was in 1982
20:39:15 <lament> ais523: i'm not sure why i would be interested in TECO :)
20:39:27 <ais523> lament: it's a classic esolang
20:39:29 <ehird_> ais523: I want to learn teco. :(
20:39:34 <ais523> although it wasn't intended as such originally
20:39:45 <ais523> IMO it's up there with BancSTAR
20:39:50 <lament> i don't think things like that qualify as esolangs
20:40:08 <ehird_> hmm
20:40:10 <ais523> BancSTAR is clearly an esolang, despite the fact that it was intended as a serious language
20:40:13 <lament> its code looks like noise
20:40:17 <ehird_> I want a language that is pure-literate
20:40:18 <lament> but so does binary code
20:40:18 <ais523> it's like Network Headache
20:40:27 <ais523> lament: TECO is binary, more or less
20:40:31 <ehird_> hmm
20:40:34 <ehird_> what about nested literate
20:40:36 <ais523> all the characters in the character set, including the control codes, have meanings
20:40:38 <lament> ais523: right. that doesn't make it an esolang.
20:40:42 <ehird_> comment<code<comment<code>>>
20:40:49 <ehird_> no wait
20:40:51 <ehird_> reverse that
20:40:53 <lament> ais523: it's not being unreadable that makes something an esolang
20:40:54 <ais523> ehird_: TECO isn't !comment!code!comment!code!
20:40:56 <ehird_> comment>code>comment>code<<<
20:41:07 <ehird_> so like this:
20:41:07 <ais523> but it amounts to that because the chances of the bits between the !s having any meaning is very low
20:41:17 <ehird_> This procedure does X, then does Y:
20:41:33 <ehird_> >X{y:int >our temp var< ...}$<
20:41:34 <ehird_> :D
20:45:53 -!- tola has joined.
20:49:34 <ehird_> ais523: perl global variable initialized to false
20:49:35 <ehird_> quick!
20:49:36 <ehird_> :D
20:49:38 <ehird_> no wait
20:49:44 <ehird_> initalized to true
20:50:09 <ais523> ehird_: $]
20:50:18 <ais523> it's the version number, which is not false, and therefore true
20:50:26 <ehird_> ais523: wow
20:50:27 <ehird_> :D
20:50:40 <ais523> unless you happen to be using Perl version 0, which doesn't exist
20:51:17 <ehird_> ais523: multiple statements in one expression?
20:51:27 <ais523> do{statement;statement;}
20:51:33 <ais523> the last statement gives the value of the expression
20:51:53 <ais523> oh, and those braces don't count as braces for any purpose but for delimiting the do
20:52:02 <ais523> they can't be redo'ne, for instance
20:52:09 <ais523> but you can put a real pair of braces inside them if you like
20:53:22 <ehird_> ais523: (??{$foo})
20:53:23 <ehird_> right
20:53:24 <ehird_> ?
20:53:28 <ais523> yes
20:54:09 * slereah__ received this : http://membres.lycos.fr/bewulf/Russell/Ada2.jpg
20:54:10 <slereah__> :D
20:55:04 <ehird_> ais523: http://pastebin.ca/946562 this would be the ugliest perl ever if it actually worked
20:55:18 <ais523> ehird_: you've never seen ugly Perl, obviously
20:55:51 <ais523> uh... you can't /assign/ to the version number
20:55:53 * SimonRC likes classnamer.com
20:56:30 <ais523> if you never use <> again, you could instead use $/ as a default-true global
20:56:35 <ais523> (the line separator)
20:56:40 <SimonRC> "RecursiveLolcatMonitor" hehehe
20:56:47 <ais523> I /think/ newline is true
20:57:14 <ais523> no, newline is apparently false
20:57:16 <ehird_> ais523: i have to escape $/ in a regexp obviously
20:58:02 <ais523> OK, then use $. which is the number of times you've called <> so far
20:58:11 <ais523> it'll be 1 by that point in the program, and you're allowed to assign to it
20:58:38 <ehird_> ais523: wtf use does that var have
20:58:54 <ais523> ehird_: writing line numbers in the margin of documents
20:58:58 <ais523> and translating sed into perl
20:59:04 <ehird_> ais523: here is my error
20:59:07 <ehird_> Bareword found where operator expected at lit.pl line 4, near "s/[^@]*/print $.?"$0":"<PRE>$0</PRE"
20:59:10 <SimonRC> there are no Visitors, Listeners, Iterators, etc though :-(
20:59:19 <ais523> ehird_: the bareword is PRE
20:59:23 <ehird_> ais523: oh wtf
20:59:26 <ais523> because you forgot to escape the / in </PRE>
20:59:40 <ais523> be kind on yourself and use a different delimiter than / for the regexp
20:59:40 <ehird_> ais523: and $0 isn't interpolated, damn
20:59:43 <ehird_> :(
20:59:55 <ais523> you can write s%[^@]*%print... for instance
21:00:01 <ais523> what did you expect $0 to be?
21:00:09 <ehird_> ais523: whole-match
21:00:11 <ais523> $&
21:01:16 <ehird_> E>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>
21:01:18 <ehird_> that's what it does now
21:01:18 <ehird_> :D
21:01:25 <ehird_> s%[^@]*%print $.?$&:"<PRE>$&</PRE>";$.=!$.%e and redo;
21:03:37 <ais523> ehird_: isn't that what it's meant to do?
21:03:53 <ehird_> ais523: um..no
21:03:56 <ehird_> it's meant to return the whole match
21:04:09 <ais523> oh, it's because s%%e will insert the result of the expression into the original string
21:04:20 <ehird_> okay.. :p
21:04:28 <ais523> put ;"" at the end of the expression
21:04:33 <ais523> so you have no replacement
21:04:39 <ehird_> E><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><P
21:04:58 <ehird_> so $& is broken
21:05:09 <ehird_> $& is my replacement, somehow..
21:05:47 <ehird_> ais523: in s/foo/.../, performed on 'foo', group 0 = 'foo'
21:06:30 <ais523> that should be $&
21:06:36 <ais523> although I can't remember when it's assigned to
21:06:44 <ais523> just do things the easy way, using parens and $1
21:06:58 <ais523> $& is really inefficient, anyway
21:07:15 <ais523> it slows down all the regexps in your program if you even mention it once
21:07:24 <ehird_> still does the same thing oddly
21:07:38 <ais523> ehird_: you're using * not +
21:07:41 <ais523> so you can make a zero match
21:07:45 <ais523> and you don't mean that
21:07:58 <ehird_> <HTML><TITLE>Literate program</TITLE><PRE>helloworldabcdef
21:07:58 <ehird_> </PRE></HTML>
21:08:05 <ais523> or you'll keep matching no chars at the start of the string...
21:08:08 <ehird_> my /e is broken
21:08:09 <ehird_> :D
21:08:48 <ehird_> hm
21:08:52 <ehird_> it now infiniloops
21:09:14 <ehird_> ahh i see
21:10:05 <ehird_> ais523: really, i just want to eval some code when i see some stuff
21:10:09 <ehird_> then remove that stuff from the document
21:10:24 <ais523> use /eg, rather than looping
21:10:40 <ais523> then you don't start from the start every time
21:10:51 <ehird_> ais523: but then my @ replacement doesn't work
21:11:06 <ehird_> since the rules have to be done one after another, in a 'try this, or this, or this' fashion
21:11:14 <ehird_> then advance how much it consumed
21:11:59 <ais523> ehird_: you aren't replacing the @s
21:12:05 <ais523> just the characters between them
21:12:14 <ehird_> s/@/$.=!$.;""/e and redo;
21:12:18 <ehird_> QED
21:12:56 <ehird_> hmm
21:12:59 <ehird_> I want ^@
21:13:10 <ehird_> but then i get
21:13:11 <ehird_> <HTML><TITLE>Literate program</TITLE>helloworldabcdef
21:13:11 <ehird_> </HTML>
21:15:25 <ehird_> ais523: !$. == $.
21:15:29 <ehird_> or: $. == 0
21:15:32 <ehird_> then !$. == 0
21:16:06 <ehird_> or rather
21:16:11 <ehird_> my $.=!$. in my replacement doesn't work
21:16:38 <ais523> 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 <ehird_> ais523: http://collabedit.com/display?id=ae50449cf0ae8339cc7a28cf546ff29c cute. i'm going to put my code here as an experiment
21:18:33 <ais523> ehird_: I'm too busy with other things right now to help, really
21:18:42 <ais523> if you ask again on Thursday I'll be a lot freer
21:27:17 <ehird_> "Object-oriented programming is an exceptionally bad idea which could only have originated in California." -Djikstra, apparently
21:29:07 <marshmallows> I'm not sure that objects have failed
21:30:34 <AnMaster> Deewiant, should the interpreter abort() on any out of memory conditions or just on stack one?
21:31:23 <Deewiant> AnMaster: I think you'll find that your interpreter will abort() by itself if it runs out of memory ;-)
21:31:27 <AnMaster> 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 <Deewiant> AnMaster: for { and } it should be r
21:31:33 <Deewiant> yeh
21:31:53 <AnMaster> Deewiant, I tried with ulimit -v, it didn't abort, it caused GC to print lots of warnings
21:31:57 <AnMaster> and errors
21:32:01 <AnMaster> but it didn't abort
21:32:33 <Deewiant> right, C doesn't have exceptions. :-P
21:32:41 <AnMaster> Deewiant, ok point taken
21:32:53 <AnMaster> I forgot to check some return values of mallocs for NULL indeed
21:34:32 <ehird_> AnMaster: linux will kill a process -- any process -- if it runs out of memory
21:34:41 <ehird_> write a 4-line malloc wrapper that abort()s on NULL.
21:34:42 <AnMaster> ehird_, yes I know that
21:34:44 <ehird_> use it everywhere.
21:34:55 <AnMaster> ehird_, well that slows things down ;P *runs*
21:36:02 <AnMaster> ehird_, and I would need one for calloc, and one for GC_MALLOC_ATOMIC and so on
21:36:04 <AnMaster> realloc too
21:38:21 <AnMaster> I dumped a trace from mycology, one instruction for each line:
21:38:23 <AnMaster> $ wc -l trace.txt
21:38:23 <AnMaster> 125363 trace.txt
21:38:51 <AnMaster> processing 125363 befunge instructions in 0.08 second, amazing what modern computers can do really
21:39:46 <AnMaster> and most of that is IO reading file in
21:40:08 <ehird_> AnMaster: never use calloc()
21:40:13 <ehird_> calloc is a sign of lazy programming
21:40:14 -!- mib_ko3mgv8a has joined.
21:40:18 <ehird_> plus, it's slow, which matters to you so much
21:40:31 <AnMaster> ehird_, hm? slower than malloc + memset to fill with 0 after?
21:40:46 <ehird_> AnMaster: that in itself is pretty slow
21:40:59 <AnMaster> ehird_, needed that in that place hrrm
21:41:12 * AnMaster rewrites
21:41:13 <ehird_> AnMaster: fix that place
21:41:14 <ehird_> :D
21:41:48 <AnMaster> anyway my tests shows than around 0.06 seconds = loading file, the rest two = run program
21:42:02 <AnMaster> most time is spent in hash code in both cases
21:42:17 <AnMaster> as funge-space = hash table
21:42:17 <SimonRC> huh? hashing?
21:42:20 <SimonRC> ah, ok
21:42:30 <Deewiant> what's wrong with calloc?
21:42:55 <SimonRC> well, for a start, funge-space must be initialised to 0
21:43:08 <Deewiant> actually, to ' ', i.e. 32.
21:43:17 <AnMaster> 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 <ehird_> SimonRC: you can't initialize ALL Of fungespace.
21:43:20 <SimonRC> um, yes, that was what I meant
21:43:29 <ehird_> SimonRC: you just use a default value on a hash table
21:43:35 <SimonRC> yes
21:43:37 <AnMaster> SimonRC, of course it isn't, default value == ' '
21:43:47 <ehird_> we need a UniFunge
21:43:49 <ehird_> :D
21:43:51 <AnMaster> so if no cell exist it returns space
21:43:57 <SimonRC> there is a Unefunge already
21:43:58 <ehird_> it's like befunge, but abusing tons of unicode
21:43:59 <AnMaster> ehird_, unefunge does exist
21:44:03 <ehird_> SimonRC: unifunge, dmanit
21:44:04 <SimonRC> ah, unicode
21:44:06 <AnMaster> ah
21:44:06 <SimonRC> outch
21:44:08 <AnMaster> ouch
21:44:23 <SimonRC> well, there is ping-pong
21:44:38 <AnMaster> I wonder why just 6 MHz :/
21:44:42 <AnMaster> or so
21:45:14 <SimonRC> well, you are obviously using a few hundred real instructions for each virtual one
21:45:16 <AnMaster> still pretty fast compared to bashfunge that was at most in the khz range
21:45:17 <AnMaster> :D
21:46:12 <ehird_> AnMaster: write an asmfunge
21:46:15 <ehird_> :D
21:46:22 <AnMaster> ehird_, forget that!
21:46:35 <SimonRC> (ping-pong has a custom charset)
21:46:50 <AnMaster> actually a faster hash library would help
21:46:56 <AnMaster> I used gprof
21:47:05 <AnMaster> most time is spent in searching hash table
21:47:41 <ehird_> AnMaster: you are using a perfect hash table, right?
21:47:42 <ehird_> :|
21:48:18 <AnMaster> 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 <AnMaster> probably far from best
21:48:25 <ehird_> AnMaster: xD
21:48:28 <ehird_> you have a finite set of keys.
21:48:32 <ehird_> ergo: http://www.gnu.org/software/gperf/
21:48:39 <SimonRC> a known set of keys, too
21:48:50 <ehird_> SimonRC: exactly
21:49:02 -!- ehird_ has changed nick to ehird.
21:49:21 <AnMaster> ehird, anyway I don't know what my hash will contain, it could be any befunge program
21:49:22 <AnMaster> :/
21:49:34 <ehird> AnMaster: you should learn about hash tables..
21:49:40 <ehird> 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 <AnMaster> ehird, yes I should learn about them
21:50:00 <ehird> AnMaster: basically:
21:50:10 <AnMaster> ehird, keys will be structs like { .x = ..., .y = ... }
21:50:11 <ehird> if you have a finite set of keys and you know exactly what keys are possible,
21:50:13 <AnMaster> at least they are now
21:50:16 <ehird> ...
21:50:29 <ehird> SimonRC: Please tell AnMaster his fungespace has a warped, terrible design.
21:50:37 <AnMaster> ehird, it probably hash
21:50:39 <AnMaster> has*
21:50:40 <AnMaster> I agree
21:50:51 <AnMaster> ehird, but I got an abstraction so easy to change
21:50:55 <ehird> 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 <ehird> you might have to throw out your abstraction for efficiency
21:51:28 <SimonRC> hmm
21:52:01 <AnMaster> ehird, hm it is just a case of get/set functions and load file and wrap
21:52:28 <SimonRC> actually the most efficient representation for funge-space is a hard problem
21:52:45 <AnMaster> SimonRC, well it is a 2D array that need to be sparse
21:52:52 <SimonRC> yes, i know
21:53:05 <AnMaster> oh and negative values are valid
21:53:10 <AnMaster> like say, -4,-6
21:53:11 <SimonRC> often the middle is very dense, so an array would be good
21:53:14 <AnMaster> totally valid
21:53:58 <SimonRC> 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 <AnMaster> SimonRC, indeed
21:54:21 <SimonRC> some kind of trie would suck for the common case...
21:54:27 <AnMaster> SimonRC, valid ranges here are, depending on compile time options, either int32_t or int64_t
21:54:40 <AnMaster> for both x and y
21:54:49 <SimonRC> and you will want to exploit high code locality
21:54:50 <ehird> hmm
21:54:56 <ehird> 'mv *.pl *.py' should work :(
21:55:00 <ehird> clever *-globbing.
21:55:06 <ehird> as replacement
21:55:09 <SimonRC> ehird: how would that work?
21:55:14 <ehird> SimonRC: move all .pl to .py
21:55:22 <SimonRC> there is usually a "rename" utility
21:55:23 <AnMaster> ehird, it would need to be integrated into the shell
21:55:23 <ehird> SimonRC: the * is taken as the 'common part'
21:55:32 <SimonRC> AnMaster: yup
21:55:32 <ehird> AnMaster: not if the shell was clever with * globbing
21:55:43 <ehird> if you consider * to be a special variable-alike
21:55:48 <SimonRC> ehird: um, then the shell would need to know about cp
21:55:51 <ehird> SimonRC: no
21:55:53 <marshmallows> autoload zmv
21:55:54 <AnMaster> ehird, try rename like SimonRC said
21:56:01 <AnMaster> marshmallows, zsher?
21:56:10 <ehird> SimonRC: it would work for 'foo *.pl *.py'
21:56:14 <ehird> it would just redefine what * means
21:56:23 <AnMaster> ehird, why not write such a shell?
21:56:39 <ehird> AnMaster: lazy
21:56:42 <AnMaster> ehird, also how would it call it? call the function x times?
21:56:48 <AnMaster> or program or whatever
21:56:54 <ehird> AnMaster: not sure yet
21:56:55 <AnMaster> use the right tool for the job
21:56:55 <ehird> :D
21:56:56 <AnMaster> man rename
21:57:14 <AnMaster> ehird, or just a simple loop
21:57:19 <ehird> 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 <ehird> :|
21:57:30 <SimonRC> ehird: no he isn't
21:57:36 <AnMaster> for file in *.pl; do mv "$file" "$(basename "$file" .pl).py"; done
21:57:39 <AnMaster> NOT TESTED
21:57:49 <AnMaster> so don't complain if that does the wrong thing
21:57:57 <AnMaster> you could get rid of basename calll
21:57:58 <AnMaster> call*
21:58:06 <AnMaster> using parameter expansion iirc
21:58:22 <AnMaster> left as an exercise to the reader ;P
21:58:47 <marshmallows> ls >>= mv `ap` (s/*pl/*py/)
21:58:49 <marshmallows> lol
21:59:00 <AnMaster> marshmallows, is that zsh?
21:59:04 <marshmallows> no
21:59:10 <AnMaster> marshmallows, what shell?
21:59:16 <marshmallows> none
21:59:22 <AnMaster> oh what is it then?
21:59:30 <ehird> AnMaster: that's haskell with the right functions
21:59:35 <ehird> hmm
21:59:40 <ehird> list-monad + IO i think
21:59:47 <ehird> and... s/// :P
22:00:46 <marshmallows> perl has lots of good quoting .. I wish more langs had
22:02:05 <marshmallows> you can add regex functions to any language, but you have to use strings :/
22:06:09 <AnMaster> 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 <ehird> AnMaster: your data set is (x,y)..
22:06:36 <ehird> 0,0
22:06:37 <ehird> 0,1
22:06:40 <AnMaster> yes
22:06:41 <ehird> etc
22:06:41 <AnMaster> true
22:06:46 <AnMaster> ehird, and negative values
22:06:50 <ehird> AnMaster: yes yes whatever
22:06:50 <ehird> :)
22:07:02 <ehird> AnMaster: Just use gperf for each data range you offer (32 and 64)
22:07:10 <ehird> and use one or the other hash depending on the choice
22:07:15 <AnMaster> hm
22:16:14 <AnMaster> 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 <AnMaster> ie, -2^31 to 2^31
22:16:33 <AnMaster> or whatever
22:17:13 <AnMaster> I don't have disk space for a file with 2 * 2^64 lines
22:19:57 <SimonRC> hmm
22:20:02 <SimonRC> you could jit stuff
22:20:17 <SimonRC> initially, interpret
22:20:45 <SimonRC> 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 <AnMaster> SimonRC, good idea, but considering mycology, most sections aren't executed several times
22:22:55 <SimonRC> well there will be little speed penalty
22:23:23 <AnMaster> SimonRC, JIT would mean compile to machine code?
22:23:29 <SimonRC> yes
22:23:32 <AnMaster> you know that fails on lots of OS
22:23:38 <AnMaster> like openbsd that I'm on atm
22:23:40 <ais523> <ehird> 'mv *.pl *.py' should work :(
22:23:42 <SimonRC> well the JVM manages it
22:23:53 <ais523> ehird: 'ren *.pl *.py' does work in DOS
22:23:58 <ais523> and does what you wanted
22:24:03 <ais523> because the shell does no globbing at all
22:24:06 <AnMaster> SimonRC, memory pages are either writable or executable but not both
22:24:17 <SimonRC> that is because DOS relies on the program to do globbing
22:24:23 <AnMaster> SimonRC, important security feature of modern systems
22:24:34 <SimonRC> AnMaster: so how to JVMs do JITting?
22:24:42 <ais523> AnMaster: but self-modifying code is often useful!
22:24:58 <AnMaster> SimonRC, they mark themself as needing writable stack/whatever
22:25:06 <AnMaster> err executable and writable
22:25:13 <AnMaster> however it is complex to do that
22:25:15 <AnMaster> iirc
22:25:47 <AnMaster> SimonRC, also compile to machine code, well what arch
22:25:55 <AnMaster> x86? x86_64? ppc? ppc64?
22:26:00 <SimonRC> whatever is supported
22:26:07 <AnMaster> I want portable code, and I use all of those arches myself
22:26:15 <AnMaster> note that I'm not good at asm either
22:26:28 <ais523> AnMaster: then just use a portable asm
22:26:34 <SimonRC> wait, you want me to do something 1000 JMV and .NET engineers can't and produce a protable JITter?
22:26:35 <ais523> like C--, or an OISC
22:26:37 <AnMaster> ais523, eh?
22:26:52 <ais523> (C-- would be the 'serious' choice)
22:27:09 <AnMaster> ais523, that would mean a compiler at runtime?
22:27:12 <ais523> AnMaster: no
22:27:19 <AnMaster> unless I misunderstood C--
22:27:23 <ais523> it just assembles into a range of different architectures
22:27:23 <AnMaster> got a link for C--?
22:27:26 <ais523> it's a programming language
22:27:38 <AnMaster> ais523, right, but how would that work for JIT?
22:27:42 <SimonRC> indeed
22:27:57 <SimonRC> how to compile code not at runtime when the code is written at runtime?
22:28:04 <ais523> http://www.cminusminus.org/
22:28:12 <ais523> hmm... for JIT you'd probably have to precompile some example asm
22:28:26 <ais523> and then use the results of that as your asm for the target system
22:28:40 <AnMaster> -_-
22:30:34 <AnMaster> "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 <AnMaster> heh
22:30:41 <AnMaster> m$...
22:31:47 <ais523> AnMaster: they probably need a portable asm for some reason
22:32:00 <ais523> C-- is used by ghc as well, according to Wikipedia
22:32:20 <AnMaster> anyway it doesn't make sense for a JIT as far as I can see
22:32:31 <ehird> back
22:32:32 <ehird> who said something
22:33:05 <ais523> ehird: me, AnMaster, SimonRC
22:34:26 <ehird> AnMaster:
22:34:33 <AnMaster> ehird, yes?
22:34:37 <ehird> 'M$' is pretty immature
22:34:48 <AnMaster> yes they are
22:34:50 * AnMaster runs
22:34:54 <ehird> AnMaster: simon peyter jones -- Haskeller and one of the founders of GHC, the main haskell compiler -- is on MS research
22:34:58 <ehird> and also made c--
22:35:11 -!- oerjan has joined.
22:35:18 <ais523> ehird: that would explain why ghc uses C-- and Microsoft funds it
22:35:22 <ehird> yes
22:36:07 <lament> microsoft is evil!!!!
22:36:13 <lament> 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 <ais523> 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 <lament> microsoft is, first of all, Big
22:36:52 <marshmallows> yhc looks really cool
22:36:55 <ehird> lament: and has Various Noodly Appendages
22:36:59 <AnMaster> ehird, see what I said about gperf
22:37:12 <AnMaster> ehird, care to explain my questions?
22:37:30 <marshmallows> ehird check it out
22:37:59 <AnMaster> ais523, their marketing is evil
22:38:01 <ehird> marshmallows: meh
22:38:07 <ais523> AnMaster: yes
22:38:09 <AnMaster> ais523, just one word: "sourcefource"
22:38:14 <ais523> it even fooled their own employees
22:38:16 <AnMaster> or however they spell it
22:38:37 <ehird> 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 <ais523> (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 <ehird> but I have seen this stereotype around in a very literal form :)
22:39:17 <AnMaster> yes indeed you are
22:39:27 <AnMaster> I know there are good ppl at MS
22:39:33 <AnMaster> but the company *IS* evil
22:39:41 * ais523 agrees with AnMaster
22:39:44 <ehird> AnMaster: evil is such a funny term
22:39:45 <ehird> define it.
22:39:46 <SimonRC> well, it does nasty things
22:39:51 <ais523> except I would have highlighted the word 'company'
22:39:52 <AnMaster> ehird, ais523 can do that
22:40:03 <SimonRC> but only to the extent that many companies would in that situation
22:40:08 <SimonRC> i.e. natural dominance
22:40:45 <ehird> AnMaster: outsourcing, eh?
22:40:47 <SimonRC> and its software is comstimes dreadful
22:40:51 <SimonRC> *sometimes
22:41:04 <AnMaster> ehird, yes I would define evil as the microsoft company
22:41:13 <AnMaster> <AnMaster> 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 <AnMaster> ehird, care to answer?
22:41:36 <ehird> AnMaster: the hash function for a range is the identity function.
22:41:44 <ehird> assuming its result can fit in that range that is
22:41:55 <AnMaster> err?
22:42:54 <AnMaster> "# 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 <AnMaster> of RAM. "
22:43:21 <AnMaster> that software must be old
22:43:25 <AnMaster> or rather the docs must
22:44:25 <ais523> AnMaster: not all computers have a lot of memory
22:44:45 <ais523> although ehird laughed at the Emacs documentation for saying things like 'if you don't have a mouse'
22:44:48 <AnMaster> ais523, true, yet I fail to see how gperf, after reading the docs, can do this
22:45:39 <AnMaster> well, good night
22:45:40 <ais523> 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 <SimonRC> hmm
22:46:17 <SimonRC> what are vim's advantages over emacs?
22:47:15 <ehird> SimonRC: no RSI
22:47:41 <SimonRC> in particular?
22:47:55 <ehird> SimonRC: smaller keystrokes feel like they do more
22:48:00 <ehird> i.e. more of a wizard
22:48:14 <ehird> + its range-thingy system is cool
22:48:20 <SimonRC> apparently test show that it isn't much faster though
22:48:23 <SimonRC> ehird: yes
22:48:28 <SimonRC> if at all faster
22:48:34 <SimonRC> because you have to tink more
22:48:48 <ehird> SimonRC: most experienced vim users won't think about most of the keystrokes, I think..
22:48:50 <ehird> same with emacs
22:48:50 <SimonRC> you can press arrow keys much faster than type complex movement commands
22:48:56 <ehird> and hardly
22:49:02 <ehird> 4 words along:
22:49:06 <ehird> M-> M-> ...
22:49:07 <ehird> or
22:49:10 <ehird> 4w
22:49:16 <ehird> Or..
22:49:19 <ehird> C-u 4 M->
22:49:30 -!- oklofok has quit (No route to host).
22:52:09 <ais523> ehird: I just noticed the command line of my IRC client: konversation -caption Konversation --icon=konversation
22:52:17 <ais523> surely that's a bit more repetitive than would be needed?
22:52:35 <ais523> ehird: M-4 M->
22:53:28 <ais523> no, not M->, that's end-of-document
22:53:31 <ais523> maybe M-.?
22:53:41 <SimonRC> no, M-f
22:53:44 <ehird> err, I meant
22:53:44 <ehird> -->
22:53:47 <ehird> as in the arrow key
22:54:03 <ehird> i would have said f, but SimonRC said 'you can press ARROW KEYS ..'
22:54:31 <SimonRC> ah, yes
22:54:36 <SimonRC> waitamo...
22:54:39 * SimonRC thinks
22:54:51 <SimonRC> for speed purposes, vim has arrow keys
22:54:55 <SimonRC> they're marked hjkl
22:55:08 <SimonRC> they are just as fast as arrows to type
22:55:18 <SimonRC> though switching modes will slow you down
22:55:19 <ehird> SimonRC: vi was invented before arrow keys
22:55:20 <ehird> deal with it
22:55:27 <SimonRC> well yes
22:55:31 <ehird> also, its easier to switch modes with hjkl because your hands are closer
22:55:38 <ehird> you have to move your hands to the arrow keys.
22:55:51 <ehird> plus at least one person -- me -- finds the layout of the arrow keys uncomfortable to use
22:55:55 <SimonRC> and literally, as the i key is right next to them
22:58:16 <ehird> SimonRC: soo... there's a couple advantages for you
22:58:17 <ehird> :p
22:58:25 <ehird> oh, and vim integrates with the unix way
22:58:28 <ehird> filters, etc
22:58:41 <ehird> you have probably seen the recent thing about using vi(m) for a hex editor
22:58:44 <ehird> :!xxd -> to hex
22:58:49 <ehird> :!xxd -r -> and back
22:59:00 <ehird> err
22:59:03 <ehird> :!%xxd
22:59:04 <ehird> :!%xxd -r
22:59:05 <ais523> it's M-x hexl-mode in Emacs
22:59:13 <ehird> ais523: yes, but that's not the point
22:59:19 <ehird> the point is that 'xxd' can know nothing about vi(m)
22:59:21 <ehird> and still function fine
22:59:40 <ais523> there's probably a way to do that in Emacs somewhere too
22:59:52 <ais523> it's probably hardly ever used, though, because Emacs purists tend to resist using any non-Emacs programs
23:00:04 <ais523> 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 <ehird> ais523: I am just demonstrating the vi philosophy
23:00:30 <ais523> yes
23:00:35 <ehird> I personally think the philosophy of filters etc. is a lot nicer than emacs'
23:00:37 <ais523> I approve of the vi philosophy
23:00:46 <ehird> and i would use vim if lisp&haskell weren't painful with it
23:00:54 <ais523> vi and emacs are good for different things
23:01:14 <ais523> emacs is very good with programming languages, for instance, but less good for conffiles and still less good for formatted text
23:01:43 <ais523> 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 <ehird> ais523: i would say that vi is very good for programming languages too
23:02:24 <ehird> we just need a modern vi
23:02:48 <ais523> 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 <ais523> 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 <ais523> that sort of thing doesn't fit well in vi
23:03:24 <ehird> ais523: you underestimate modern vim
23:03:29 <ais523> yes
23:03:37 <ehird> ais523: but, yes that issue needs some thinking
23:03:37 <ais523> but IMO making vi more like emacs defeats the point of vi
23:03:58 <ehird> ais523: indeed
23:04:03 <ehird> we need a third option
23:04:03 <ehird> like
23:04:04 <ehird> vi
23:04:05 <ehird> ^
23:04:06 <ehird> |
23:04:10 <ehird> ---------> ???
23:04:11 <ehird> |
23:04:12 <ehird> v
23:04:12 <ehird> emacs
23:04:22 <ehird> now, obviously linking the top and the bottom won't work
23:04:31 <ehird> 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 <ehird> and maybe come up with something decent
23:04:39 <ehird> ais523: may be so! ;)
23:04:52 <ais523> ??? would be a great name for a program
23:05:00 <ais523> you'd have to type it as \?\?\? in most shells
23:05:07 <ais523> and you couldn't run it at all in Windows
23:05:15 <ais523> (because it's an invalid filename in NTFS)
23:05:27 <SimonRC> hehehe
23:05:39 <SimonRC> I created a file called .url once somehow
23:06:02 <ais523> $ ???
23:06:02 <ais523> /usr/bin/ld: dmd: No such file: File format not recognized
23:06:02 <ais523> collect2: ld returned 1 exit status
23:06:07 <SimonRC> windows wouldn't let me name other files similar things
23:06:28 * ais523 was curious to see what would happen
23:07:05 <ais523> 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 <ais523> 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 <ehird> ais523: better - ***
23:08:09 <ehird> $ ***
23:08:09 <ehird> bash: Root.pm: command not found
23:08:13 <ehird> you get fun error messages!
23:08:29 <ais523> ah, capital R makes it come first alphabetically
23:08:52 <ais523> 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 <ais523> because the filenames encode the priority in ASCIIbetical order using numbers
23:09:13 <SimonRC> echo "#!/bin/sh\nsudo rm -rf *" > ~ehird/\ \ \ \ \ .sh
23:09:15 * SimonRC goes (impending NFS downtime)
23:09:24 <ehird> ais523: can you make cpan sane? :/
23:09:33 <ehird> like, NOT ask me about every single thing
23:09:34 <ais523> SimonRC: you forgot to chmod it +x
23:09:42 <ais523> ehird: I haven't seen how CPAN is implemented
23:09:44 <ehird> and NOT spew out 9 pages of output that reads like a conversation with a child
23:09:47 <ais523> but have only had trouble with it myself
23:10:01 <ais523> (that was the time I tried, and failed, to install Perligata)
23:10:12 <ehird> '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 <ehird> hah
23:10:24 <ehird> ==> Auto-install the 67 mandatory module(s) from CPAN? [y]
23:10:28 <ehird> after a list of 67 modules
23:10:31 <ehird> with detailed version info
23:10:38 <ais523> ehird: apt-get does that too
23:10:43 <ehird> ais523: one per line.
23:10:46 <ais523> ah
23:10:55 <ehird> ais523: did i mention it listed all the files in the package i'm installing?
23:10:58 <ehird> close to 1000 of them
23:11:00 <ehird> one per line.
23:11:04 <ehird> including all the tests.
23:11:39 <ais523> 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 <ehird> ais523: I think it's called /dev/null
23:12:47 <ais523> no, that wouldn't filter out anything
23:12:50 <ehird> cpan () { yes | cpan $* > /dev/null 2>&1 }
23:13:12 <ais523> /dev/dotstar might be more useful
23:13:32 <ais523> but you'd have to create that device somehow
23:13:40 <ehird> ais523: see my function
23:13:49 <ehird> also, there should be a mkdev:
23:13:57 <ehird> mkdev /dev/foo '...'
23:13:58 <ehird> example:
23:14:11 <ehird> mkdev /dev/foo perl -e "print 'ima /dev;\n'"
23:14:15 <ehird> cat /dev/foo => ima /dev
23:14:27 <ehird> mkdev /dev/rot13 rot13
23:14:37 <ehird> echo "hi" >/dev/rot13; cat /dev/rot13 =>
23:14:38 <ehird> etc
23:15:25 -!- oklofok has joined.
23:15:47 <ais523> there might be some way to rig one of those up out of mknod and some custom kernel modules
23:16:02 <ais523> but I don't feel like trying right now
23:18:51 <ehird> ais523: acme:: is fun
23:19:02 <ais523> ehird: seen Acme::Bleach?
23:19:10 <ais523> it predates Whitespace
23:19:53 <marshmallows> my favorite is 'dont'
23:20:09 <marshmallows> dont { foo } # foo is never executed
23:20:20 <ais523> marshmallows: INTERCAL has that feature
23:20:27 <ehird> ais523: many times
23:20:51 <ehird> maybe(PROB) { foo } # foo is executed, probability PROB
23:21:00 <ehird> maybe { foo } # foo is executed, with a random probability
23:21:06 <ais523> ehird: but that isn't what MAYBE does in INTERCAL!
23:21:10 <ehird> it should abuse ranges
23:21:15 <ehird> maybe(1..0) { one out of ten times }
23:21:21 <ehird> maybe { ... } then picks a random range, of course. ;)
23:21:58 <ais523> an INTERCAL-named version would be double_oh_seven(PROB) { foo }
23:23:03 <ais523> although emulating INTERCAL MAYBE would be great
23:23:17 <ais523> maybe { ... } (store a continuation on a continuation stack, then execute ...)
23:23:29 <ais523> go_ahead; (pop a continuation from the continuation stack)
23:23:44 <ehird> ais523: you can apparently do continuations in perl
23:23:47 <ehird> Jifty does it apparently
23:24:01 <ais523> 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 <ais523> (popping a continuation discards it)
23:24:22 <ais523> there's the INTERCAL backtracking model in a nutshell
23:24:40 <marshmallows> Could you do Prolog in INTERCAL?
23:24:52 <ais523> marshmallows: I have a very unfinished Prolog-to-INTERCAL compiler somewhere
23:24:57 <ais523> I don't see any technical reason why not
23:25:12 <ais523> INTERCAL has all the features needed to easily implement Prolog
23:26:48 <ais523> 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 <ais523> mostly because INTERCAL doesn't support as many data types natively as Prolog does
23:28:00 <ais523> but also because it isn't properly transitive like Prolog unification is
23:28:25 <marshmallows> INTERCAL is crazy.....
23:29:05 <ehird> marshmallows: really? that's an odd and unique opinion
23:29:23 <marshmallows> lol
23:29:23 <ehird> nobody has ever thought that before :)
23:30:33 <ais523> many of the Acme:: modules appear to have no documentation
23:30:42 <ais523> 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 <ehird> http://search.cpan.org/~rjbs/Acme-Lingua-EN-Inflect-Modern-0.003/lib/Acme/Lingua/EN/Inflect/Modern.pm
23:31:50 <ais523> 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 <ehird> ais523: http://search.cpan.org/src/GMCCAR/Acme-ManekiNeko-0.02/ManekiNeko.pm
23:34:10 <ehird> haha: `use less 'memory';`
23:34:13 <ehird> http://search.cpan.org/src/ADAMK/Acme-BadExample-1.00/lib/Acme/BadExample.pm
23:35:22 <ais523> found in a BUGS section: "Any use of this module should be considered a bug."
23:35:37 <ais523> CPAN Acme:: could have a whole qdb to itself
23:35:39 <ehird> :)
23:35:40 <ais523> probably does, for that matter
23:35:42 <ehird> ais523: haha
23:35:48 <ehird> ais523: what we need is a qdb-spawning site
23:35:58 <ehird> you enter a name, click a button, and whooomp a qdb
23:36:12 <ehird> and it could have All Time Tops For All QDBs
23:36:13 <ehird> and similar
23:36:21 <ais523> wow, Acme:: has a lot of esolangs in it
23:36:39 -!- tola has left (?).
23:36:58 <ehird> ais523: I vow to get BadExample running!
23:37:02 <ehird> ..sometime
23:37:51 * ais523 still wants to write revcat
23:37:59 <ais523> a program that detects what's connected to its stdout and stdin
23:38:05 <ais523> and then copies its /output/ to its /input/
23:38:29 <ais523> last I tried, though, I couldn't figure out how to do it
23:38:55 <ais523> 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 <RodgerTheGreat> I think someone was trying to talk to me, but whatever it was is past my scroll buffer
23:41:34 <ais523> RodgerTheGreat: nobody's mentioned your nick in the last 2 days in #esoteric
23:41:46 <ais523> at least, not while I was here at the time (I checked my personal logs)
23:41:50 <RodgerTheGreat> hm
23:42:04 <ais523> checking clog's or cmeme's are likely to produce better results
23:42:16 <RodgerTheGreat> well, it must've been between 10:30 am today and now
23:43:18 <oerjan> er i mentioned your nick
23:43:25 <RodgerTheGreat> oh
23:43:43 <oerjan> but only to point out that i thought you were responsible for the recent comic link
23:44:05 <RodgerTheGreat> oh, the "in progress" shot?
23:44:22 <oerjan> the mad science Apparatus one :)
23:44:44 <RodgerTheGreat> yes
23:44:58 <RodgerTheGreat> this http://www.nonlogic.org/dump/images/1205723239-preview.png
23:51:47 <ehird> ais523: revcat is impossible
23:51:58 <ais523> ehird: it's possible in some cases
23:52:01 <ais523> but not all
23:52:11 <ais523> e.g. yes | revcat | less doesn't make a whole lot of sense
23:52:46 <ais523> 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 <ehird> ais523: well, th pipe case is impossible
23:55:27 <ehird> since shells manage that internally
23:55:42 <ehird> the most introspection you could do is 'a process is ripping out my insides'
23:56:22 <ais523> couldn't you get all revcat processes to check the process table to see which processes were other revcats?
23:56:34 <ais523> and then send test data to see which order they were connected in?
23:56:40 <ehird> ais523: maybe
←2008-03-16 2008-03-17 2008-03-18→ ↑2008 ↑all