00:10:02 <orin> \me was going to repeat his assertion that any decent language should be parsable in o(n) time with o(n) space.
00:10:58 * boily suspects that orin has \ and / on the same key...
00:11:01 <orin> but obviously many widely used languages aren't
00:11:19 <oerjan> orin: well that certainly includes LR(1) languages
00:11:20 <boily> quintopia: today I slept!
00:12:02 <oerjan> or LR(k) for that matter
00:14:52 <ais523> hmm, what about INTERCAL before the fix that made it possible to parse
00:14:58 <ais523> IIRC that's type 2 but not LR(k) for any k
00:15:05 <ais523> also it's ambiguous, which doesn't help
00:16:08 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:16:10 <ais523> it takes some effort to construct an expression with two parses but you can do it
00:16:23 <coppro> ais523: does it involve rabbit ears and/or sparks?
00:17:38 <orin> I am fairly certain that Perl cannot be parsed.
00:17:57 <ais523> orin: actually Perl is parsed by YACC
00:18:14 <ais523> the only thing that's awkward is that Perl has a construct that runs as soon as it's parsed, and it can change the way that the rest of the file parses
00:18:19 <ais523> and you can put arbitrary TC stuff in there
00:18:35 <ais523> which makes parsing Perl undecidable, but in a rather mundane way
00:18:51 <oerjan> -!- magician has joined #esoteric. -!- Guest3780 has quit (Ping timeout: 252 seconds). -!- magician is now known as Guest3780. <-- I THINK E'S DOING IT WRONG HTH
00:18:55 <orin> Oh... so that's why only perl can parse perl
00:19:27 <orin> You need the whole language in the parser
00:19:47 -!- vodkode_ has joined.
00:21:28 <orin> I thought it just had an ambiguous grammar with a lot of cases that are settled in an arbitrary way
00:21:53 <orin> Or is that C++
00:23:34 <coppro> C++'s grammar is not ambiguous. It's not context-free. It's not even context-sensitive
00:23:49 <coppro> like Perl, parsing C++ is generally undecideable
00:25:56 <orin> Are templates turing-complete?
00:26:09 <oerjan> coppro: i think ambiguous is not inconsistent with undecidable hth
00:26:45 <orin> no wait they don't even need to be
00:27:19 <oerjan> in fact i think those are pretty orthogonal
00:28:00 <orin> You just need to be able to make one that takes O(n^2) or worse time to decide whether some token A is a type or a value,
00:28:06 <elliott> isn't template computation limited
00:28:14 <elliott> I can't imagine what else you could exploit for that
00:28:37 <olsner> there's usually a recursion limit on templates, but except for that I think they are TC
00:28:37 <elliott> how can you use it to mess with parsing?
00:29:00 <coppro> the limit is often "compiler's available memory" though
00:29:21 <olsner> as I understand it the "typename X" stuff is supposed to allow parsing to continue without template expansion
00:29:33 <coppro> olsner: right, but that only works inside a template
00:29:45 <elliott> coppro: can you show me an example of some C++ whose parsing does not terminate
00:30:32 <orin> So i guess that's me question. is it possible to make a C++ string which cannot be parsed in O(n) time
00:31:01 <coppro> template <bool B> struct foo { typedef int bar; }; template <> struct foo<false> { static int bar; }; void fail() { int i; { foo<does_TM_halt()>::bar * i; } }
00:33:29 <coppro> the clang testsuite includes a UTM written with constexpr
00:39:25 <elliott> it was more the implemention of does_TM_halt I was curious about, but
00:39:32 <elliott> I guess constexpr is just underrestricted?
00:39:45 <elliott> are you sure the standard doesn't specify some arbitrary implementation limit :p
00:39:49 <ais523> I think constexpr is just "do arbitrary stuff at compile time"
00:39:51 <elliott> (...are you sure C++ is actually TC)
00:41:53 <coppro> C++ is not directly TC at run time
00:42:22 <coppro> ais523: it wasn't intended to be TC; people who are bad at computer science theory were involved in the design and thought that they'd managed to make a version of constexpr which was powerful but not problematic.
00:42:28 <coppro> but it was actually TC
00:42:49 <ais523> powerful but sub-TC is a difficult line to walk
00:42:55 <coppro> C/C++ are not TC only due to the limitation in memory
00:42:58 <ais523> maybe aiming for primitive recursive is the best bet
00:43:24 <ais523> and C is potentially TC because of the file API, nothing in C limits files to any particular arbitrary size
00:43:37 <coppro> ah, right. But I mean without files.
00:43:59 <coppro> and you can sort of consider it in a meta approach
00:44:14 <coppro> where every time you get a memory error, you double the pointer size and retry
00:44:28 <ais523> VLAs and recursion let you allocate arbitrary amounts of memory up to the size of the largest integer or size_t, whichever is smaller
00:44:48 <ais523> actually you don't even really need recursion
00:51:14 <elliott> coppro: is constexpr really more TC than runtime C++
00:51:53 <ais523> not really, many languages are designed to require more power to compile than they do to run
00:52:11 <ais523> just not normally in the "undecidable vs. TC" sense
00:57:25 <pikhq> elliott: Well, C++ is straight TC because of templates too.
00:57:50 <elliott> so any portable C++ program can't use them to demonstrate TCness
00:58:16 <pikhq> Well yes, a C++ compiler can just bail on it. Alas.
00:58:46 <pikhq> But then a C compiler only has to handle a fairly small number of blocks.
01:24:06 <orin> pikhq: really, thy don't have to heandle arbitrary nesting depth?
01:26:09 -!- vodkode_ has quit (Ping timeout: 256 seconds).
01:52:38 -!- hjulle has quit (Ping timeout: 264 seconds).
01:56:55 -!- boily has quit (Quit: CARDINAL CHICKEN).
02:05:37 -!- longbyte1 has joined.
02:05:38 -!- longbyte1 has quit (Remote host closed the connection).
02:13:57 -!- orin has quit (Ping timeout: 246 seconds).
02:30:57 -!- orin has joined.
02:34:13 -!- vodkode_ has joined.
03:53:22 <zzo38> I remember that my grandfather once told me he would call the President on the telephone and tell him to remove the word "I don't want" from the dictionary. (And yet we both live in Canada, eh?)
03:56:13 -!- ais523 has quit (Read error: Connection reset by peer).
03:56:20 -!- ais523 has joined.
03:58:37 <Taneb> I don't think the president has any authority with the dictionary
03:59:48 <izabera> did you know that “( i+=2 < 3 )” means “( i+=(2 < 3) )” ?
04:00:55 <orin> assignment has very low precedence
04:01:15 <zzo38> Taneb: Yes, I know, that isn't his job
04:01:52 <izabera> i didn't... i just wrote a loop that never ended because of that >.>
04:03:50 -!- variable has quit (Ping timeout: 256 seconds).
04:04:17 <orin> Oh. yes, you can't replace i++ with i+=1 in the general case
04:04:21 <HackEgo> [wiki] [[Special:Log/newusers]] create * 0x0dea * New user account
04:04:37 -!- barrucadu has quit (Ping timeout: 265 seconds).
04:06:33 <orin> apparently it's Greek Orthodox Easter
04:07:00 <zzo38> O, I didn't know when Greek Orthodox Easter was this year; now I can know!
04:09:11 <orin> I can tell because outside the window, they are having a ceremony with candles and singing
04:10:05 <orin> and a lot of bell ringing
04:10:41 <orin> seems like they've gone inside now though
04:20:22 <HackEgo> [wiki] [[Beatnik]] http://esolangs.org/w/index.php?diff=42364&oldid=42363 * 0x0dea * (+419) Add alphabet program
04:20:41 -!- doesthiswork has quit (Quit: Leaving.).
04:30:04 <elliott> izabera: I think the problem here is that you wanted to write an expression like (i+=2) < 3 in the first place
04:31:43 <oerjan> it's not like it's undefined behavior
04:32:04 <orin> I was assuming in a while statement
04:32:27 <orin> like while(i++ < n)
04:32:45 <orin> he changed it to while(i+=2 < n) to go two at a time
04:33:03 <orin> and was surprised when it didn't work
04:34:14 <elliott> the pronouns people guess for some nicks will never cease to surprise me
04:36:44 <orin> interesting. i bet it changes when people are asked what pronoun they'd use as opposed to writing with out thinking
04:39:31 -!- dianne has joined.
04:39:43 <oerjan> we should ask dianne what his opinion is
04:41:34 <orin> Ok. dianne, do you think it's bad to write an expression like i += 2 < 3 in C?
04:42:26 <orin> This can be confusing because it means i += (2 < 3) instead of (i += 2) < 3
04:42:28 <Jafet> Someone's mistering the point here
04:43:17 <dianne> ah, I personally wouldn't put an assignment there at all, but I'd rather not argue code aesthetics
04:43:27 <Jafet> `cc main(i){while(i+=2<3);}
04:44:00 <HackEgo> #!/bin/sh \ echo "$@" > /tmp/a.c && gcc /tmp/a.c -o /tmp/a.out && /tmp/a.out
04:44:05 <orin> it probably looped around
04:44:55 <Jafet> `` echo 'main(i){while(i+=2<3);}' >/tmp/a.c && gcc -c -std=c99 -Wall -Wextra /tmp/a.c
04:44:58 <HackEgo> /tmp/a.c:1:1: warning: return type defaults to ‘int’ [enabled by default] \ /tmp/a.c: In function ‘main’: \ /tmp/a.c:1:1: warning: type of ‘i’ defaults to ‘int’ [enabled by default]
04:45:26 <Jafet> `` echo 'main(i){while(i&&i||i);}' >/tmp/a.c && gcc -c -std=c99 -Wall -Wextra /tmp/a.c
04:45:33 <HackEgo> /tmp/a.c:1:1: warning: return type defaults to ‘int’ [enabled by default] \ /tmp/a.c: In function ‘main’: \ /tmp/a.c:1:1: warning: type of ‘i’ defaults to ‘int’ [enabled by default] \ /tmp/a.c:1:1: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
04:46:01 <dianne> um... also. I'm not a "he".
04:46:39 <orin> dianne: oerjan was making a joke because we were discussing how people guess pronouns
04:47:06 <orin> because I guessed "he" for "izabera" and I was wrong
04:48:08 <dianne> oh, alright. I'm not really bothered, was just a bit confused. since, well, I didn't really see how, with my name...
04:48:16 <ais523> I went a day without third-person pronouns once, just for fun
04:48:28 <ais523> it's quite doable, I don't think anyone even noticed how weird the sentence structure gets sometimes
04:48:46 <orin> ais523: In Japanese they don't really have them
04:49:11 <oerjan> ais523: did you use a script to make sure not to slip up?
04:49:14 <Taneb> ais523, I use third-person pronouns exclusively. You might think it is quite odd, but I find it fun
04:49:35 <ais523> oerjan: no, it was a spur-of-the-moment-thing
04:50:14 <orin> There's あの人 and あの奴 etc. but those are just phrases like "that person" or "that dude"
04:50:59 <ais523> IIRC Hungarian doesn't have gendered third-person pronouns? which is why b_jonas' pronoun usage is so weird on occasion?
04:51:30 <oerjan> i haven't noticed anything wrong with b_jonas's usage...
04:52:03 <oerjan> but yes, there's only ő
04:52:51 <elliott> finnish merges them all into "it", right?
04:53:32 <oerjan> elliott: apparently, no, wiktionary claims it's only for humans
04:53:44 <elliott> oklopol lied to me, I guess
04:54:44 <orin> Oh, right there is 彼 and 彼女 but you don't hear people say it often, because they also mean "boyfriend" and "girlfriend" respectivley
04:55:29 <orin> Which is really weird, that a pronoun can shift in meaning like that
04:58:55 -!- barrucadu has joined.
04:59:08 <izabera> http://shop.fsf.org/product/usb/ did you know they sell these?
04:59:45 <oerjan> the english and swedish wiktionaries disagree on whether hungarian ő includes "it"
04:59:56 <elliott> "they" as in USB RNGs in general, or the FSF specifically?
05:00:21 <izabera> i didn't know anyone sold these
05:00:24 <elliott> I mean, I knew that USB RNG things were a thing, but not that the FSF sold them.
05:03:10 <oerjan> (norwegian/swedish/danish have four third person pronouns, because in addition to "natural" gendered pronouns, the _inanimate_ pronouns have _grammatical_ gender.)
05:03:19 <Jafet> http://shop.fsf.org/product/stuffed-baby-gnu/
05:03:51 <izabera> stallman went to italy last september
05:03:57 <izabera> he auctioned a stuffed baby gnu
05:04:01 <oerjan> have you recovered yet?
05:04:05 <zzo38> Do they know speaking Italian?
05:04:09 <elliott> http://shop.fsf.org/category/stuffed-gnu/ lots of things in the stuffed gnus category
05:04:44 <izabera> well he did that saint ignucius thing :D
05:05:01 <oerjan> https://www.youtube.com/watch?v=YqgPyqyh4X4
05:05:05 <zzo38> If I want to go to Italy, I would want to learn speaking Italian though.
05:06:03 <izabera> well it was just a trip for a conference o_o
05:06:29 <izabera> i mean i'd like to visit japan eventually but i'm not going to spend 15 years learning japanese
05:07:55 <elliott> that's not very much dedication, izabera
05:08:16 <elliott> how will you understand what people are saying if you don't master japanese before going there
05:08:27 <izabera> my dedication stops at watching subbed anime <.<
05:08:39 <izabera> what's the plural of anime?
05:08:56 <elliott> is anyone fansubbing literal real life japan
05:09:09 <zzo38> I too watched some sub anime such as Kaiji
05:09:18 <elliott> I think it's "anime" if you don't want to be silly, "animes" if you do.
05:09:27 <elliott> (I guess pedantically it'd be "anime series" or something in the first place anyway.)
05:09:48 <oerjan> hm that video was about twice as long as necessary. although more topical than expected.
05:10:00 <Taneb> I am (somewhat half-heartedly, I admit) trying to learn Italian for a trip I am planning later this year
05:10:02 <zzo38> Do you like to watch Akagi and Kaiji?
05:10:39 <orin> I watch anime without subtitles sometimes... I'm not good at it yet so I have to keep rewinding
05:10:46 * izabera teaches Taneb all her italian: pizza pasta mamma mia
05:11:00 <Taneb> izabera, that is not much italian
05:11:15 <elliott> just kidding. that's spanish
05:11:19 <Taneb> elliott, that is less Italian
05:11:24 * oerjan swats elliott -----###
05:11:29 <elliott> spanish is at least 14% italian.
05:11:33 <orin> cappuccino espresso latte macchiatto
05:11:59 <oerjan> elliott: if boily were here you'd be in for a mapole as well.
05:12:01 <Taneb> Buongiorno, donne e uomini (I think)
05:12:05 <izabera> elliott: actually 90% of the italians share that opinion
05:12:23 <Taneb> elliott, Italian and Spanish are at times mutually intelligible
05:12:32 <elliott> izabera: I only say facts!! and true things
05:12:41 <izabera> Taneb: ciao ragazze e ragazzi
05:12:56 <Taneb> izabera, I am a very formal person, I sometimes even wear a tie
05:12:59 <elliott> you lied, none of those words are pizza, pasta, or mamma. or mia.
05:13:44 <elliott> I have never worn a tie in my entire life.
05:14:10 <orin> I have several ties, but I've mostly only worn them to operas
05:14:23 <orin> and weddings I guess
05:14:42 <izabera> well, on the good side, this channel makes me feel young
05:14:51 <izabera> on the bad side, this channel makes me feel too young
05:15:01 <elliott> Taneb is probably younger than you?
05:15:07 <elliott> well idk maybe Taneb is old now
05:15:13 <Taneb> I am younger than yu
05:15:24 <orin> izabera: I was born may 10 1993
05:15:33 <Taneb> I am also younger than orin
05:15:47 <elliott> am I still the youngest person here? that would be weirder now than when I was 11
05:16:06 <elliott> why have I been in this godforsaken channel for eight years
05:16:50 <orin> elliott: maybe you're a supergenius
05:16:52 <elliott> the former was true for a depressing number of years, more or less
05:17:10 <Taneb> elliott, there's a buffet by the mapole
05:17:19 <elliott> I don't go near the mapole.
05:18:27 <orin> anyway I have been to like at least 8 operas
05:18:48 <Taneb> That is like, 8, more operas than I have been to
05:18:54 <Taneb> I went to an Operetta once
05:18:58 <elliott> isn't cpressey older than you oerjan?
05:19:10 <Taneb> Isn't monqy younger than you, elliott?
05:19:30 <orin> izabera: no, you're not allowed to eat during an opera, eating is noisy
05:20:03 <elliott> Taneb: monqy was I think, yeah
05:21:16 <oerjan> if we're mentioning people who aren't _present_, i suspect Lil^WHe of a dozen names is also younger than elliott
05:21:56 <elliott> maybe one of the people joining for esoterica stuff for like five seconds was, like, 60
05:22:25 <oerjan> elliott: don't you remember that COBOL guy? he was older than me
05:22:47 <oerjan> btiggins or something like that
05:22:56 <elliott> wasn't Rugxlo or whatever his name was too
05:22:57 <izabera> i don't know cobol but i know sed and sed is older :(
05:23:00 <oerjan> (with different actual letters)
05:23:28 <oerjan> sed older than COBOL? i'm skeptical.
05:23:29 <elliott> just saying but I'm actually an immortal being who has been alive for ten thousand years and you're all whippersnappers
05:23:43 <izabera> sed is the oldest language on unix
05:23:43 <izabera> it's even older than unix actually
05:23:44 <Taneb> I thought I was the only one!
05:24:00 <Taneb> izabera, COBOL is, too
05:24:14 <Taneb> COBOL dates to 1959
05:24:26 <Taneb> And is considerably older than sed
05:25:13 <elliott> that's from 1958 theoretically
05:25:34 <elliott> kind of like saying you know BCPL because you know C though
05:25:40 <elliott> I use vim and know lisp :(
05:25:49 <oerjan> <Taneb> elliott, there's a buffet by the mapole <-- beware of the poutine
05:26:12 <Taneb> oerjan, what about the gazspacho?
05:26:41 <elliott> okay sometimes I use emacs but rarely
05:27:02 <Taneb> I know a little lisp but I am not very good at it
05:27:14 <Taneb> Ah, C-x C-c. the :wq of emacs
05:28:20 <oerjan> Taneb: that tastes szupérb
05:29:39 <oerjan> Taneb: i don't understand why they teach :wq instead of :x
05:29:51 <Taneb> oerjan, I don't use vim, I am afraid
05:30:52 <izabera> if you guys use bash and its vi mode, you may like this
05:30:55 <izabera> alias :{x,{,w}q}{,a}=exit :e=vim :h=man info='info --vi-keys'
05:31:29 <izabera> so that you can type :wq in your shell to exit
05:31:30 <elliott> do you ever :wqa bash as opposed to just :qing it
05:32:15 <izabera> it's just a musclar reflex at this point
05:33:08 <elliott> http://shop.fsf.org/product/gnu-emacs-reference-mugs/ http://shop.fsf.org/product/signed-rms-photo-print/
05:39:53 <zzo38> I am not one million years old
05:43:08 <ais523> now I'm wondering if C-x C-c works in bash
05:43:11 <ais523> it knows a lot of Emacs bindings
05:43:51 <Taneb> zzo38, very few people are
05:45:18 -!- mbrcknl_ has joined.
05:46:02 <izabera> binding C-c in bash is kinda hard since stty gets in the way
05:46:08 -!- edwardk_ has joined.
05:48:58 <izabera> this does the job... stty intr ''; bind -x '"\C-x\C-c":exit'
05:49:21 <izabera> i can't make it work without unsetting it for stty :\
05:50:13 <zzo38> Did you ever win a Ig Nobel prize for proving that it is impossible to use complex numbers in accounting?
05:52:06 -!- sebbu has quit (*.net *.split).
05:52:09 -!- mbrcknl has quit (*.net *.split).
05:52:09 -!- skarn has quit (*.net *.split).
05:52:10 -!- edwardk has quit (*.net *.split).
05:52:10 -!- skarn_ has joined.
05:54:19 -!- mbrcknl_ has changed nick to mbrcknl.
05:55:16 <elliott> right after you learn japanese
05:55:21 <zzo38> I had proven such thing, but now I forgot how. Nevertheless it isn't what I was trying to do; I was trying to figure out how to use complex numbers in accounting, but instead I concluded it is impossible and also invented matrix accounting too due to that. It is possible to try to make one thing but you can make something else instead.
05:55:31 -!- edwardk_ has changed nick to edwardk.
06:25:16 -!- Sprocklem has quit (Ping timeout: 246 seconds).
06:31:33 -!- zadock has joined.
06:49:55 -!- Patashu has quit (Ping timeout: 265 seconds).
06:59:06 -!- CADD has quit (Ping timeout: 265 seconds).
06:59:44 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
07:00:34 <HackEgo> [wiki] [[Beatnik]] http://esolangs.org/w/index.php?diff=42365&oldid=42364 * 0x0dea * (+327) Add infinite loop example
07:26:00 -!- zadock has quit (Ping timeout: 256 seconds).
07:40:56 <myname> "13 Pop a number and skip ahead n (actually n+1) words if the number is zero."
07:42:03 -!- sebbu has joined.
07:42:42 -!- sebbu has quit (Changing host).
07:42:42 -!- sebbu has joined.
07:44:53 <myname> but what is n if it's not "the number"
07:46:26 <oerjan> the one thing i can think of is that possibly he means the +1 to be the "normal" word increment after any instruction
07:47:07 * oerjan paranoidly checks author name, whew looks male
07:47:18 <myname> yeah, but as i said: that's not what bothers me
07:47:35 <myname> i don't get what the hell n is
07:47:59 <myname> if n is in fact "the number", 13 is just a nop
07:48:25 <oerjan> "Note that the commands corresponding to values 5, 13, 14, 15, and 16 each read an extra word and use it as a parameter (then skip it)."
07:48:48 <oerjan> maybe it's that skip that's the +1, then
07:50:45 <oerjan> hm "but it ought to be able to simulate any Push-down automaton"
07:51:45 <oerjan> i'm suspicious that it might not be able to do sufficiently complicated flow control because the size limits also affect jump distance
07:53:23 <oerjan> well in this case, the max scrabble score, i guess
07:54:00 <myname> the examples mad3 me think you could do arbitrary long words
07:54:35 <myname> but longer programs might not quite look like real sentences
07:54:55 <oerjan> hm the interpreter doesn't enforce dictionary words
07:55:09 <oerjan> but the examples are, aren't they?
07:55:38 <myname> what you _could_ do is jumping backwards to a position that jumps backwards
07:56:26 <myname> you just have to jump over them if you read forward
07:56:46 <oerjan> yes, but you'd get a traffic jam, essentially, if you had too many paths
07:58:01 <myname> but i am not quite sure if this is really not tc
07:58:26 <oerjan> tc it is not. there is no infinite memory other than the stack.
07:58:40 <oerjan> the question is whether you can get all pushdown automata.
07:59:13 <myname> 8 is , and 9 is .; 5 1 7 is + and 5 1 10 is -
07:59:54 <myname> [ and ] _should_ be able to translate into 13-16
07:59:54 <j-bot> myname: |ill-formed number
08:00:03 <myname> the problem is > and <
08:00:16 <myname> if you had a second stack, it could be tc
08:00:31 <oerjan> oh for the other size limit, "and since data items are finite (integers from 0 to 255)"
08:00:58 <myname> well, that holds true to bf too, doesn't it?
08:01:58 <oerjan> but the thing is, without a cell limit you don't need unlimited number of cells
08:02:07 <myname> isn't .,+-[] enough for a push-down automaton?
08:03:06 <oerjan> but you don't have general [] if you don't have arbitrary long words
08:03:14 <oerjan> if you do, then probably.
08:06:01 <oerjan> http://cliffle.com/esoterica/beatnik.html looks a bit different from the esolang description
08:06:31 <oerjan> and explains your original question clearly
08:08:08 <myname> i like the second paragraph
08:14:37 -!- MoALTz has joined.
08:22:10 -!- dianne has quit (Quit: byeannes).
08:22:26 <HackEgo> [wiki] [[Beatnik]] http://esolangs.org/w/index.php?diff=42366&oldid=42365 * Oerjan * (+189) /* Computational class */ Quibble on PDA
09:00:38 -!- Phantom_Hoover has joined.
09:06:13 -!- roman2 has joined.
09:06:20 <roman2> fnord morning everybody
09:07:09 -!- vodkode_ has quit (Remote host closed the connection).
09:11:38 <b_jonas> ais523: in ayacc, consider making it possible to have multiple start symbols to choose from when you start the parser, at least in the non-compatibility interface? I believe currently you have to emulate that by injecting an extra terminal symbol at the start from the tokenizer, which is fine for theory but ugly.
09:12:00 <ais523> it shouldn't be too hard to implement, at least
09:12:31 <ais523> the problem is that that would require some sort of syntax extension, or else to compile all possible start symbols
09:13:01 <b_jonas> the syntax extension could be a new declaration type
09:13:15 <b_jonas> or even just multiple copies of %start declarations
09:13:39 <b_jonas> it's not clear how you'd decide from them in the C entrance interface
09:16:45 <b_jonas> of course, all these extra features are less important. the most important thing is that ayacc should always generate correct output, even for unusual grammars.
09:18:00 -!- zadock has joined.
09:18:20 -!- ais523 has quit (Read error: Connection reset by peer).
09:18:31 -!- ais523 has joined.
09:20:28 <b_jonas> if it can do that, than this will probably already be worth to use over bison
09:20:36 <HackEgo> [wiki] [[User:Rdococ/Esolangs]] M http://esolangs.org/w/index.php?diff=42367&oldid=22963 * Rdococ * (+129) Updated user page.
09:22:45 <b_jonas> ais523: oh by the way, how will the license of this work? if I have a constant grammar, can I put the C code output under public domain?
09:23:11 <b_jonas> and is the generated C code output portable, not depending on specifics of the system, so this can be done usefully?
09:23:32 <ais523> b_jonas: unlike flex, the output is going to be direct-coded and have hardly any verbatim copies from the input file
09:23:44 <ais523> so the output will probably be licensed the same way as the input
09:24:37 <b_jonas> (even if it does have verbatim copies from a template, that template could be in public domain while ayacc as a whole is licensed differently. that's how autotools works I think.)
09:25:36 -!- hjulle has joined.
09:25:45 <ais523> autotools works vaguely like that but unnecessarily complicated, I think
09:29:24 <nortti> 07:54 < elliott> finnish merges them all into "it", right? ← well, kinda. there's hän which is only for humans and se which is for everything
09:29:42 <nortti> generally using se for humans is less formal
09:34:24 <ais523> incidentally, normal parsing theory seems to make a distinction between shift actions and goto actions
09:34:33 <ais523> I consider them to be the same, and they are in many cases
09:34:40 <ais523> but added a few of my own for optimization purposes
09:34:50 <ais523> shift_and_reduce actions, degenerate reduce actions, cast actions
09:35:19 <ais523> and indirect actions, which basically just combine the common code of two states that are almost but not quite identical
09:35:37 <b_jonas> wow, so many optimizations
09:35:48 <b_jonas> now you'll need a big testsuite for this, which isn't easy
09:37:18 <ais523> I'm using C-INTERCAL ;-)
09:37:35 <ais523> also, it seems that there's a name for the sort of implementation I'm using: https://en.wikipedia.org/wiki/Recursive_ascent_parser
09:37:48 <ais523> but the optimizations make it look less messy than what's shown there
09:38:18 <b_jonas> oh, C-intercal is a nice idea
09:38:34 <ais523> INTERCAL is a pain to parse
09:38:39 <ais523> so it makes for a good parser testsuite
09:38:50 <b_jonas> um yes, but some of that pain is in the lexer, isn't it?
09:38:57 <b_jonas> or the non-yacc part in general
09:40:32 <ais523> the only help the grammar needs from the lexer is to identify whether a spark/ears is necessarily opening, or could be closing
09:41:43 <ais523> (in the case of "could be closing", it's assumed that it isn't ever opening; this is the hack that removes ambiguity and makes the language LALR(1) in the first place, and it's mentioned in the INTERCAL-72 manual)
09:42:41 <b_jonas> don't you have to disambiguate between overlapping keywords like DO NOT GIVE UPLEASE ,3 <- #0
09:43:31 <ais523> possibly technically we have to, but we don't currently
09:46:01 <ais523> oh, btw, here's a sample warning message:
09:46:07 <ais523> ayacc: warning: shift/reduce conflict on symbol ELSE at t.y line 8
09:46:08 <ais523> ayacc: info: conflict is reached after, e.g., IF expr THEN IF expr THEN stmt . ELSE
09:46:10 <ais523> ayacc: info: to resolve the conflict: specify a precedence for ELSE and THEN
09:46:18 <ais523> so much better than bison :-)
09:46:57 <HackEgo> [wiki] [[Folder]] N http://esolangs.org/w/index.php?oldid=42368 * Rdococ * (+1274) New esolang!
09:47:10 <b_jonas> does posix yacc or bison or ayacc guarantee to not read the lookahead token if you can decide which rule to run without the lookahead?
09:47:42 <ais523> the example is sometimes badly wrong in the case of a reduce/reduce conflict, but that's because due to deficiencies of LALR(1), sometimes there is no example and the conflict's completely spurious
09:48:15 <ais523> and yes, there's a guarantee to not read into the lookahead token if the current state unconditionally reduces and always by the same rule
09:48:18 <b_jonas> that's when the grammar is LR(1) but not LALR(1)
09:48:20 <ais523> although I'm optimizing those states out entirely
09:48:24 <HackEgo> [wiki] [[User:Rdococ/Esolangs]] M http://esolangs.org/w/index.php?diff=42369&oldid=42367 * Rdococ * (-46)
09:48:28 <ais523> that's what a shift_then_reduce action is for
09:48:44 <ais523> because you aren't reading the lookahead token anyway, no need to actually run the logic of the state in question
09:48:47 <b_jonas> ais523: good, but guarantee in what? posix yacc too, or only ayacc?
09:48:52 <ais523> guarantee in posix yacc
09:49:51 <ais523> took me a while to find where it says that (it's near the end), but it does
09:50:02 <ais523> I assume that guarantee exists because it's practically useful
09:50:06 <ais523> because it does make things less consistent
09:50:27 <ais523> you'd think rules would prefer to know that the lookahead token had always been read, rather than sometimes being read and sometimes not
09:50:38 <b_jonas> yes, it's practically useful, both for reading interactive input, and for crazy stuff like that seeking tokenizer I've shown yesterday
09:50:40 <HackEgo> [wiki] [[User:Rdococ]] M http://esolangs.org/w/index.php?diff=42370&oldid=40356 * Rdococ * (+121)
09:50:54 <b_jonas> (actually just a head seeking in the tokenized stream)
09:51:08 <b_jonas> and no, I wouldn't prefer it always read
09:51:29 <b_jonas> (that would be even worse in that hypothetical LALR(2) mode)
09:51:34 -!- rdococ has joined.
09:51:55 <b_jonas> that would just lead to kludges like emitting two tokens when a newline is read interactively
09:55:10 <rdococ> uh... I have an article about an esolang -- it explains everything while being a really short stub... what should I do?
09:56:18 <ais523> post it anyway and put {{stub}} at the start
09:56:32 <ais523> unless the esolang is the sort of esolang that's impossible to spend more than a couple of sentences describing
09:56:38 <ais523> in which case it should probably be on the joke languages list
09:57:06 <rdococ> it's possible to program in, it's equivalent to a finite state automaton. However, it does only take a couple of sentences to describe it.
09:57:19 <rdococ> should I add it to the joke language list anyway?
09:57:35 <rdococ> I'm pretty sure 'joke' means something other than just 'really short stub'...
09:57:43 <rdococ> anyway, I'm rambling now, thanks
09:58:13 <ais523> if it's possible to program in, it's not a joke
09:58:14 <b_jonas> rdococ: maybe add some example programs to make it longer?
09:58:20 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42371&oldid=42368 * Rdococ * (+9)
09:58:22 <ais523> or well, if it's possible to program in /and/ possible to implement
09:58:42 <rdococ> it's a bit like Text in the fact it's already implemented.
09:58:42 <b_jonas> oh yeah, add an implementation too
09:58:44 <ais523> note that this is sufficient to not be a joke, but not necessary, some non-joke languages would be hard or impossible to program in
09:59:36 <rdococ> you know Text, where there are already programs to interpret it? well my esolang is like that, but it's got better computation power.
09:59:51 <rdococ> *not saying it's better, I should've reworded that
10:00:03 <ais523> Text probably counts as a joke
10:00:31 <b_jonas> rdococ: then add links to implementations to the description of the language
10:00:32 <rdococ> I don't think mine is a joke... not too much of one, anyway
10:01:34 <rdococ> b_jonas: but the point is, everyone already has an implementation - the language's like Text in that way
10:02:00 <rdococ> Text -> most OSes already have an implementation. Folder -> same thing.
10:04:50 <HackEgo> [wiki] [[Beatnik]] http://esolangs.org/w/index.php?diff=42372&oldid=42366 * Oerjan * (-175) I convinced myself I was wrong about unlimited word length being needed
10:16:58 -!- ais523 has quit (Read error: Connection reset by peer).
10:16:58 -!- callforjudgement has joined.
10:17:02 -!- Patashu has joined.
10:17:30 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42373&oldid=42371 * Rdococ * (+10) Some people have to double-click to open stuff, so 'any user can click one of the transitions' is technically incorrect and might cause confusion.
10:19:08 <callforjudgement> at that point, it's basically just a funky encoding for an FSM, or is it a PDA?
10:19:56 -!- callforjudgement has changed nick to ais523.
10:20:04 <ais523> rdococ: actually this is much more complex than it looks
10:20:31 <ais523> because symlinks don't work quite the same way as shortcuts, and I think it may make a difference to computational power
10:20:46 <rdococ> to be honest, I've never heard of symlinks.
10:20:53 <rdococ> but continue, I'm intrigued.
10:21:17 <ais523> well, a "shortcut" isn't a filesystem feature, it's a feature of the Windows graphical shell
10:21:49 <ais523> and when you follow a shortcut, Explorer opens up a specific file or directory or other shell object for you (the internal name is "shell links")
10:22:08 <ais523> a symlink, meanwhile, is a filesystem feature, it basically forms an asymmetrical alias
10:22:42 <b_jonas> ais523: why is it a difference in computational power; and the shell can treat symlinks in at least two ways in some operations I think
10:23:21 <ais523> e.g. if I create a symlink "a" pointing at "../b/c" in "/d/e", then "/d/e/a" is a different name for the same file as "/d/b/c"
10:23:31 <ais523> however, the two names are treated as distinct for some purposes
10:23:50 <ais523> and knowing what those purposes are is probably important to know if this is an FSM or PDA, and I can't remember offhnad
10:24:16 <ais523> b_jonas: basically, you can't construct unboundedly long paths with shortcuts
10:24:34 <ais523> so the PDAness is based on whether there's some way to /read/ the path using only the basic operation of Folder
10:25:18 <ais523> or, I mean, it's above FSM because you can just use shortcuts to .. to do bracket matching
10:25:27 <ais523> but I'm not sure if you get an actual PDA stack, or just a coutner
10:25:40 <ais523> I'm leaning towards PDA at this point
10:25:54 <ais523> rdococ: given a string consisting only of ( and ) characters, determine whether they match correctly
10:26:05 <ais523> an FSM can't do that, but it's trivial for almost any PDA implementation
10:26:13 <rdococ> so you're saying my esolang could be a PDA instead of an FSM?
10:26:19 <ais523> but it may depend on the oS
10:26:27 <rdococ> well this is interesting
10:26:36 <ais523> proving languages that people think are FSMs are actually PDAs is one of my hobbies
10:26:42 <ais523> e.g. Keymaker-Splinter
10:27:03 <rdococ> are you entirely sure, or is it going to be controversial?
10:27:12 <b_jonas> hehe “< ais523> proving languages that people think are FSMs are actually PDAs is one of my hobbies”
10:27:21 <b_jonas> can we add this to a quotation bot?
10:27:35 <b_jonas> I don't see why it would be a PDA though
10:27:37 <ais523> rdococ: I'm not 100% sure
10:27:53 <ais523> I currently think it's more than 50% likely but can't be much more confident than that
10:28:09 <ais523> but this is mostly based on deficiencies in my understanding of symlinks, rather than in my understanding of PDAs
10:28:16 <Taneb> <pedantic> I don't think languages can be FSMs or PDAs. They can be capable of expressing FSMs or PDAs, sure, but a language is not a program</pedantic>
10:28:20 <ais523> directory hardlinks add an extra layer of complication
10:28:29 <ais523> Taneb: I elided "equivalent in power to"
10:29:32 -!- copumpkin has joined.
10:29:43 <rdococ> what if I use shortcuts only?
10:29:47 <b_jonas> but directory hardlinks shouldn't exist
10:32:47 <rdococ> ais523: what's your username on the wiki? I want to credit you on the talk page
10:34:31 <b_jonas> I still don't see how it could be more powerful than a fsm.
10:34:31 <rdococ> should I call you a he or a she?
10:35:03 <FireFly> Speaking of symlink-related computing, http://www.linusakesson.net/programming/symlinks/index.php
10:35:05 <Phantom_Hoover> i was about to say 'his name is alex, so...' and then i realised that doesn't help at all
10:35:16 <rdococ> if it could do the stuff a PDA can do, I wonder if it could combine the computational power of both.
10:35:54 <rdococ> from what I think, he might be male. But maybe that's just a cultural bias, and I don't really mind.
10:36:08 <rdococ> maybe I should use the singular 'they'
10:40:06 <HackEgo> [wiki] [[Talk:Folder]] N http://esolangs.org/w/index.php?oldid=42374 * Rdococ * (+376) My esolang is more interesting now, I guess...?
10:43:14 -!- oerjan has quit (Quit: Something).
10:45:15 <HackEgo> [wiki] [[Folder]] http://esolangs.org/w/index.php?diff=42375&oldid=42373 * Rdococ * (+586) Updated definition a bit, updated computational class.
10:46:09 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42376&oldid=42375 * Rdococ * (+0) Fixed incorrect link.
10:47:28 <ais523> rdococ: I tend not to use gendered pronouns when talking about myself in the third person
10:47:40 <ais523> but yes, my gender is possibly too well-known by now
10:48:48 <rdococ> usually I'm not that fussed about revealing my gender...
10:49:47 <b_jonas> when do you talk about yourself in third person? writing a cv or something?
10:50:01 * ais523 talks about themself in the third person
10:50:35 <b_jonas> oh, so self-referencing statements
10:50:54 <shachaf> "talking about myself" tends to be self-referencing.
10:53:07 <rdococ> wait... can't you add flags to a shortcut link like -r for shutdown - atleast in windows?
10:54:10 <rdococ> (ik it's not limited to shortcuts, but it sounds interesting)
10:54:56 <ais523> rdococ: you can, because Windows shortcuts are kind-of complex
10:55:01 <ais523> and badly designed in many ways, too
10:55:47 <b_jonas> well, they're sort of a carry-on from windows 95, and in some ways maybe even from windows 3.1
10:55:58 <b_jonas> they probably made sense back then
10:56:03 <rdococ> huh... does that add any extra computational power or can you just emulate the behavior in an FSA?
10:56:29 -!- Koen_ has joined.
10:57:07 -!- nszceta has joined.
11:01:21 <rdococ> I still don't know what 'use shortcuts to do bracket matching' means
11:05:27 -!- rdococ has quit (Ping timeout: 246 seconds).
11:09:41 -!- rdococ has joined.
11:12:48 -!- zadock has quit (Ping timeout: 264 seconds).
11:13:20 <Koen_> rdococ: maybe set your text editor up to automatically insert a matching ')' after the cursor when you type '('
11:14:38 -!- vodkode_ has joined.
11:18:05 <Koen_> I don't know that would be a shortcut
11:20:02 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42377&oldid=42376 * Rdococ * (-387) Simplified explanation a little
11:20:30 <rdococ> huh? chrome messed up on me, so I can't see the chat history
11:20:42 <rdococ> still don't know what you mean
11:21:52 <rdococ> anyway, do you know if my programming language is a FSA or a PDA?
11:25:35 -!- zadock has joined.
11:36:03 -!- zadock has quit (Ping timeout: 265 seconds).
11:44:14 <orin> Any tips on draining an ocean
11:46:05 <orin> I guess I need to have as much drain bandwidth as there is water coming in?
11:46:33 <izabera> orin: don't rush it, start slowly, then speed up but not much
11:47:16 -!- AndoDaan has joined.
11:47:33 -!- AndoDaan has left.
11:48:15 -!- AndoDaan has joined.
11:48:19 <orin> I'm trrying to drain an underground ocean to get at some rare minerals
11:48:34 -!- zadock has joined.
11:52:12 -!- yump has joined.
11:53:43 -!- yump has quit (Client Quit).
11:57:43 <Phantom_Hoover> orin, cavern lakes fill from any open tiles at the edge of the map
11:57:54 <Phantom_Hoover> draining them entirely is very hard and will kill your fps
11:58:14 <Phantom_Hoover> probably the most practical way of making an area accessible is to pour magma over it
11:59:18 -!- zadock has quit (Ping timeout: 250 seconds).
12:00:58 -!- vodkode_ has quit (Ping timeout: 256 seconds).
12:01:57 -!- AndoDaan has quit (Ping timeout: 256 seconds).
12:09:45 <HackEgo> [wiki] [[Hello world program in esoteric languages]] http://esolangs.org/w/index.php?diff=42378&oldid=42362 * SuperJedi224 * (+263)
12:12:23 -!- zadock has joined.
12:14:34 -!- Patashu has quit (Quit: Soundcloud (Famitracker Chiptunes): http://www.soundcloud.com/patashu MSN: Patashu@hotmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:21:00 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42379&oldid=42377 * Rdococ * (-35) Not sure, with the requirements and specifications, that the argument for PDA holds. However, there's still discussion.
12:21:56 <HackEgo> [wiki] [[Talk:Folder]] M http://esolangs.org/w/index.php?diff=42380&oldid=42374 * Rdococ * (+17)
12:21:57 -!- zadock has quit (Ping timeout: 256 seconds).
12:25:30 <HackEgo> [wiki] [[Talk:Folder]] http://esolangs.org/w/index.php?diff=42381&oldid=42380 * Rdococ * (-137) Rewritten the talk message
12:27:23 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42382&oldid=42379 * Rdococ * (+0) capitalized 'F' in 'Folder program' and 'Folder programming language'
12:33:06 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42383&oldid=42382 * Rdococ * (+92) Changes to the computational class section
12:34:00 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42384&oldid=42383 * Rdococ * (+0) Minor change to the link to the talk page.
12:34:38 -!- zadock has joined.
12:46:12 -!- zadock has quit (Ping timeout: 252 seconds).
12:50:15 <b_jonas> “probably the most practical way of making an area accessible is to pour magma over it” -- hehe, sounds strange
12:57:44 -!- izabera has changed nick to greybera.
12:58:47 -!- zadock has joined.
13:02:21 -!- idris-bot has quit (Ping timeout: 245 seconds).
13:02:51 -!- Melvar has quit (Ping timeout: 264 seconds).
13:09:16 <ais523> b_jonas: dwarf fortress?
13:10:18 -!- zadock has quit (Ping timeout: 265 seconds).
13:11:10 -!- Melvar has joined.
13:11:41 -!- idris-bot has joined.
13:12:50 -!- greybera has changed nick to izabera.
13:18:57 <fizzie> "The Black Buoy has been painted yellow to avoid collisions."
13:19:28 <fizzie> Still called the Black Buoy, apparently.
13:20:37 -!- ais523 has quit (Read error: Connection reset by peer).
13:20:45 -!- ais523 has joined.
13:23:20 <orin> Well, it's going well so far. I haven't got down to magma yet, so I'm digging large width drainage channels
13:24:41 <orin> Later if I get magma, I'll pour it over the edges where the water comes in, so I can excavate more
13:27:09 <orin> So far some of the seabed is at 1-2
13:29:58 <orin> The next one I'm opening is 15 squares wide
13:32:22 -!- dianne has joined.
13:36:44 <orin> (that is, the entring wter is 15 wide, so the drain needs to be nearby and 15 wide)
13:38:42 -!- nszceta has quit (Quit: Textual IRC Client: www.textualapp.com).
13:39:53 -!- nszceta has joined.
13:42:30 -!- ais523 has quit.
13:43:39 <orin> I guess if magma is !!SCIENCE!! then what I'm doing is !!ENGINEERING!!
13:49:47 <orin> Anyway if all goes well I'll soon have acess to a green ore called "garnierite" which I assume can be smelted into shampoo
13:55:15 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
13:59:57 <orin> http://snag.gy/gHJOc.jpg
14:01:55 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42385&oldid=41658 * Esowiki201529A * (+41) /* vandalismScript */ new section
14:04:00 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42386&oldid=42385 * Esowiki201529A * (+45) /* vandalismScript */
14:08:02 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42387&oldid=42386 * 101.226.125.113 * (+150) /* VandalismScript */
14:11:54 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42388&oldid=42387 * Esowiki201529A * (+0) /* Hello, World */
14:17:02 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42389&oldid=42388 * Esowiki201529A * (+36) /* VandalismScript */
14:22:44 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42390&oldid=42389 * Esowiki201529A * (+28) /* Cat Program */
14:26:56 <HackEgo> [wiki] [[User talk:Esowiki201529A]] http://esolangs.org/w/index.php?diff=42391&oldid=42390 * Esowiki201529A * (+14) /* Hello, World! */
14:36:45 <HackEgo> [wiki] [[Folder]] http://esolangs.org/w/index.php?diff=42392&oldid=42384 * Esowiki201529A * (-1528) 命名冲突
14:40:03 <HackEgo> [wiki] [[Folder]] http://esolangs.org/w/index.php?diff=42393&oldid=42392 * Esowiki201529A * (+1528) Undo revision 42392 by [[Special:Contributions/Esowiki201529A|Esowiki201529A]] ([[User talk:Esowiki201529A|talk]])
14:49:52 -!- bixnode has quit (Ping timeout: 276 seconds).
14:53:56 -!- EVANGELIS has joined.
14:57:45 -!- EVANGELIS has left.
15:10:22 -!- codeitagile has joined.
15:40:52 -!- copumpkin has joined.
15:52:58 -!- GeekDude has joined.
16:21:45 <HackEgo> [wiki] [[Hexadecimal Stacking Pseudo-Assembly Language]] http://esolangs.org/w/index.php?diff=42394&oldid=42339 * 0x0dea * (+236) Add Ruby interpreter
16:35:54 <orin> Forensic I.T.! My mother lost a ring, so I pointed out we can tell when she lost it by looking at her numreous facebook pictures
16:38:22 <rdococ> !!! wut, some vandal deleted my article and put it back?
16:41:23 <rdococ> I translated the weird comment on the person that deleted the stuff on my article. Translated, it's "Naming conflicts"... Was he meaning to make a language called 'Folder' too?!
16:47:39 <FireFly> I wouldn't worry about it... maybe it was a mistake
16:50:15 <elliott> esowiki201529a makes a lot of weird edits
16:50:41 <elliott> I'm not sure what they're doing.
16:51:03 <elliott> they don't seem to be an obvious vandal. maybe just a non-native speaker with some weird ideas about the wiki >_>
16:51:33 <rdococ> what's that emote at the end for?!
16:51:51 <rdococ> it's not his fault he's a foreign speaker
16:52:00 <elliott> I didn't mean to imply that, sorry.
16:52:41 <elliott> it was more a >_> of "they tried to rename my language out of the blue by editing the page and moving it once" :P
16:53:38 <elliott> (I also didn't think that they might be a non-native speaker before that edit, since all their previous edits were in English if anything.)
16:57:51 <elliott> I suspect the "naming conflict" thing was pointing out that there was already a language called "Folder", anyway.
16:59:04 <b_jonas> I don't think there's a uniqueness requirement for esolang names.
16:59:18 <rdococ> oh right... 'Folders'...
16:59:59 <rdococ> they're pretty different... but this is interestin
17:04:45 <rdococ> well that's certainly interesting
17:09:20 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42395&oldid=42393 * Rdococ * (+24) added distinguish tag because of naming conflicts
17:11:10 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42396&oldid=42395 * Rdococ * (+19) So there's no distinguish tag...
17:15:04 -!- copumpkin has quit (Ping timeout: 244 seconds).
17:15:50 -!- codeitagile has quit (Remote host closed the connection).
17:16:42 <rdococ> uh... is that 'not to be confused with' necessary?
17:21:30 -!- copumpkin has joined.
17:22:16 <HackEgo> [wiki] [[POGAACK]] http://esolangs.org/w/index.php?diff=42397&oldid=41281 * 92.81.166.144 * (+31)
17:29:38 <elliott> it doesn't hurt and might be useful but if you really don't want it there you can remove it
17:30:03 <elliott> I guess it could be confusing because they both have broadly similar concepts.
17:35:20 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42398&oldid=42396 * Rdococ * (-43)
17:35:38 <rdococ> probably should've done some kind of undo function
17:35:47 <rdococ> if there is one, but nevermind
17:36:52 <rdococ> I have an idea... File!
17:38:49 -!- nszceta has quit (Quit: Textual IRC Client: www.textualapp.com).
18:03:04 <orin> History book titles from the future
18:04:05 <rdococ> Folder is such an easy programming language... now I just need a hard one
18:04:09 <orin> ``Trigger Warning, Don't like don't look: The subjective reality of the early 2000s
18:04:39 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `Trigger: not found
18:05:22 <orin> God damn it those are opening quotes not... agh
18:05:27 <rdococ> I wonder, could a language based on algebra and logic be turing complete - or even an unknown computational class?
18:05:50 <orin> Uh, Is prolog turing complete, I forget
18:06:12 <rdococ> I think so, because I read somewhere datalog was supposed not to be
18:06:42 <rdococ> 'pure' prolog, whatever that would mean, yes
18:08:58 <rdococ> !! I know! functional bf?
18:09:41 -!- nszceta has joined.
18:14:24 -!- variable has joined.
18:16:12 <rdococ> what other definitions of programming languages could already be interpreted by applications everyone has?
18:17:25 <rdococ> wait... if you can go on hyperlinks to go to other web pages, could you put links to other program states in a program state written as a .html file?!
18:18:11 <rdococ> so a folder containing HTML files can simulate an FSA.
18:18:26 <rdococ> even if it has no JS, or CSS, etc.
18:18:34 <elliott> there are like ten languages identical to https://esolangs.org/wiki/Text on the wiki
18:19:05 <elliott> I just did; the one I linked. :p
18:19:08 <elliott> https://esolangs.org/wiki/Wiki_Cyclic_Tag is more interesting
18:28:18 <HackEgo> [wiki] [[Object oriented thue]] http://esolangs.org/w/index.php?diff=42399&oldid=40557 * 4D enthusiast * (+263) /* stdio */ added HexOutput & HexInput classes
18:29:33 <HackEgo> [wiki] [[Object oriented thue]] M http://esolangs.org/w/index.php?diff=42400&oldid=42399 * 4D enthusiast * (+0) /* stdtime */ corrected spelling of "hexadecimal"
18:56:01 -!- copumpkin has quit (Ping timeout: 264 seconds).
19:09:54 -!- GeekDude has quit (Remote host closed the connection).
19:14:04 <HackEgo> [wiki] [[Talk:Folder]] M http://esolangs.org/w/index.php?diff=42401&oldid=42381 * Rdococ * (+296) updated discuss page... why did nobody post here
19:24:58 <izabera> can i ask a stupid question about brainfuck?
19:25:22 <int-e> izabera: that was an excellent try
19:26:00 <izabera> well i'm trying to learn it, just what happens when you move the pointer before the 0th cell?
19:26:22 <izabera> is the tape supposed to be infinite in both directions?
19:26:37 <int-e> ah. lovely undefined behavior
19:26:57 <int-e> originally, the tape was onesided. but it depends on the implementation.
19:27:27 <rdococ> I wonder if that makes a difference in the computational class of bf
19:28:17 <izabera> well what's the most common implementation?
19:28:24 <int-e> rdococ: It's Turing-complete either way (assuming an infinite tape).
19:28:38 <rdococ> are you sure it's infinite, or do you mean unbounded?
19:29:25 <rdococ> it would be interesting to see a programming language using infinite tape, such that there's an address 'infinity'
19:29:37 <elliott> izabera: I would treat it as an error
19:29:41 <elliott> I think that is the usual behaviour, too.
19:30:01 <elliott> "right-infinite tape, 8-bit values in cells, 0 on EOF" is what I would consider most standard, personally
19:30:04 <int-e> izabera: I believe most commonly stepping off the tape to the left is either an error, or does really funny things (the implementation used on the anagol site puts input data there...)
19:30:14 <int-e> rdococ: I meant infinite
19:30:16 <elliott> izabera: in some implementations going < lets you access your own source code and modify it(!!)
19:30:30 <int-e> rdococ: that's fine, because the Turing machine is a theoretical construction.
19:30:50 <elliott> (I'm not sure if the modifications actually take effect, but I think they do.)
19:32:21 <izabera> would it be ok for an implementation to only have 2**63-1 cells?
19:32:38 <elliott> it wouldn't be TC but it'd be fine yes
19:32:40 <int-e> (the unbounded/infinite distinction is a silly computer science one; it's silly because in practice, one still runs into address space limits with things of "unbounded" size.)
19:32:42 <elliott> the original only had 30k cells
19:33:01 <elliott> not like there's many people with more than 64 bits of addressable memory
19:33:11 <elliott> (current CPUs can't even address that much if they wanted to)
19:33:30 <rdococ> I wonder if there's such thing as an infinite state automaton, whether it's turing complete or not
19:35:23 <rdococ> you would use regular expressions to define an infinite number of states, and then you could use those regexp-caught areas to transition to another one of many states
19:37:15 <rdococ> e.g. string [x] --- concatenate [y] ---> string [x][y] where [x] and [y] are wildcards
19:37:24 <int-e> Hmm, 48 bits addresses everywhere. (Even ATA addresses 512 byte blocks with 48 bit addresses)
19:37:50 <rdococ> so if the state was 'string derp', going 'concatenate herp' would change the state to 'string derpherp'.
19:39:39 <elliott> izabera: note that if you had a program which went > 2^63-ish times and then did some random stuff it'd "only" take ~97 years to run
19:39:49 <elliott> but since it wouldn't store anything in the cells on the way technically you could run it on a normal machine
19:40:02 <elliott> (e.g., one that uses a hash table to store the tape sparsely, omitting 0s)
19:40:24 <elliott> so there are programs which address a cell past 2^63 without requiring that much addressable memory that we can feasibly run today if we really, really want to
19:40:24 <izabera> i'm writing an interpreter to learn it
19:40:28 <elliott> (this is beyond irrelevant)
19:40:39 <elliott> (~97 years assuming we can move right on the tape at 3 GHz)
19:40:52 <elliott> okay well what about all the people who want to spend 100 years running a useless brainfuck program using bash, izabera. :(
19:41:40 <elliott> my enterprise will not be investing in your software product
19:45:53 <int-e> true, even bitcoins might be a better investment than that...
19:46:12 <Phantom_Hoover> <rdococ> it would be interesting to see a programming language using infinite tape, such that there's an address 'infinity'
19:46:28 <Phantom_Hoover> easy enough, the interesting part is how you get to infinity
19:47:03 <int-e> "^ -- change address to omega^<current address>"
19:47:58 <rdococ> think of it like having unboundedly many unbounded tapes - one starts from 1, another starts from omega, another starts from 2omega^3.
19:48:10 <int-e> (the real problem is that with no way of going down, the operation amounts to just clearing the tape)
19:48:40 <rdococ> you could change address to <current>/omega
19:49:12 <rdococ> so you'd have omega+1, 3omega, 65omega+23, etc. I don't know about exponents though.
19:49:31 <rdococ> in other words, 2d tape
19:49:36 <int-e> (bitcoins, I'm somewhat amazed that the hashing rate is not dropping. oh well...)
19:50:43 <rdococ> if a machine is a feedback system, user --input--> machine --output--> user, why not describe it like that
19:51:14 <rdococ> that could be like an equation or something: y = 3x^2 -- the user puts in a number x, and comes out 3x^2
19:51:15 <Phantom_Hoover> elliott, in the moving right 2^63 times while doing nothing scenario, if you're going to admit hashmaps for tape storage you have to allow for optimisation too
19:51:35 <Phantom_Hoover> so it's probably feasible to do it on a modern machine
19:51:42 <elliott> Phantom_Hoover: sure, but then you get into sticky details of how to actually write a program that does that
19:51:46 <elliott> without it being too big to reasonably store
19:51:56 <elliott> I guess it wouldn't be that hard
19:52:06 <elliott> but you need to leave a trail of 0s behind
19:52:22 <elliott> (basically you wil lneed enough memory to store a 63-bit integer where you are, I guess)
19:52:31 <elliott> but then you're doing fancy stuff and it's harder to optimise away
19:52:39 <elliott> look. let me be a pedant in peace ;_;
19:53:05 <int-e> hmm, leaving a trail of 0s behind isn't so easy... +[->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+]
19:53:25 <int-e> (note loop unrolling for extra efficiency)
19:59:18 <Koen_> int-e: how will that stop à 2^63?
20:01:28 <HackEgo> [wiki] [[Pyth]] http://esolangs.org/w/index.php?diff=42402&oldid=42290 * SuperJedi224 * (+0)
20:01:51 <izabera> will you beta test my interpreter when it's ready?
20:05:34 <int-e> Koen_: why would it stop?
20:15:58 <int-e> elliott: actually we may have to be careful, because state-of-the-art optimizing brainfuck compilers will turn sequences of > signs into a single addition instruction.
20:16:16 <elliott> well they also use finite tapes I think
20:16:36 <elliott> izabera: there are some good test programs like mandelbrot.b you can use to test it
20:16:42 <elliott> (will probably be sloooow in a bash interpreter)
20:16:49 <elliott> I think there are some programs that specifically try to test edge-cases, not sure though
20:23:05 <izabera> what happens if i have [ but no ] ?
20:23:45 <Koen_> well the program shouldn't compile
20:24:04 <Koen_> oh, you're making an interpreter
20:24:21 <Koen_> well, you should probably get a runtime error, then
20:24:37 <Koen_> unless there's some preprocessing before the actual interpreting
20:25:36 <Koen_> you could also implement some non-error behaviour in this case, for instance assume there are an unlimited amount of virtual [ at the beginning of the program and ] at the end, to match the unmatched brackets in the program
20:25:46 <Koen_> but I don't think any brainfuck interpreter does that
20:27:03 * int-e knows implementations where an extra ] terminates the program
20:27:29 <zzo38> Another way is if there is an extra ] then the first extra ] it will treat the rest as input to the program, at the end of the file then it starts reading in the actual input instead.
20:27:44 <int-e> and now that I think about it, missing ] might crash the thing.
20:28:11 <zzo38> (If the program uses the same input stream then the part after ] is the actual input.)
20:28:25 <Koen_> int-e: well, symmetrically, an extra [ should start the program again
20:30:37 -!- Koen_ has quit (Quit: The struct held his beloved integer in his strong, protecting arms, his eyes like sapphire orbs staring into her own. "W-will you... Will you union me?").
20:32:11 -!- zzo38 has quit (Remote host closed the connection).
20:36:22 <izabera> are the cells supposed to be chars?
20:36:44 <izabera> let me rephrase that: does [ loop if the current value is 256?
20:42:10 <HackEgo> [wiki] [[Folder]] M http://esolangs.org/w/index.php?diff=42403&oldid=42398 * Rdococ * (-1) /* Interpreter */
20:42:48 <int-e> izabera: do whatever seems convenient.
20:43:08 <izabera> it's fine either way, just tell me what most other implementations do
20:43:43 <int-e> I don't know. Originally they were chars, but there are plenty of implementations using int, and some using unbounded natural numbers...
20:44:40 -!- AnotherTest has joined.
20:46:05 <elliott> izabera: they are usually 0-255
20:46:13 <elliott> or -128 to 127, whichever interpretation you prefer (they are equivalent)
20:46:23 <elliott> they usually wrap on overflow and underflow
20:46:29 <elliott> though plenty of implementations have bignum cells with no limit
20:46:41 <elliott> and some rarer ones have 16-bit or 32-bit etc., or 8-bit but under/overflow is an error
20:46:54 <elliott> 8-bit wrapping is the most "classic" though
20:47:19 <int-e> the strictest implementation I've seen made decrementing 0 and incrementing 255 errors. (some brainfuck golf competition)
20:47:26 <elliott> generally if you have 8-bit wrapping cells, a right-infinite tape, and , sets the cell to 0 on EOF, then you should be able to run pretty much any program people have written unless they're weirdos
20:48:07 <elliott> but if you're writing a program and want to be really portable and boring, it's probably best to assume that cells are 0-255 and you can't go outside that, and that , either sets to 0 or does no change on EOF
20:48:16 <int-e> (eith they idea that this is the least common denominator of virtually all existing implementations)
20:49:41 <int-e> Oh yes, the three flavors of EOF behavior.
20:49:52 <int-e> (the third is -1 on EOF)
20:50:48 * int-e wants a 9 bit Brainfuck (so that -1 can be distinguished from 255).
20:54:11 -!- nszceta has quit (Quit: Textual IRC Client: www.textualapp.com).
20:54:15 -!- rdococ has quit (Quit: Page closed).
20:56:51 <elliott> int-e: yeah, but you can't be portable to both -1 and 0 on EOF, I don't think
20:56:59 <elliott> zero it and then check for 0 or -1
20:57:04 <elliott> but of course you rule out both 0 and 255 bytes in the input
20:57:24 <elliott> what's the easiest way to loop while not 0 or -1
21:03:09 <int-e> it's too tedious, I think you need auxilliary cells.
21:03:12 -!- copumpkin has joined.
21:05:04 <int-e> Ah, "auxiliary", my old nemesis.
21:06:07 <int-e> copumpkin: is codualization the same as dualization?
21:15:01 <izabera> can you give me a concise hello world or something that prints stuff?
21:15:33 <izabera> ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +++++ .
21:16:08 <izabera> (it does in my interpreter)
21:17:37 <izabera> ok i think i just broke the [ ] but the rest is fine
21:21:44 -!- Naprecks has quit (Quit: ZNC - http://znc.in).
21:25:31 <FireFly> ++++++[->+++++++<]>... should print three asterisks
21:25:31 <FireFly> !bf ++++++[->+++++++<]>... should print three asterisks
21:49:18 <fizzie> Do we have duplicate !bf's?
21:53:13 <izabera> tada http://arin.ga/hpExIX
21:54:17 <fizzie> ^bf [ better error reporting
21:54:32 -!- oerjan has joined.
21:54:37 <elliott> .) printf -v output %o "${tape[cell]}"
21:54:43 <elliott> isn't that the same as printf %o "${tape[cell]}"?
21:55:22 -!- AnotherTest has quit (Remote host closed the connection).
21:56:17 <izabera> well it probably needs to be printf -v output %o "$(( tape[cell] % 256))"
21:56:37 <izabera> it prints the octal in the var "output"
21:57:16 <izabera> `` printf -v output %o 65; printf "\\$output"
21:59:19 <fizzie> `` printf "\\$(printf %o 65)" # arguably slightly streamlined
21:59:52 <fizzie> The whole go-via-octal-escape thing seems silly, but I can't think of anything better offhand either.
22:02:41 <izabera> !bf ok so this is fine, i guess? same code as above but i added <> ++++++[->+++++++<]>...
22:04:16 <oerjan> izabera: you have a , in there but it doesn't matter for the demonstration
22:04:51 <oerjan> a danger of bf commenting
22:07:00 <fizzie> izabera: I don't think it's a fork + exec when the argument is a builtin. Compare http://sprunge.us/PQRO
22:07:39 <oerjan> forks are cheap, aren't they
22:08:10 <izabera> `` echo $(var=3; echo $var); echo $var
22:08:12 * oerjan thought they did copy-on-write sharing
22:09:04 <fizzie> oerjan: There's cheap and then there's cheap.
22:09:30 <oerjan> i will have none of your relativism.
22:09:40 <fizzie> (And okay, there's a clone.)
22:09:44 <izabera> `` time for i in {1..1000}; do printf -v output %o 65; printf "\\$output"; done >/dev/null
22:09:45 <HackEgo> \ real0m0.041s \ user0m0.100s \ sys0m0.000s
22:09:58 <izabera> `` ( time for i in {1..1000}; do printf -v output %o 65; printf "\\$output"; done >/dev/null ) 2>&1
22:09:59 <HackEgo> \ real0m0.045s \ user0m0.000s \ sys0m0.000s
22:10:23 <fizzie> What do you mean, no time?
22:10:53 <izabera> `` TIMEFORMAT='real: %lR, user: %lU, sys: %lS'; ( time for i in {1..1000}; do printf -v output %o 65; printf "\\$output"; done >/dev/null ) 2>&1
22:10:54 <HackEgo> real: 0m0.044s, user: 0m0.210s, sys: 0m0.000s
22:11:05 <fizzie> It looked just fine earlier, too.
22:11:10 <fizzie> I mean, sure, there were some raw tabs.
22:11:22 <izabera> `` TIMEFORMAT='real: %lR, user: %lU, sys: %lS'; ( time for i in {1..1000}; do printf "\\$(printf %o 65)"; done >/dev/null ) 2>&1
22:11:35 <HackEgo> real: 0m12.386s, user: 0m1.980s, sys: 0m9.940s
22:12:06 <fizzie> It's not quite fair to do that particular comparison on the UML box.
22:12:23 <fizzie> I get 0.022s vs 0.364s locally.
22:13:04 <izabera> that's only 15(?) times as much
22:13:22 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: time: not found
22:13:45 <HackEgo> \ real0m0.000s \ user0m0.000s \ sys0m0.000s
22:14:02 <HackEgo> \ real0m0.000s \ user0m0.000s \ sys0m0.000s
22:17:39 <elliott> if you want an expensive fork, try cygwin
22:19:36 * oerjan is getting ambiguous readings on his sarcasm meter
22:20:36 <oerjan> elliott: it just uses Ordinary Exec, no?
22:22:53 * oerjan now is getting ambiguous readings on his confusion vs. groaning meter
22:24:35 <izabera> well i implemented an interpreter in 3 hours
22:24:54 <izabera> i finished it now and it's purrrfect
22:25:22 <oerjan> wait is this brainfuck i'm not up to the logs yet
22:25:45 <oerjan> clearly 3 minutes should be enough for a bf interpreter
22:26:05 <izabera> but this was my first try :(
22:26:20 <izabera> i didn't even know brainfuck before
22:26:39 <oerjan> i made a brainfuck interpreter once, it took me several days i think.
22:26:54 <oerjan> *possibly* because i made it in Fueue.
22:27:28 <fungot> http://esolangs.org/wiki/Fueue
22:28:27 <oerjan> i don't think i've ever made one in a normal language.
22:29:21 <oerjan> although i've implemented at least one brainfuck derivative
22:30:28 * oerjan is a pretty slow programmer and would never make a time estimate in earnest btw
22:30:38 <fizzie> izabera: Doesn't the handling of [ leave extra stuff in the 'loop' array when []s are skipped?
22:31:07 <oerjan> damn ventilation is making that noise again
22:32:01 <fizzie> izabera: Um. Not really, or at least one where it'd make a difference. But I still think you want to do loop+=(i) only in the else of the if (( tape[cell] % 256 == 0 )) test.
22:34:48 <fizzie> ^bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++[-<.>>[]<]
22:34:52 <fizzie> I think that might be an example.
22:35:17 <elliott> izabera: everyone picking on you :P
22:36:26 <fizzie> Yes, I assume it's jumping to the opening [ of the [].
22:36:52 <fizzie> (It will be easy to fix.)
22:37:02 <fizzie> (Because I just fixed it.)
22:40:37 <elliott> izabera: so when will you do an optimising BF compiler in bash >_>
22:40:40 <fizzie> That might be the longest bash script I've ever seen that doesn't actually execute any commands.
22:41:08 <izabera> elliott: are you talking about that optimizing compiler written in sed?
22:41:13 <fizzie> Or I guess in bash terminology the builtins are still "commands", but you know what I mean.
22:41:35 <elliott> izabera: not about one in sed in particular
22:41:48 <izabera> a compiler is out of reach for now :P
22:41:50 <elliott> there's tons of optimising BF copilers, some of them are quite impressive (can compile a hello world make with loops to just printf("Hello, world!\n");)
22:42:44 <elliott> it's actually easier to write a non-optimising BF compiler than an interpreter
22:42:53 <elliott> since you can just turn [ into while (tape[ptr]) or whatever, it's string substitution
22:42:57 <izabera> i'm still trying to fix something, it stops at the first NUL byte it reads with cat :(
22:42:59 <elliott> not very interesting though
22:43:30 <elliott> you can set EOF as -1 (255) but then it fails on other binary data
22:44:04 <elliott> it's purrfect because it runs cat, right?
22:44:16 <elliott> I hope that wasn't your joke because it's a good one and I want to be the one to make it.
22:44:21 <izabera> it's purrfect because it runs +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++[-<.>>[]<]
22:44:33 <elliott> that does not look like a cat. I doubt it purrs.
22:45:02 <elliott> you just don't appreciate my jokes.
22:45:56 <fizzie> izabera: I think you should probably try LostKng.b, it's the standard stress test for brainfuck stuff.
22:46:09 -!- llue has quit (Quit: That's what she said).
22:46:10 <oerjan> <elliott> izabera: everyone picking on you :P <-- the bastards!
22:46:15 <elliott> does LostKng actually use wrapping?
22:46:19 -!- llue has joined.
22:46:48 <elliott> "<fizzie> izabera: I think you should probably try LostKng.b, it's the standard stress test for brainfuck stuff. -!- llue [~gnomebad@unaffiliated/lleu] has quit [Quit: That's what she said]" she made recommendations as to what brainfuck programs to try, I guess
22:47:06 <elliott> izabera: https://github.com/graue/esofiles/tree/master/brainfuck/src
22:47:12 <elliott> oh that doesn't have lostkng
22:47:23 <fizzie> And http://web.archive.org/web/20111031121638/http://jonripley.com/i-fiction/games/LostKingdomBF.html for that.
22:47:33 <fizzie> But the other archive is quite nice too.
22:47:34 <elliott> https://raw.githubusercontent.com/rdebath/LostKingdom/gh-pages/LostKng.b
22:47:37 <izabera> is that something that takes a while?
22:47:43 <izabera> cause my interpreter is _slow_
22:47:48 <elliott> LostKng.b shouldn't be too slow
22:48:01 <fizzie> It's a biggish program, though.
22:48:21 <fizzie> (It wasn't written by hand.)
22:56:09 -!- vodkode_ has joined.
22:59:10 <izabera> is this slow? https://raw.githubusercontent.com/graue/esofiles/master/brainfuck/src/rot13.b
22:59:25 <izabera> $ time echo xyz | ./bf rot13.b
22:59:29 <izabera> real: 0m16.023s, user: 0m15.983s, sys: 0m0.013s
23:06:03 <elliott> 16 seconds to rot-13 one line?
23:06:08 <elliott> I didn't know bash was THAT slow
23:06:26 <izabera> it's rot13ing only 4 characters XD
23:06:28 <elliott> would it be faster if you compiled to bash and then evalled it
23:08:46 <elliott> that was a sincere question!
23:10:09 <elliott> I guess I don't know how bash's interpretation works
23:10:17 <elliott> does it do any kind of pre-parsing at all?
23:11:32 <elliott> like, does bash parse functions into an AST?
23:11:52 <elliott> or does it store them as strings/lists of tokens and parse/execute them token by token every time you execute a function
23:12:17 <izabera> no it's parsed when it's read
23:12:18 <elliott> if it parses into an actual AST or bytecode data structure that can be interpreted more efficiently then I guess compile-and-eval would be faster
23:12:41 <izabera> that's why you basically can't use aliases in functions
23:13:07 <elliott> does it use the aliases you had at the time of parsing, or?
23:13:08 <izabera> aliases are expanded when the definition is read, not when it's called
23:13:27 <elliott> you know too much about this horrible language :P
23:14:19 <izabera> i'd rather have a faster interpreter but heh
23:15:48 <izabera> also there are errors in the parser...
23:16:04 <elliott> no kidding, those errors get CVEs :p
23:16:34 <izabera> i mean sure, shellshock got famous but there are other errors
23:17:19 <izabera> like, ${var[0] i basically can write whatever i want here and bash will never complain}
23:18:55 <HackEgo> bash: line 0: printf: warning: `.': invalid time format specification \ bash: line 0: printf: `H': invalid format character \ %(
23:19:16 <izabera> `` printf "%(%H:%M and now let's escape a left parentheses \) )T"
23:19:17 <HackEgo> bash: line 0: printf: warning: ` ': invalid time format specification \ bash: line 0: printf: `H': invalid format character \ %(
23:19:46 <izabera> this one shouldn't produce an error but bash basically shuts its brain in %()T
23:21:37 <elliott> well, there's no spec other than bash itself, right
23:21:41 <elliott> so I guess anything it does is okay by definition
23:21:51 <izabera> there are specs for posix sh
23:22:27 <izabera> bash does a good job about those :)
23:23:11 <izabera> i'll just throw a link in here for you to star <.< https://github.com/izabera/bf
23:25:34 <elliott> I haven't logged into github in, like, years.
23:26:49 <elliott> can you even write a bf interpreter in pure posix sh?
23:26:54 <elliott> without anything that can be a non-builtin
23:27:17 <izabera> posix sh has no arrays other than the positional parameters
23:27:27 <elliott> you could store the tape in a string if you could mangle the format enough, I guess?
23:27:39 <elliott> or just use positional parameters. there's probably some rather low guaranteed limit on those though
23:28:24 <izabera> parsing a line character by character is painful...
23:29:02 <elliott> well, nobody said it would be easy >_>
23:29:17 -!- variable has quit (Quit: 1 found in /dev/zero).
23:29:47 <elliott> does your ] jump back to the [ or the instruction after the [?
23:30:01 <elliott> if the former, then I guess it'd be wasting time looking for the ] every iteration? and that could explain why rot13 was so slow
23:30:52 -!- variable has joined.
23:31:09 <izabera> i'm already jumping after the [ :(
23:32:28 <elliott> I don't suppose bash has a profiler :p
23:32:55 <izabera> no profilers yet i'm afraid
23:33:34 <elliott> izabera: your interpreter doesn't do - on 0 -> 255
23:34:15 <elliott> okay but it doesn't support -- on 0
23:34:20 <elliott> (it's probably easiesr to store the cells pre-moduloed; I think your way will also break once you exceed bash's numerical limts?)
23:34:32 <elliott> (as in just do x = (x +- 1) % 256 for both)
23:35:36 <izabera> the problem is that $(( -1 % 256 )) == -1
23:35:50 <izabera> ok i'll just add 256 before the modulus
23:36:23 <elliott> ugh, yeah, that's annoying
23:36:28 <elliott> you can also condition on 0 and 255 which might be easier
23:37:42 <elliott> I admit that ${INTEGERCELLS-% 256} is cute though
23:38:06 <izabera> # set it to an empty value if it's set to avoid messing with the math expansion
23:38:06 -!- vodkode_ has quit (Ping timeout: 255 seconds).
23:38:08 <izabera> if [[ $INTEGERCELLS ]]; then INTEGERCELLS= ; fi
23:38:24 <elliott> don't you want an extensible program??
23:38:42 <elliott> you could use INTEGERCELLS to implement, like, boolfuck :P
23:39:05 <elliott> like brainfuck with a tape of bools
23:39:19 <elliott> it's "the obvious thing", modulo IO being a bit of a fuss since it's bitwise
23:39:26 <elliott> + and - get merged into a flip operation
23:45:10 <elliott> izabera: if you do +, say, 2^32 + 1 times, does it still work with your implementation?
23:45:13 <elliott> like does bash have bignums
23:45:18 <elliott> if not then it could break with long-running programs