00:18:10 -!- hakatashi1 has joined. 00:18:37 -!- hakatashi has quit (Read error: Connection reset by peer). 00:19:09 OK, I have a solution to NP. 00:22:15 What solution is that? 00:22:53 You have f : 2^k -> 2 and you're looking for x such that f(x) = 1 00:23:05 You have k prisms. 00:23:32 You activate prisms until you've either activated k, or seen a blue light, and then you stop. 00:24:25 Then you have a partial bit string, where each R corresponds to 0, B corresponds to 1, and the rest of the bits are unknown. 00:25:18 You ask your B prism what the rest of the bits are, and then you pass that information on to each of your R prisms, along with your known bits. 00:25:44 Now you have a full bit string and you can test f on it. If f(x) = 1, you tell all your prisms you find a solution, and then they pass it on to their prisms, and so on. 00:26:09 There are 2^k/2 worlds that just got a B, 2^k/4 worlds that got RB, and so on. 00:39:42 -!- sprocklem has quit (Read error: Connection reset by peer). 00:41:14 -!- sprocklem has joined. 00:44:59 I guess I don't understand the premise. If you stop activating prisms at the first blue flash, wouldn't you only have (for n=4) only the five worlds that saw the sequences B, RB, RRB, RRRB and RRRR? 00:47:22 Oh, I guess it doesn't work that way, because all those other worlds must have a different single-B world to talk to. 00:47:31 Weird stuff, though. 00:49:19 Right. I think that if you split yourself once into A and B, and then B activates a prism to split into C and D, there must be two copies of A as well. 00:49:30 One connected to C and one connected to D. 00:49:55 hm 00:49:55 So if you just indiscriminately activate k prisms, you get 2^(2^k-1) worlds, or something. 00:50:07 because A can talk to the original who can talk to B who can talk to C and D? 00:50:09 hm 00:50:14 it's confusing 00:50:19 can you implement this? 00:50:41 What do you mean, original? 00:51:09 Say you take this action: You activate prism 1 and, if it flashes red, you activate prism 2. 00:51:27 If it flashes blue, you type "What color did prism 2 flash?" into it. 00:52:22 The way I was thinking about it, after the split to C and D, they both still have that first prism, which can't both talk to A, so there must be A_C and A_D. 00:52:37 Right. 00:52:48 I think that's the only reasonable answer. 00:53:02 Effectively A is part of B's universe, so when B splits, A must split too. 00:56:20 -!- oerjan has joined. 01:13:32 So it's not really a directed binary tree of worlds where each of the non-leaf node represents a prism activation in the past, but rather it's an undirected tree of worlds, and every time any node activates a prism, you make a copy of the entire tree and link the (now two) prism-activating worlds together with an edge that represents what that prism connects. 01:38:34 [[Resource]] N https://esolangs.org/w/index.php?oldid=66352 * A * (+286) Created page with "[[Resource]] ([Re]stricted [source]) is a [[queue]]-based [[Esoteric programming language|EPL]] created with restricted source challenges in mind. It currently sucks at these..." 01:42:52 I think it's also always a connected subgraph of Q_n (where n is the total number of prism activations that have happened in the multiverse) with all the vertices but only some of the edges. And since you're arranged for there to be n activations overall, the standard n-bit string labels of Q_n will probably be the n-bit inputs of your f. 01:42:57 I've convinced myself that works. Can you buy these prisms on Amazon? 01:43:32 Can you invent a esolang based on this? 01:44:22 Sounds like you should be able to. 01:44:26 i need some diagrams 01:44:31 and yeah 01:44:34 it sounds like a fun esolang 01:44:40 or an esolib for some other language 01:45:04 (Got to sleep now.) 01:45:16 [[Resource]] M https://esolangs.org/w/index.php?diff=66353&oldid=66352 * A * (+683) 01:45:29 'night fizzie 01:45:43 shachaf: smells like a continuation / monad, maybe 01:45:55 i mean, you can probably implement this evaluation model using one of those 01:47:15 -!- Sgeo has joined. 01:56:58 [[Resource]] M https://esolangs.org/w/index.php?diff=66354&oldid=66353 * A * (+589) 01:59:29 [[Resource]] M https://esolangs.org/w/index.php?diff=66355&oldid=66354 * A * (+36) I have to be busy for a while 01:59:59 [[Resource]] M https://esolangs.org/w/index.php?diff=66356&oldid=66355 * A * (+85) /* Instructions */ 02:08:08 Yes, maybe, you can try to do in Haskell, to see if it work 02:09:09 imo implement it with fork() and pipes 02:09:41 like that thing i did in a past life 02:11:27 shachaf: oh, did you read _Recursion_ by Blake Crouch 02:11:56 highly recommend 02:13:40 forgot if i already recommended it 02:13:52 have not read it or heard of it 02:14:07 did you play the puzzle game Recursed 02:15:27 no 02:17:24 what's it like 02:18:29 recursive 02:18:42 you can jump into boxes that contain copies of rooms and so on 02:44:16 -!- rodgort has quit (Ping timeout: 265 seconds). 02:45:08 -!- rodgort has joined. 02:49:22 -!- Lykaina has joined. 03:20:53 [[Resource]] M https://esolangs.org/w/index.php?diff=66357&oldid=66356 * A * (+52) 03:32:30 [[Resource]] M https://esolangs.org/w/index.php?diff=66358&oldid=66357 * A * (+51) /* Implementation */ Okay 03:34:03 [[Language list]] M https://esolangs.org/w/index.php?diff=66359&oldid=66342 * A * (+15) /* C */ Add the relatively interesting language 03:50:52 -!- zzo38 has quit (Ping timeout: 245 seconds). 03:54:04 -!- zzo38 has joined. 03:54:56 -!- xkapastel has joined. 03:57:21 On Monday when I played GURPS game, I used the word "wabe", which was used by Lewis Carroll before, isn't it? 04:27:52 'twas brillig, and the slithy toves did gyre and gimble in the wabe 04:28:47 wow i spelled that correctly 04:30:18 I think what they said is that "wabe" refers to the grass plot around a sundial, and this is the way it was used in the GURPS game. 04:30:29 `grWp wabe 04:30:30 eol:EOL stands for End Of Lawn. It's often found past the wabe. oerjan requests your presence there immediately. 04:47:27 -!- QazNotQuaz has joined. 04:47:57 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 04:51:03 -!- Lord_of_Life has joined. 04:57:15 I wrote unreferenced footnotes, recursive footnotes, footnotes that themself have footnotes, footnote references without a corresponding footnote, footnotes numbered in unusual ways, and then there is footnote 2 on session 19; what other stuff with the footnotes would there be? 05:07:16 -!- QazNotQuaz has quit (Remote host closed the connection). 05:12:42 [[Resource]] M https://esolangs.org/w/index.php?diff=66360&oldid=66358 * A * (+652) /* DISCHARM THE B.O.M.B.! */ 05:15:01 [[Resource]] M https://esolangs.org/w/index.php?diff=66361&oldid=66360 * A * (+378) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */ 05:17:49 [[Resource]] M https://esolangs.org/w/index.php?diff=66362&oldid=66361 * A * (+39) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */ 05:38:41 `cat bin/grWp 05:38:42 grwp -i "$@" 05:38:49 `cat bin/grwp 05:38:50 ​#! /bin/bash \ cd wisdom; shopt -s dotglob; grep -R "$@" -- * 05:39:12 `` ls wisdom | paste 05:39:13 https://hack.esolangs.org/tmp/paste/paste.7592 05:39:26 `` /bin/ls wisdom | paste 05:39:27 https://hack.esolangs.org/tmp/paste/paste.12817 05:39:41 that's a lot of wisdom 05:40:45 `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)" 05:40:46 augur took no cakes, but he's a linguist. 05:40:48 `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)" 05:40:49 Nothing happens. 05:40:51 `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)" 05:40:51 Everything's better with `mk. 05:41:30 `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w" 05:41:31 ​🐐: 🐐 <(Unicode goat laments your inability to render Unicode goat.) 05:41:34 `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w" 05:41:35 wisdom.pdf: Nicely formatted classical wisdoms and quotes book at https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf 05:41:39 `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w" 05:41:40 roborosewater: RoboRosewater is generating random Magic: the Gathering cards, see https://mobile.twitter.com/roborosewater 05:42:35 `w 05:42:35 ​baba//BABA IS ¯\(°​_o)/¯ 05:42:42 `5 w 05:42:44 1/2:synergy//Synergy is when the whole is greater than the sum of its parts. A possible future Uncontrolled Synergy Scenario is a looming existential threat to humanity. \ orin//orin is oren's evil twin, stalking him from the other side of the international date line. \ england//England is a conspiracy of cartographers. \ comedogenic//comedogenic is something that causes comedy when applied to the skin, e.g. an accelerated cream pie in parabolic 05:42:46 `n 05:42:46 2/2:motion. \ cuisine//Cuisine is the posh cousin of cooking. 05:43:05 `` paste < bin/w 05:43:06 https://hack.esolangs.org/tmp/paste/paste.22039 05:43:13 `` paste < bin/wisdom 05:43:13 https://hack.esolangs.org/tmp/paste/paste.20622 05:43:39 bot 05:43:42 `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w" 05:43:42 smileyiese: smileyieses is the plural of smiley. 05:44:59 `w mushroom 05:44:59 ​mushroom//A mushroom is a fungus that grows above ground, especially after rain. 05:45:01 `cbt w 05:45:02 wisdom "$@" 05:45:04 `cbt wisdom 05:45:06 ​#!/bin/sh \ f=$(find wisdom -ipath "wisdom/*$1*" -type f -print0 | shuf --random-source=/dev/urandom -z -n1); if [ -n "$f" ]; then echo -n "${f#wisdom/}//"; cat "$f"; else echo "That's not wise."; fi | rnooodl 05:45:14 `cbt bin/cbt 05:45:15 cat: bin/bin/cbt: No such file or directory 05:45:22 `cbt cbt 05:45:22 cat bin/"$1" 05:45:33 some p. fancy aliases here 05:45:40 `` ls bin | paste 05:45:41 https://hack.esolangs.org/tmp/paste/paste.25458 05:46:08 `` wc -l bin/* | sort -nr | paste 05:46:10 https://hack.esolangs.org/tmp/paste/paste.18402 05:46:32 `` wc -c bin/* | sort -nr | paste 05:46:33 https://hack.esolangs.org/tmp/paste/paste.19174 05:46:50 `file bin/udcli 05:46:51 bin/udcli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, BuildID[sha1]=de5daa4389e466f31e31fde064e80be5907986ba, stripped 05:47:03 `` file bin/* | paste 05:47:06 https://hack.esolangs.org/tmp/paste/paste.6883 05:47:39 `` file bin/* | cut -d: -f2- | sort | uniq -c | sort 05:47:41 ​ 11 ASCII text \ 12 POSIX shell script, ASCII text executable \ 12 POSIX shell script, ASCII text executable \ 13 ASCII text \ 13 ASCII text \ 14 POSIX shell script, ASCII text executable \ 15 ASCII text \ 1 a /bin/dash script, ASCII te 05:47:41 `` file bin/* | cut -d: -f2- | sort | uniq -c | sort -nr | paste 05:47:43 [[Resource]] M https://esolangs.org/w/index.php?diff=66363&oldid=66362 * A * (+214) /* Explanation */ 05:47:44 https://hack.esolangs.org/tmp/paste/paste.25767 05:47:51 lol 05:48:29 a momentary diversion on the road to the grave 05:48:38 * kmc hugs HackEso 05:48:38 `dobg udcli 05:48:40 4426:2014-02-09 mv udcli bin/ && chmod +x bin/udcli 05:49:43 `doag udcli 05:49:45 4426:2014-02-09 mv udcli bin/ && chmod +x bin/udcli \ 4425:2014-02-09 fetch http://ugcs.net/~keegan/drop/udcli 05:50:27 so weird 05:50:29 being alive 05:50:35 time passing, etc 05:50:59 when did i first set foot in this channel? 05:51:07 2009? 05:51:16 The passing of time confuses and infuriates me. 05:51:23 not sure if it was because of shachaf or cheater 05:51:40 [[Resource]] M https://esolangs.org/w/index.php?diff=66364&oldid=66363 * A * (+50) No comments though. :( 06:03:56 -!- xkapastel has quit (Quit: Connection closed for inactivity). 06:35:54 -!- oerjan has quit (Quit: Nite). 06:40:49 [[Resource]] M https://esolangs.org/w/index.php?diff=66365&oldid=66364 * A * (-19) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */ 06:42:27 [[Resource]] M https://esolangs.org/w/index.php?diff=66366&oldid=66365 * A * (+22) /* Salary program */ 06:42:55 [[Resource]] M https://esolangs.org/w/index.php?diff=66367&oldid=66366 * A * (+0) /* Salary program */ 06:46:57 [[Resource]] M https://esolangs.org/w/index.php?diff=66368&oldid=66367 * A * (+0) /* Salary program */ 06:55:17 [[Resource]] M https://esolangs.org/w/index.php?diff=66369&oldid=66368 * A * (+0) /* Salary program */ 07:53:52 [[Resource]] M https://esolangs.org/w/index.php?diff=66370&oldid=66369 * A * (+59) 08:28:20 hello 08:28:35 let us define x = y to mean that for all contexts C, C[x] halts iff C[y] halts 08:28:48 what do you think about this? 08:29:18 it could be used for a notion of observational equality or to differentiate between expressions in a programming language 08:42:25 -!- MDead has joined. 08:44:50 -!- MDude has quit (Ping timeout: 265 seconds). 08:44:54 -!- MDude has joined. 08:45:06 [[Talk:Woefully]] https://esolangs.org/w/index.php?diff=66371&oldid=52059 * Kritixilithos * (+1545) turing-completeness? 08:47:17 -!- MDead has quit (Ping timeout: 240 seconds). 09:27:11 -!- xkapastel has joined. 09:30:36 -!- Sgeo_ has joined. 09:34:08 -!- Sgeo has quit (Ping timeout: 265 seconds). 10:01:08 rain2: In lambda calculus that's "observational equivalence wrt normal forms" (or whatever your precise notion of "halting" is) 10:03:11 `? rpm 10:03:12 rpm? ¯\(°​_o)/¯ 10:03:45 `learn RPM is short for "rapid piece movement", a phenomenon often seen in bullet chess. 10:03:47 Learned 'rpm': RPM is short for "rapid piece movement", a phenomenon often seen in bullet chess. 10:08:53 rain2: I don't know who first studied this kind of things. Böhm is a strong candidate, but far from the only one. 10:09:12 OK 10:10:07 -!- APic has quit (Ping timeout: 268 seconds). 10:32:38 -!- APic has joined. 11:28:49 [[Mice in a maze]] https://esolangs.org/w/index.php?diff=66372&oldid=58069 * TwilightSparkle * (+179) Infinite Loop 11:29:49 [[Mice in a maze]] M https://esolangs.org/w/index.php?diff=66373&oldid=66372 * TwilightSparkle * (+30) /* Infinite Loop */ 12:16:47 -!- arseniiv has joined. 12:27:58 [[Resource]] https://esolangs.org/w/index.php?diff=66374&oldid=66370 * A * (+97) /* DISCHARM THE B.O.M.B.! */ I am glad that this works 12:46:53 -!- xkapastel has quit (Quit: Connection closed for inactivity). 13:38:37 -!- Sgeo__ has joined. 13:42:15 -!- Sgeo_ has quit (Ping timeout: 268 seconds). 13:53:25 [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66375&oldid=62527 * TonyBrown148 * (+637) /* TonyBrown148's attempt */ 3 command 13:54:10 [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66376&oldid=66375 * TonyBrown148 * (-1) /* TonyBrown148's attempt */ 13:57:30 [[Resource]] https://esolangs.org/w/index.php?diff=66377&oldid=66374 * A * (-2) /* DISCHARM THE B.O.M.B.! */ 13:59:49 [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66378&oldid=66376 * A * (-540) /* Iamcalledbob's attempt */ 14:00:35 [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66379&oldid=66378 * A * (+540) Undo revision 66378 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]) 14:00:49 [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66380&oldid=66379 * A * (-540) Undo revision 66379 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]) 14:01:20 [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66381&oldid=66380 * A * (+540) Undo revision 66380 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]) 14:01:35 [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66382&oldid=66381 * TonyBrown148 * (+239) /* TonyBrown148's attempt */ 2 command 14:06:05 [[Resource]] https://esolangs.org/w/index.php?diff=66383&oldid=66377 * A * (+71) Oh no, what will they say? 14:08:39 [[Resource]] M https://esolangs.org/w/index.php?diff=66384&oldid=66383 * A * (-1) /* Implementation */ This happenedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 14:41:21 [[Resource]] https://esolangs.org/w/index.php?diff=66385&oldid=66384 * A * (+0) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */ Opposite! 15:17:14 -!- MDude has quit (Ping timeout: 240 seconds). 15:36:02 -!- APic has quit (Ping timeout: 240 seconds). 15:36:28 -!- APic has joined. 16:00:42 -!- xkapastel has joined. 16:27:57 -!- APic has quit (Ping timeout: 245 seconds). 16:31:50 -!- APic has joined. 16:32:37 -!- Sgeo_ has joined. 16:35:36 -!- Sgeo__ has quit (Ping timeout: 240 seconds). 16:44:21 hey 16:44:34 someone here wrote a terminal emulator i think 16:45:12 was it oerjan? 16:45:39 * FireFly wonders if there's an actual question hidden behind the statement 16:47:15 -!- Lord_of_Life_ has joined. 16:50:02 -!- Lord_of_Life has quit (Ping timeout: 245 seconds). 16:50:08 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 16:50:48 i'm writing a thingy 16:51:03 that needs some special escape sequences 16:51:28 and i've been reading https://invisible-island.net/xterm/ctlseqs/ctlseqs.html for a while without finding what i can use for my custom sequences 16:54:34 I think you could use OSC in theory 16:55:20 There's a ##tty which has some knowledgeable folks, I'd think LeoNerd would know since they have a fair buncha terminal emulation experience (both on the terminal emulator side and the application side) 16:56:57 There's also other space for more extravagant custom CSI-prefixed escape seqs I think, in the grammar for them that ECMA-48 specifies 16:57:32 (ECMA-48 also has an ANSI and an ISO/IEC name, but apart from being easier to remember, it's also helpful that ECMA releases their pdfs for free so you can just google it and grab the spec) 16:58:30 There is a grammar for escape seqs starting with CSI that is basically.. CSI followed by intermediate bytes followed by parameter bytes followed by a terminating byte.. and I think most of the space where you add intermediate bytes is unoccupied/unused 16:58:37 What special escape sequences do you need? 16:58:47 ^ also wondering that, because it sounds interesting :) 16:59:54 oh whoops, it's parameter then intermediate then final byte 17:00:25 http://xen.firefly.nu/up/2019-09-28_190010.png (from ECMA-48) 17:01:10 I think most escape seqs are either using no intermediate byte, or just a '?', but there's more room for other more exotic intermediate byte values, or extending it to more than one byte.. 17:01:57 (they express bytes funnily, but really e.g. 07/14 is just 0x7E, etc in that excerpt) 17:02:58 thanks FireFly! 17:03:21 i had little success in the past asking in ##tty 17:04:25 Is it acceptable to put two question marks instead of just one? 17:05:12 I know someone who wrote a terminal emulator, but isn't in this channel. 17:05:28 I had a bunch of ideas of what I'd like a terminal emulator to be like and I was considering writing it. 17:05:38 It'd be more a combination terminal emulator/shell, probably. 17:05:39 zzo38: yes 17:05:50 shachaf: I'm curious (I've had ideas along these lines) 17:07:12 Hmm, I don't remember the details anymore. I could find old chat logs where I talked about them probably. 17:07:38 I think each command should be able to run independently, with its own output stream/pty. 17:07:58 okay, this sounds a lot like thoughts I've had :p 17:08:02 And the shell/terminal emulator interface should be much richer than a text interface. 17:08:04 like scarily similar 17:08:34 The terminal emulator should just automatically "time" every command and remember a bunch of information about it, which you can get through the UI. 17:09:34 Golly. 17:09:59 A thing I use a lot right now is ^Z/fg. 17:10:13 job control is sweet 17:10:24 Instead of that I'd like to just keep an old command running and type into a prompt underneath it which will have its own pty. 17:10:29 -!- APic has quit (Ping timeout: 276 seconds). 17:10:34 *nod* 17:10:43 so i have this idea 17:10:45 I'd like each command to have its own searchable output buffer, rather than piping things into less. 17:10:58 my program is a shell manager thingy 17:11:47 FireFly: Since your program is identical to mine in every respect, you should implement it so I don't have to, twh 17:12:24 I was kind of going to do this, but first I needed to write my own UI library, so I started doing that, but then I wanted to make my own programming language for it. 17:12:29 You know, the usual story. 17:13:33 -!- APic has joined. 17:13:42 https://pbs.twimg.com/media/DJXrLg2XoAAJcfd?format=png&name=medium here's an old random mockup of some of my thoughts (the point here isn't really the visual bits of the UI, but more having a command-line interface (as opposed to a "your terminal is a gird of character cells") where each job gets its own usual-character-grid output block (for compat reasons and whatnot if nothing else, because I wouldn't 17:13:42 want to reinvent everything here) 17:14:32 FireFly: Also have you seen mzero's old project plush? 17:14:37 nope 17:14:48 https://github.com/mzero/plush 17:15:15 It's not quite the thing I want but it might be the closest someone has made. 17:15:19 w*nod* 17:15:24 -w 17:16:37 I went to a talk about it and he talked about all the things I'm sure you've thought of too, like how ridiculous it is to press enter a bunch of times to fill the screen with prompts so you can see where a command started when you scroll up. 17:16:58 *nod* 17:17:23 Anyway I don't want a web UI, obviously. 17:17:30 sure 17:18:41 Can the terminal emulator determine the process ID of the foreground process? 17:18:44 The way I thought about my interface, it should have worked with (existing) TUI apps as well (like htop, vim etc) 17:18:46 Anyway, I agree, each command should probably get its own TTY grid interface, but there's no reason for the shell to limit itself that way. 17:19:11 zzo38: I'm pretty sure it couldn't typically in a terminal emulator today 17:19:13 Instead the shell should probably be exposed as an API that the TTY can call. 17:20:14 I agree that it should work with things like htop and vim. For those uses it could just start a full pty (and maybe have a pool of them that it reuses -- I looked into this a bit and it's kind of a mess). 17:20:21 The way I imagined it was to add a few extra escape sequences (in a way that they should be possible for existing terminal emulators to just silently ignore, if they have spec-compliant escape seq parsers) to annotate the stream of data from the shell with some extra in-band metadata 17:20:45 and the most critical bit would be to somehow encode in-band which job (or process or whatever) is producing a certain segment of output 17:20:49 I feel like the shell should just totally break compatibility. It's not compatible with any other terminals, and why should it be? 17:20:57 In-band signaling is scow anyway. 17:21:01 fair 17:21:14 If you want you can use the fancy shell API to implement a simple text-based mode like normal shells. 17:21:40 I don't think I'd do separate pty's per se 17:21:42 maybe 17:21:45 Anyway presumably when you start vim you want it to take over the entire window by default, but you also want to be able to get a prompt, *without* suspending vim. 17:21:47 I don't really know.. heh 17:22:08 One thing that I do a lot is: Edit a program in my editor; ^Z and run the program; fg 17:22:14 yeah, same here 17:22:20 Except if the program is a long-running process, I'm stuck outside of my editor. 17:22:34 It's silly. I don't actually want to suspend the editor, I just want a shell prompt. 17:22:42 well you could ^Z and bg the long-running job, and then fg vim :P 17:22:46 but I get what you mean 17:22:48 (Which is "associated" with the editor in some way, not the same window.) 17:22:58 Sure, but say I'm timing the long-running job or something. 17:23:12 *nod* 17:23:27 Or say I want to look at the code while I type text into an interactive program. 17:23:48 It's just that ^Z/fg isn't really what I want almost all the time. I just want better multiplexing in my terminal. 17:23:50 I would definitely want to be able to run multiple TUI programs at once, and just switch which one I'm sending input to as the 'foreground' 17:23:56 right 17:24:19 anyway, I'm unlikely to actually implement my thoughts, but heh, they're fun to ponder 17:24:23 I also want all the other things like scrolling/searching the output of just one command. 17:24:36 It seems like a pretty basic desideratum in 2019. 17:24:49 mm 17:26:38 plush also shows a list of files on the side of the terminal so you don't have to run ls all the time. 17:26:46 Seems like there are a lot of things like that that you can do. 17:27:48 mm, I'm not sure I'd want to do all of them, but *nod* 17:28:53 I think the thing about the in-band escape seqs that I wanted to do was like... minimal (or small) changes to the shell (at least the way I imagined it) that could let the terminal emulator to a lot more with how it manages and presents output (enabling all these things with separate output blocks for separate jobs and stuff) 17:29:36 I guess that's possible? I think escaping the legacy of VT-100 is a worthy goal. 17:29:38 whereas now it's a bit of a deadlock because there's only so much you can do if you *only* create a new innovative terminal emulator, or *only* a new innovative shell (and you want to remain compatible with existing applications) 17:30:23 I think there's been a number of "actually let's just reinvent everything and cut off existing programs entirely" attempts, but they all seem to fail quickly because there's just too much software out there that's useful that you wouldn't want to reinvent 17:30:40 well, I guess it depends on who you are. I guess say, Microsoft can reinvent all the things with powershell, because they're a big corp and stuff 17:30:50 but I couldn't realistically do that myself 17:30:59 It look like foreground process groups can be figured out at least 17:31:06 oh hm, huh 17:31:07 FireFly: All I'm replacing is the shell, though. 17:31:15 shachaf: *nod* 17:31:29 Programs running in the shell still get a standard pty and a semi-standard terminal emulator. 17:31:36 I just mean that there's several steps to this, and whilst I like the ideal of taking it all the way, I don't think it's practical 17:31:58 I guess we end up on slightly different points along the scale of "today" to "ideal future terminal emulator", but that's fine 17:32:10 shachaf: *nodnod* 17:32:18 yeah, that's sort of the approach I'm thinking too 17:32:29 I think the shell needs to be replaced anyway. 17:33:06 I don't want anything near the complexity of bash. 17:33:17 sure 17:33:36 Shell scripting is probably a bad idea anyway. 17:33:54 a lot of the things that the shell would have been traditionally responsible for (like line editing) I'd like to move to the terminal emulator anyway 17:34:12 Right. 17:34:52 hmm 17:35:04 I don't want to say upfront that the interface between the terminal and the shell is made of escape sequences. I think it can be much richer than what that realistically allows for and it's silly to bound it upfront like that. 17:35:22 maybe I should try to write a simple prototype proof-of-concept shell of what I have in mind 17:35:30 shachaf: that's totally fair 17:35:41 My own ideas of terminal emulator is much like xterm, although a few features are different, such as SVG and HTML screen dumps are not built-in but rather you can configure external programs to execute when those escape codes are received. If you push the break key then it can use tcgetattr() to emulate it. 17:36:09 there's plenty of stuff about escape seqs (and terminals today) that's just bonkers and terrible 17:36:16 * FireFly grumbles about how keystrokes are encoded 17:36:26 Obviously that's all nonsense. 17:36:41 I'd eventually like to move away from TUI programs in general. 17:36:46 *nod* 17:36:52 I have complicated thoughts 17:37:03 I agree in principle 17:37:13 A few new escape codes might be added, such as UTCE character encoding selection, application keyboard mode for the escape key, save states with optional passwords (for security), etc 17:39:00 (Also the ability to select character sets which include characters not in Unicode. This only works if the font supports it, though.) 17:39:40 CP437 is obviously the only thing my terminal supports. 17:40:45 "b) If the first bit combination of the parameter string is in the range 03/12 to 03/15, the parameter string is available for private (or experimental) use. Its format and meaning are not defined by this Standard." 17:40:50 hm 17:41:30 izabera: anyway, digression aside, I think ECMA-48 section 5.4 is what I'd look at for figuring out sensible custom-escape-seq options :P 17:41:35 If the terminal emulator is only for PC, then it can be sense to support only CP437, although one problem with that is that escape codes can interfere unless you have a command to indicate that a character should be interpreted as a graphic rather than control. 17:49:18 Another thing that tcgetattr() could be used for is to figure out what response to give to DECREQTPARM. When connecting to a remote service that might have optional fancy animations or whatever, reporting a lower baud rate could be used as a hint to disable some of the fancy animations. 17:59:57 Possibly a save state command I mentioned before is not needed, since I have another idea. 18:01:00 There can be one escape code which, the first time will save the state and later uses will restore the state; you can include it in your shell prompt. A user command (on a menu or a keyboard combination) can discard the saved state in case you wish to enter a command to permanently change the state. 18:13:42 FireFly: You should totally work on this with me, when I do it. 18:13:54 maybe :o 18:13:59 Which will probably be never? But it might instead be sometime. 18:14:26 Another feature (although not a new control code) is you can program a different mouse cursor shape for when the program has requested mouse events. 18:14:43 I want to set up a good way to write cross-platform GUI programs. 18:16:16 Depending on the program, there is ways, such as SDL 18:18:08 Well, I'm OK with writing my own bindings for X11 and Win32 and whatever. 18:18:28 I feel like the bulk of the work is in making a good UI library. 18:18:37 Even if it's not extremely general. 18:21:45 Can you use Xaw? 18:27:21 No, I want it to be good. 18:27:27 And also portable. 18:32:17 I think that it is not that bad (although, it isn't portable unless you also have a portable X server), although some features it lacks such as displaying the underlined letters to indicate which keys to push 18:40:02 That is the only missing feature, true. 19:02:03 -!- imode has joined. 19:02:14 new laptop, new me. 19:02:58 `? imode 19:02:59 imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs. 19:03:28 LOL. 19:03:33 I was not aware I had a page. 19:03:53 or, what would you call that... a quote? 19:04:01 `dowg imode 19:04:08 11145:2017-08-03 le/rn imode//imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs. 19:04:29 I spoke with someone in another channel with the nick inode, the other day 19:04:35 it confused me for a li'l... 19:04:40 hah. 19:15:03 BTW has someone here used sound change appliers in a while? 19:15:15 (hi :D) 19:15:22 allo. o/ 19:18:36 sound change appliers? 19:20:46 FireFly: basically they take a description of phonetic/phonological rules and apply them to a list of words 19:21:44 some go for more, there could be dialects sharing some rules and then having each own newer rules, and there are many other features one or the other implements 19:22:13 o 19:23:44 when conlanging, it can be a hand, though often people say that if you want a naturalistic result, this would be a hard task, as just phonetic changes aren’t enough and there would be many exceptions due to other processes 19:24:01 a while ago I played with ASCA a bit 19:26:41 Do you know much about Old English, and what sound changes there are? 19:30:47 -!- kspalaiologos has joined. 19:35:19 Hi. Have you guys ever worked on compression of "obese" esolangs? 19:35:27 I'm already trying to figure it out. 19:35:27 "obese"? 19:35:39 By obese I mean the literal code pottery 19:35:41 like Malbolge 19:35:58 I've had some luck with compressing my malbolge with a burrows-wheeler based compression algo 19:36:06 but I don't feel satisfied enough 19:36:10 you mean literally compressing the size of the source? 19:36:15 sure 19:36:23 It's too big for any resonable scale tbh 19:36:37 currently my assembler produces 3MB-200MB malbolge programs 19:36:47 the 2048 test program created around 74MB of Malbolge 19:36:57 so the size is pretty much unsalvageable and I can't do anything about it 19:37:19 so the size is pretty much unsalvageable and I can't do anything about it (in terms of organic code shortening, of course) 19:37:37 I think that's the point of malbolge, to be so large it's nearly incomprehensible. 19:38:09 possibly yes, but I think it would be nice to distribute malbolge programs in smaller form 19:38:31 so one could put it in volume limited areas, then decompress it in an unlimited place 19:38:36 and run it afterwards 19:38:47 are you assembling _to_ malbolge or assembling malbolge to executables. 19:39:07 I'm assembling to malbolge 19:39:33 from many existing reasons I can't really improve my assembler, but I'm working on it 19:40:19 are you just generating macro instructions literally. 19:40:40 umm, no 19:40:50 It's impossible to do that 19:41:04 you didn't get what I said. you're writing some form of assembly, right. 19:41:10 and you're compiling that down to malbolge. 19:41:22 It's a program that transpiles an assembly-like language into malbolge 19:41:26 an example program: 19:41:33 okay. so each instruction corresponds to some snippet of malbolge, right. 19:41:52 https://pastebin.com/raw/mnpHXvVp 19:42:08 It's impossible for an instruction to correspond 1:1 to malbolge snippet 19:42:19 because of immutable nop cycles and all the other crazy stuff 19:42:42 how is that possible. 19:43:00 well. Malbolge encrypts each instruction after it's ran 19:43:12 and the encryption key is dependant of position of command in the source file 19:43:44 to run it once again 19:43:50 e.g. make an immutable instruction 19:43:58 you need to produce different code for different position in file 19:44:03 and the code might differ severely. 19:44:11 okay, but you have some _template_. 19:44:15 right. 19:44:27 strictly speaking, kind of 19:44:41 okay. so you have larger-scale structures in your assembly. 19:44:44 things like loops. 19:44:50 initializations of memory, etc. 19:44:57 no indirect loops 19:45:05 you have large scale structures. 19:45:06 you have to make loops out of comparasion instruction, a jump and a label 19:45:10 replace those with smaller templates. 19:45:16 yeah, that's what assembly is. 19:45:16 have you programmed with x86 Assembly? 19:45:27 yes. 19:45:34 well, then you probably understand 19:45:38 me and my idea 19:45:47 I've built my own ISAs, yes, I understand. 19:45:49 of making the assembler as low level as possible, because I won't write it by hand 19:46:19 I've already worked on gluing together C to Brainfuck compiler and now I'm having fun with bits and pieces of malbolge 19:46:57 it's probably worth noting that C was a quite bit broad subset 19:47:02 but it's as capable as C 19:47:45 you're not really getting it, so I'll explain it verbosely: if you have a template for a single instruction (i.e, you see the instruction, then you output a snippet of malbolge with the relevant places filled in), and if you have multiple instructions that make up a larger construct (like a loop, etc.), you can replace the generated sequence of templates with a single template that performs the 19:47:47 loop. 19:48:19 umm 19:48:23 yes, you' 19:48:32 re right, but I'm not implementing higher level structures 19:48:51 you're not going to be writing loops in your assembly? 19:48:51 (on the assembly level, of course) 19:48:59 the point is you're generating them. 19:49:00 indirect, broad loops, nope 19:49:01 so. 19:49:06 it still applies. 19:49:18 I think you are correct 19:49:25 but, Malbolge is making this idea harder 19:49:28 you take 'whatever: add r1, r2, r3; cmp; jnz whatever;' 19:49:34 and you say "well, that's just a loop" 19:49:36 because if I wanted to create a specific loop construct 19:49:42 I had to write microcode for it 19:49:52 and this would be a really, really, really (x99) hard task 19:50:00 (or rather, a microcode generator) 19:50:25 I'm looking for a lowest common denominator right now 19:50:29 I have used 6502, MMIX, and Glulx, but not the assembly for Malbolge. 19:50:35 well, you pretty much have two options. 19:51:05 group together larger scale assembly instructions into smaller templates. 19:51:11 resulting in smaller snippets of malbolge. 19:51:29 or compress the whole source using a lossless compression algorithm, and then unpack it incrementally at runtime. 19:51:29 or? 19:51:45 I prefer the second one tho, because the first one is going to take insane amount of time 19:51:49 and I'm probably going to turn insane 19:52:04 I'd ask why bother, but then I realized what channel I was talking to. 19:52:09 or talking in, rather. 19:52:45 so 19:52:54 do I have to derive my own algo 19:53:05 or there is something that would suffice 19:53:10 Maybe if you add enough instruction that can result smaller Malbolge codes, then you can. 19:53:19 I've already managed to get 47 megabytes to one megabyte 19:53:25 but it's still too much 19:53:50 someone built a brainfuck to malbolge compiler, I think you can build an assembler. 19:53:56 zzo38 If i write microcode generator for complex instructions, I will going to turn insane 19:54:03 imode really? 19:54:08 I've seen just the theoretical explanations 19:54:22 iirc... 19:54:50 well, it's not going to be the most efficient route ever made 19:55:02 C hello world -> 1.5MB of brainfuck -> ???MB of Malbolge 19:55:17 but it seems quite easy, lol 19:55:42 I'll stick to my malbolge assembly idea, because I can port my pseudoC compiler to it 19:58:01 I'm thinking 19:58:07 why shouldn't I made a harvester program 19:58:13 and generate a few random malbolge assembly programs 19:58:26 and the harvester program would generate a dictionary of most used symbols 19:58:40 and then go ahead with a dictionary compression, but with the dictionary built into the decompressor 20:01:11 at least I, for a practical language, think of it as a pretty normal thing. Why should a low-level language have unstructured control flow, not all low levels are that low so to be able to execute on a sufficiently simple hardware <-- I really agree with this now. I didn't used to. 20:01:38 structured control flow is _not_ hard to implement properly and speedily. 20:01:51 you can even use a jump cache based on the current instruction pointer. 20:03:27 -!- kspalaiologos has quit (Remote host closed the connection). 20:05:44 one thing I don't like, however, is the idea that break is not required. rather, breaking (and conditional breaking) makes it so you don't have to duplicate code. 20:08:01 I have to wonder what would change if brainfuck's loops were changed so that the conditional check happened at the end of a loop. 20:08:57 so instead of while(...) { ... }, you'd have do { ... } while(...) 20:09:50 I believe that's been studied before 20:10:09 I think that'd change quite a lot, since you can't easily do conditionals anymore (since each loop runs at least once) 20:10:32 interesting. 20:10:35 The other day I realized that if (...) is a loop that executes at most once, and do { ... } while (...) is a loop that executes at least once. 20:10:56 while (...) { ... } is a loop that executed any number of times, and { ... } is a loop that executes exactly once. 20:11:25 APLs use the view of booleans as 0 or 1 in a similar manner to that, sometimes 20:11:32 makes sense as to why while (...) { ... } is considered universal. I remember teaching someone how to build things like "and" statements. 20:11:44 using only while loops, acting in lieu of if statements. 20:11:52 e.g. you can express a "filter" operation in terms of a "take n copies of" operation if the predicate produces 0 or 1 for false or true 20:12:04 Do you know much about Old English, and what sound changes there are? => no, unfortunately 20:12:12 taking 0 copies of something omits it, and taking 1 copies of something passes it through to the result (including it) 20:12:27 that's interesting. 20:12:32 [ 1 1 0 1 0 1 # 'abcdef' 20:12:33 FireFly: abdf 20:13:53 [ (#~ >&4) i.10 NB. produce the list [0..9], then filter on the predicate >&4, i.e. "is greater than 4" 20:13:54 FireFly: 5 6 7 8 9 20:13:57 does APL _require_ control flow structures? 20:14:08 J included. 20:14:24 or can all programs be expressed in terms of array transformations. 20:14:35 It doesn't require traditional control flow structures 20:15:56 there's a reasonably common pattern in J that's something like f^:predicate^:_ (where ^: repeats the application of a function, so e.g. f^:3 is the same as f compose f compose f) 20:16:21 what are the _minimal_ primitives that J has. 20:16:52 because f^:0 is identity, f^:1 executes it once. if you then raise that to infinity, you can essentially express a while loop 20:16:57 imode: dunno :o 20:17:09 that'd be fascinating to know. 20:17:15 I'd look toward K probably, beacuse in my mind it's much more toward the minimalistic side of things 20:17:23 I don't know if K has traditional control structures? 20:17:34 minimalist in terms of primitives or minimalist in terms of size? 20:17:41 in terms of having a few primitives 20:17:45 s/a // 20:17:50 interesting. 20:17:52 and avoiding redundancy 20:17:59 (J has plenty of redundancy and convenience features) 20:18:06 array languages seem hard to implement. 20:18:10 http://kparc.com/k.txt 20:18:14 I don't think so 20:18:23 well, in what sense? 20:18:46 just a lot of moving parts. 20:19:05 from parsing to actual interpretation. 20:19:35 I think in many ways a lot easier than other paradigms (very simple syntax, often just needs a lexer.. although often very context-dependent and intertwined with execution, tbf) 20:20:53 there's the http://nsl.com/papers/origins.htm which is a bit classic, and admittedly perhaps not super representative, but always fun (a minimal proto-J which implements a few select verbs and stuff, and no error handling) 20:22:17 https://github.com/JohnEarnest/ok/blob/d6d3ee4bbb550a806895ffb92fbe76321dc7552e/oK.js implements a K variant in about 1000 lines of JS, and that's AFAIK pretty feature-complete 20:23:13 I don't know if it's necessarily harder, or if it's just a bit different and requires some pondering how things fit together 20:25:24 that C snippet is so obfuscated I can't even read it. 20:25:28 -!- asdfbot has quit (Ping timeout: 245 seconds). 20:25:45 why would you bother doing that. 20:25:51 you don't get points for being terse. 20:26:29 -!- moony has quit (Quit: Bye!). 20:26:34 The argument is that this is just the way that's natural to write C, if your mind works in the way that it does if you write APL. 20:26:44 yeah, fuck that. 20:26:46 If that's true, it seems maybe worthwhile to get your mind working that way. 20:26:48 I wouldn't write it that way :P 20:27:01 `? FireFly 20:27:02 FireFly was a short-running but well-loved sci-fi TV series released in 2003, starring Nathan Fillion and directed and written by Joss Whedon. It's also a room whose gimmick is that it gets darker as you kill the enemies. 20:27:06 (unless I golf) 20:27:09 -!- Bowserinator has quit (Quit: Blame iczero something happened). 20:27:11 forth is comprehensible, that is a mess. 20:27:20 FireFly is not Arthur Whitney. 20:27:27 this is correct 20:27:30 given. :P 20:27:32 One time I deciphered most of that implementation of J with someone. 20:27:42 But there were still a couple of mysterious things left. 20:27:57 imode: APLs can be quite comprehensible I think 20:28:03 hmm 20:28:14 (but I'm not arguing for writing C that way) 20:28:50 -!- moony has joined. 20:29:42 -!- Bowserinator has joined. 20:30:06 anything can be written comprehensibly. 20:30:16 the key is documentation. 20:31:17 mm, with J the vocab page is quite handy: https://www.jsoftware.com/help/dictionary/vocabul.htm 20:31:30 the only reason why that C snippet is incomprehensible is because it lacks any human-readable documentation. and code is documentation. 20:31:51 *nod* 20:32:57 I think APLy people would disagree with you. 20:33:07 I'm looking for some document I read that talks about this, but I can't find it. 20:33:31 I found http://coding-is-like-cooking.info/2013/09/an-introduction-to-array-languages/ which talks about Whitney writing an editor in K. 20:34:42 -!- imode1 has joined. 20:35:10 http://kparc.com/edit.k ? 20:35:52 if they disagree with me, shachaf, then they disagree with iverson. 20:36:02 Hmm, it's http://kparc.com/$/edit.k 20:36:48 notation as a tool of thought pretty much said "let the notation serve as your documentation". 20:36:58 executable notation == code. 20:37:32 -!- imode has quit (Ping timeout: 245 seconds). 20:37:37 -!- imode1 has changed nick to imode. 20:37:43 -!- iczero has quit (Quit: rip). 20:38:04 -!- iczero has joined. 20:40:27 Well, whoever wrote that post I linked to seems to be completely indoctrinated with nonsense. 20:45:02 despite my language looking like ass (this, for example, is a directly compiled 5 factorial: ,$5,$0\$$\$[:$,$0=~?:$,$1\$\$$-$]. 20:45:32 the language you're _intended_ to use (which rides on top of it) emphasizes readability. 20:48:25 I think the J for expressing factorial of 5 (without using the built-in verb for it, duh) is pretty readable 20:48:32 I guess it's a matter of having gotten used to it 20:48:48 I imagine it is, yeah. by the by, I'm not arguing against array language readability. 20:48:54 sure 20:49:03 (I also think it looks like line-noise without being used to it) 20:49:13 lol. trying to adjust to writing in line noise. 20:49:41 [ */1+i.5 20:49:42 FireFly: 120 20:53:46 my bad, that was only.. _partially, a factorial function. here's the real deal: ,$5,$0\$$\$[:$,$0=~$?:$,$1\$\$$-$].[\$$\$:$,$0=$~$?*$]. 20:54:41 it's comprised of two parts, one part generates a range of numbers from N on down to 1, and the other computes the product of that range. 20:54:53 the 'range' part is ,$0\$$\$[:$,$0=~$?:$,$1\$\$$-$]. 20:55:05 and the 'product' part is [\$$\$:$,$0=$~$?*$]. 21:08:01 ah 21:14:38 -!- arseniiv has quit (Ping timeout: 246 seconds). 21:17:38 unmangled, it looks like https://hatebin.com/ldolvvfofb 21:17:52 which is much more readable. 21:19:56 one sec.. 21:19:57 -!- imode has quit (Quit: WeeChat 2.6). 21:20:52 -!- imode has joined. 21:39:34 [[Special:Log/newusers]] create * Vulture001 * New user account 21:40:31 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66386&oldid=66298 * Vulture001 * (+97) 21:41:45 -!- imode has quit (Quit: WeeChat 2.6). 21:42:15 [[Special:Log/upload]] upload * Vulture001 * uploaded "[[File:Cz logo.png]]" 21:42:28 [[User:Vulture001]] N https://esolangs.org/w/index.php?oldid=66388 * Vulture001 * (+51) Created page with "[[file:cz logo.png|130px|]]
esoteric programmer" 21:42:39 [[User:Vulture001]] https://esolangs.org/w/index.php?diff=66389&oldid=66388 * Vulture001 * (-3) 21:57:22 [[Crazy]] N https://esolangs.org/w/index.php?oldid=66390 * Vulture001 * (+985) Created crazy language 22:05:35 -!- iovoid has quit (Ping timeout: 250 seconds). 22:05:39 -!- voidio has joined. 22:05:53 -!- moony has quit (Ping timeout: 252 seconds). 22:07:07 -!- moony has joined. 22:17:19 -!- LKoen has joined. 22:28:31 -!- LKoen has quit (Remote host closed the connection). 22:33:07 -!- LKoen has joined. 22:41:32 -!- LKoen has quit (Remote host closed the connection). 22:41:57 -!- voidio has changed nick to iovoid. 22:43:24 -!- LKoen has joined. 22:48:01 -!- LKoen has quit (Remote host closed the connection). 22:49:37 -!- LKoen has joined. 22:56:12 -!- imode has joined. 23:09:36 I found the "tap code", which uses 1/3 for both C and K, but maybe the code for K should be 2/6 instead. 23:20:50 -!- MDude has joined. 23:30:18 -!- hppavilion[1] has joined. 23:45:00 -!- b_jonas has joined. 23:46:19 https://www.unicode.org/L2/L2019/19025-terminals-prop.pdf was accepted for inclusion in future Unicode. Sweet. 23:46:21 ais523: re string eval in perl without the letter e => hmm, I'll have to get back to this when I'm less tired. I just got home from vacation. you might want to look in those old obfuscations that are made of only ascii punctuation, space and newline. at least some of them cheat by using backticks to spawn something, but maybe there's some other. 23:46:29 Finally, PETSCII will actually have a Unicode mapping. 23:46:50 there's probably a less cheating way (not necessarily easier, just less cheating), but I don't have it in mind now 23:47:14 (also, hey, more useful semigraphics) 23:50:16 -!- MDude has quit (Ping timeout: 240 seconds). 23:50:51 you can eval stuff like $x = q(print 2+3,"\n"); $s = "(?{$x})"; use re "eval"; /$s/ 23:51:15 it would be possible to remove the e from the use re "eval" but really ugly 23:51:34 and you'd almost certainly need an E for a BEGIN then 23:52:09 hmm wait, maybe we can just BEGIN { $^H = ... } to have that effect, in which case it wouldn't be ugly 23:52:13 I don't know how use re is implemented 23:54:56 ais523: you can also write the code into a named file and then eval its contents with do 23:59:33 `perl -e $i = 'for(1..7){print$_**2," "}'; BEGIN { $^H |= 0x200000; } $s="(?{$i})"; /$s/; # ais523 23:59:33 1 4 9 16 25 36 49 23:59:37 yup, that works