00:00:28 <\oren\> wait are there still two me's? 00:00:52 fuuuuuuuuuuuuu 00:00:54 yup! 00:01:30 pikhq: Do you ship Google Apps and work? 00:01:33 -!- \oren\ has quit (Quit: leaving). 00:01:37 I forget, how do you make the bot pastebin an output? 00:01:42 Well, sure. 00:01:51 -!- oren has changed nick to \oren\. 00:01:55 <\oren\> there 00:02:13 there's this site by an ardent fan ;-) http://www.cloudatacost.com/ <-- . o O ( is anyone keeping esolangs.org and HackEgo backups ) 00:03:27 oerjan: I'm keeping wiki backups on occasion, but not as frequently as I should be 00:07:49 yay 00:08:07 `` ls bin/*ello* 00:08:08 bin/hello \ bin/hello-world-in-any-language 00:08:12 I'm not keeping logs backups though 00:08:16 Elronnd: no hth 00:08:32 also, `` ... | paste 00:08:52 `` ls bin | paste 00:08:53 i don't think the logs are on the same server. 00:08:56 http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.20204 00:09:05 or are they 00:09:20 `hello-world-in-any-language python 00:09:21 SyntaxERR 00:09:27 *there* we go 00:10:09 <\oren\> `hello-world-in-any-language perl 00:10:10 Your language does not exist 00:10:16 <\oren\> `hello-world-in-any-language c 00:10:17 Hello, Segfault! 00:10:27 <\oren\> `hello-world-in-any-language php 00:10:28 Your language does not exist 00:10:40 excellent answer. 00:10:49 a bit opinionated 00:10:59 <\oren\> `hello-world-in-any-language salmon 00:11:00 Your language does not exist 00:11:05 `hello-world-in-any-language fortran 00:11:06 Your language does not exist 00:11:13 `hello-world-in-any-language pascal 00:11:13 Your language does not exist 00:11:16 <\oren\> someone needs to fill these in 00:11:17 `hello-world-in-any-language brainfuck 00:11:18 ERR Tape end reached 00:11:25 `hello-world-in-any-language befunge 00:11:25 Your language does not exist 00:11:31 `hello-world-in-any-language funge98 00:11:32 Your language does not exist 00:11:34 * int-e shrugs 00:11:35 this is not a very good hello world in any language 00:11:42 `hello-world-in-any-language french 00:11:43 Your language does not exist 00:11:52 indeed, the simpler version was better. 00:11:59 the languages are in hw/$languagename 00:12:05 `hello-world-in-any-language kayak 00:12:06 Your language does not exist 00:12:31 <\oren\> So today I found out that our internally used programming language is not the company's IP. 00:12:47 `` echo "Wello!" > hw/php 00:12:49 No output. 00:12:52 <\oren\> we're just the only people who've ever used it 00:12:54 `hello-world-in-any-language php 00:12:55 Wello! 00:12:59 `` echo 'TypERR, expected "str", got "char *[]"' > hw/pascal 00:13:02 No output. 00:13:34 `hello-world-in-any-language pascal 00:13:36 TypERR, expected "str", got "char *[]" 00:13:53 oerjan: There's an automatic weekly mirroring of everything onto the box to the right of my feet, an automated weekly incremental backup of *that* to the box to the left of my feet, and every now and then I swap the disk in *that* box with a copy I have in a bank vault in Finland. 00:14:04 Elronnd: since when is char *[] a pascal type 00:14:09 it's not 00:14:14 fizzie: what happens when you turn around 00:14:23 shachaf: All the data is lost. 00:14:25 fizzie++ 00:14:26 oerjan: since when is "SyntaxERR" an output printed by python 00:14:32 <\oren\> https://web.archive.org/web/20140105015657/http://salmonpl.net/ 00:14:44 oerjan: Of course by asking about it you've pretty much assured it all goes spectacularly wrong somehow. 00:14:51 @karma fizzie 00:14:52 fizzie has a karma of 16 00:14:55 @karma 00:14:55 You have a karma of 13 00:14:57 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00:15:00 @karma 00:15:00 You have a karma of 0 00:15:11 oerjan: ? 00:15:30 `cat bin/hello 00:15:31 echo Hello 00:15:38 `hello, world 00:15:38 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: hello,: not found 00:15:43 `hello world 00:15:44 Hello 00:16:03 <\oren\> @karma 00:16:03 You have a karma of 0 00:16:15 <\oren\> @jemima 00:16:15 Unknown command, try @list 00:16:17 @karma oren 00:16:17 oren has a karma of 0 00:16:19 @list 00:16:19 What module? Try @listmodules for some ideas. 00:16:24 @listmodules 00:16:25 activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search slap source spell system tell ticker todo topic type undo unlambda unmtl version where 00:16:26 fizzie: your backup system explanation somehow manages to be simultaneously reassuring and worrying 00:16:32 <\oren\> @alarma 00:16:32 You have a karma of 0 00:16:39 <\oren\> @macarena 00:16:39 Unknown command, try @list 00:16:50 The "every now and then" is only about once a year or so (since Finland isn't so accessible), so there's quite a lot that could get lost if this place burns down *and* CloudAtCost goes under (and nobody else has a more up-to-date backup). 00:17:09 I think someone else than just ais523 was fetching the public dump, though. 00:17:09 `karma+ \oren\ 00:17:30 `karma+ oren 00:17:36 @karma \oren\ 00:17:36 \oren\ has a karma of 0 00:17:49 ​\oren\ now has 1 karma. 00:17:54 oren now has 1 karma. 00:18:00 <\oren\> @karma 00:18:00 You have a karma of 0 00:18:05 <\oren\> BUG 00:18:11 <\oren\> `karma 00:18:18 ​ has 5 karma. 00:18:42 oerjan: ? <-- i recommend paying attention to the rest of the discussion hth (which would also have saved you the recent paste) 00:18:58 I'm guessing the disk in the bank vault is empty, and gets regularly swapped with another empty disk 00:19:04 meanwhile the backups are made to one of the boxes at fizzie's feet, except it hasn't actually managed to write something for several years due to a stray dry-run flag 00:19:28 Plausible. 00:19:56 The mirroring is likely to work, in the sense that I've listed the files and they look reasonable. Of course the contents could all be zeros. 00:20:46 Hmm. There are a number of daily fetches of the public wiki dump, from different addresses and with different user agents. 00:21:33 One "Wget/1.16.1 (linux-gnu)", Java versions 1.4.1_04, 1.6.0_04 and 1.8.0_71 and zsync/0.6.2. 00:22:15 90-ish unique IP addresses in approximately February and March. It's a popular file. 00:22:41 I'm thinking the zsync at least is someone deliberately setting it up, rather than a random scraper. 00:23:26 (Especially since it's from the same address at approximately the same time every day.) 00:24:02 I zsync it randomly when I remember and am on a high-bandwidth connection 00:24:52 The daily one comes from a hacksoc.org address. 00:25:06 Which is that York thing. 00:25:19 * oerjan looks askew at Taneb 00:27:25 The public dump doesn't include some things, like the user accounts or images, but it's probably relatively good from the "preserve the achievements of humankind" perspective. 00:29:05 Hm, it's "--uploads --include-files"; maybe it does in fact include images as well. 00:29:15 Wonder how those go in the XML. Best not to ask questions. 00:30:49 it's probably not a very image-heavy site 00:31:27 . o O ( --include-passwords ) 00:32:26 Fun fact: the article at at exactly the halfway point of the XML dump is the one for the Thue-Morse sequence. (From an old, old version; I don't actually regularly mirror that since I mirror everything else.) 00:32:51 I'm hosting a backed up copy at my server now https://em.slashem.me/esolang.xml 00:33:04 What is the worst possible choice for a shell prompt? 00:33:14 fizzie: is the second half the first in reverse twh 00:33:23 hppavilion[1]: "#", when you're not root 00:33:26 It must be a meaningless character string of length no greater than 5, and must not be the null string 00:33:40 hppavilion[1]: "WARNING! Doing this operation on a mounted disk can lead to disk corruption! Continue (y/n)? " 00:33:53 hmm, that's too long 00:34:00 -!- mihow has quit (Quit: mihow). 00:34:05 ais523: Also, meaningful 00:34:27 hppavilion[1]: I used "007" as part of a prompt in an INTERCAL-related project 00:34:36 ais523: no, it needs to be 00:34:41 because % is commonly used as a shell character and % is called a "double-oh-seven" by the INTERCAL docs 00:34:44 I think "x := " is pretty bad, because it implies that you're setting a variable 00:35:04 "Assuming answer of !! to mean yes. Continuing..." and then your prompt 00:35:07 what about four spaces? 00:35:28 that's meaningless, nonempty, and would be very confusing 00:35:30 ais523: is OK 00:35:47 ais523: It provides visual indent from normal command prompting 00:36:07 Actually, having just tried setting my prompt to four spaces, it's *very* confusing 00:36:13 what about [%d] , where the %d is a number that increments with every command input? 00:36:14 Elronnd: How? 00:36:22 that's one of the worst prompts I've seen in practice 00:36:35 (at least, the general idea is, I'm not sure if any were that /precisely/) 00:36:36 not really, actually 00:36:38 ais523: I'll let that through, even though it could be > 5 characters 00:36:45 it's pretty alright 00:36:52 ais523: It does seem a little useless 00:36:56 my zsh prompt includes "%h", which is how many commands have been typed 00:37:04 so it does increment with every command 00:37:29 hppavilion[1]: you could roll back round to 1 from 999, thus confusing people who expected it to be mod-1000 00:37:37 "In[%d]:= " so that you can pretend you're in Mathematica all the time. 00:37:47 yes, Mathematica is one of the progams I was thinking of 00:37:49 (perl -d was the other) 00:38:15 There's a Scheme like that. 00:38:30 Chicken Scheme's prompt is "#;%d> " with that notation. 00:38:54 I'm not sure if there's some syntax for referring back to previous inputs, as is the case in Mathematica. 00:39:24 -!- tromp_ has joined. 00:39:26 fizzie: https://en.wikipedia.org/wiki/%25s is one of the more controversial disambiguation pages 00:39:46 it doesn't look like it from looking at it 00:39:47 heh 00:39:57 but have a look at the talk page, which is much, much longer than the page istelf 00:39:59 *itself 00:40:07 yes it does 00:40:27 just the URL... 00:47:43 I think the worst prompt would be a short offensive word 00:47:51 I can think of several, but it's not nice to say them in channel 00:48:03 hppavilion[1]: ^ 00:48:09 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 00:48:58 prooftechnique: Fair enough 00:49:25 Oh, or "php> " 00:49:56 5 characters exactly 00:50:40 Not technically correct, since php -a actually gives "php > ", but eh 00:50:48 First you say you're not going to say any offensive words, then you come up with that. 00:51:08 I know, I know, my filth knows no bounds 00:52:14 Perhaps just "$ rm " 00:52:24 It resembles a command 00:52:28 And it's scary 00:52:52 But it's meaningful to some people, so... 00:53:12 I guess the absolute worst command prompt is one which executes a harmful command and prints the exit code. 00:53:40 prooftechnique: What's The Absolute Worst harmful command though? 00:53:58 Probably rm -rf ~ followed by a forkbomb, but infectious 00:54:06 Like, the actual prompt says 1, but the prompt code is like "rm -rf /; echo $?" 00:54:06 (To both computers AND brains) 00:55:00 I do think a prompt that is just the string "rm -rf ~" would be fun for a laugh 00:57:11 prooftechnique: Does *nix have hidden files? 00:57:23 As a historical accident, yes 00:57:29 prooftechnique: Good 00:57:36 prooftechnique: The meanest program you could possibly write: 00:57:46 One with identical output to "rm -rf ~" 00:57:56 prooftechnique: But instead of deleting files, it hides them 00:58:05 so basically 00:58:06 rm doesn't have output 00:58:15 Unless you use rm -i 00:58:17 <\oren\> my $PS1 00:58:20 prooftechnique: it does if you run it with -v 00:58:20 <\oren\> \[\033[38;5;39m\]\D{%Y%b%d%a%T%Z} \W$\[\033[0m\ 00:58:26 Elronnd: Oh, true 00:58:29 scp -r ~ /tmp/.homedir 00:58:40 prooftechnique: OK, then identical to rm -rfiv ~ 00:59:01 Wait, not v 00:59:05 yes, v 00:59:05 v is version, isn't it 00:59:06 not i 00:59:18 My fish prompt: http://sprunge.us/KWaR 00:59:33 hppavilion[1]: -f overrides -i 00:59:37 i will prompt you 00:59:40 prooftechnique: What does -i do? 00:59:41 and that isn't what you want 00:59:43 Interactive 00:59:47 v will just print 00:59:50 prooftechnique: Oh 00:59:53 and scp -r will mimic that 00:59:53 Elronnd: Ah 01:00:05 `scp 01:00:20 `` rm -rf / 01:00:25 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: scp: not found 01:00:26 rm: it is dangerous to operate recursively on `/' \ rm: use --no-preserve-root to override this failsafe 01:00:29 Elronnd: Yes, that hasn't been tried before 01:01:23 Elronnd: We need an `scp that is basically a massive http://www.scp-wiki.net/ reference 01:02:00 I saw a /r/writingprompts post that linked there but I still don't understand 01:02:11 what is scp aside from secure/ssh copy? 01:02:24 Elronnd: Secure Contain Protect 01:02:29 Elronnd: It's a 4chan thing, originally 01:02:43 Elronnd: It's basically psychological horror written in scientific prose 01:02:45 secure containment...of what? 01:02:51 ah 01:02:53 I used to have an א in my prompt, but multi-term didn't like that 01:04:10 Hm... 01:04:14 I want to make a custom shell 01:04:18 And I want a new syntax 01:04:39 I've been using fish for years. I think the syntax is much nicer :) 01:04:39 I have a draft text adventure game shell somewhere... 01:04:55 how would that wrok? 01:04:57 s/ro/or 01:04:58 Then there's this https://github.com/chrisdone/hell 01:11:25 Proof Golf 01:11:34 Prove Pythagoras in the fewest number of characters possible 01:12:52 hppavilion[1]: http://pastebin.ca/3422401 01:17:38 I've decided to make a golfing language whynot 01:18:03 boily: Oh, boy 01:18:15 Sorry, I mean "Oh, boily" 01:19:51 prooftechnique: "Oh, boyly" 01:19:58 hppavilion[1]: I can prove the Pythagorean theorem in 3 characters if I can use a picture 01:20:06 prooftechnique: You can't 01:20:24 prooftechnique: You have to use a golfing proof assistant 01:20:43 prooftechnique: Feel free to invent one, so long as it doesn't have a "prove pythagoras" instruction 01:21:00 Do comments count against the character count? 01:21:23 prooftechnique: They do not, but they're a pain in the ass for checkers. Preferably include both a commented and uncommented version. 01:21:39 Actually, you /may/ have a prove pythagoras instruction, but I'll also ask you to prove something else that I'm yet to come up with after, in the same assistant with /no/ changes 01:22:09 Also "t a^2 + b^2 = c^2", where t is "trust me" 01:24:05 boily: I think I'm going to reimplement this in fish. I think it's possible. I really like the idea 01:24:19 prooftechnique: ... dammit 01:24:40 prooftechnique: it was a hack I made for fun many years ago. I'm still fond of the descriptions :D 01:24:59 helloily 01:25:01 good night 01:25:53 quinthellopia 01:25:58 bonne nuit! 01:26:10 bonnenuitopia 01:26:18 -!- boily has quit (Quit: CANDLE CHICKEN). 01:31:03 -!- pdxleif has quit (Ping timeout: 260 seconds). 01:31:56 -!- tromp_ has quit (Remote host closed the connection). 01:32:31 -!- pdxleif has joined. 01:32:35 This %s talk page is amazing 01:34:54 -!- copumpkin has quit (Ping timeout: 260 seconds). 01:37:19 "According to statistics, %s is the 993rd most visited page this month, on a par with World Trade Center and Hydrogen." 01:37:32 Lie, n.: 01:37:32 A very poor substitute for the truth, but the only one 01:37:33 discovered to date. 01:37:41 Good Night, Folks! 01:38:16 night 01:46:07 ais523: How could a stack-based language be made type-safe? 01:46:34 hppavilion[1]: look into row polymorphism 01:47:28 Column polymorphism probably wouldn't hurt, either 01:48:16 ais523: I don't get it 01:48:45 hppavilion[1]: so the idea is you have a function that requires specific types for the top few elements of the stack, but is polymorphic on the ones below 01:49:01 ais523: Ah. 01:49:11 ais523: And you can typecheck this at compile time? 01:49:15 I think I see it 01:49:28 -!- copumpkin has joined. 01:49:40 hppavilion[1]: with type annotations, probably 01:49:46 ais523: OK 01:49:48 type inference is likely undecidable though 01:51:44 ais523: Ah :/ 01:52:39 ais523: Is a dependently-typed shell at all a good idea? I'm sure it'd be useful for /something/ 01:53:02 hppavilion[1]: many people say powershell is a bad idea 01:53:13 and it is much less precisely typed than a dependently typed shell would be 01:53:20 ais523: OK 02:02:25 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 02:03:07 there was this guy (c. diggins, was it?) around here and elsewhere a few years ago who tried to make a stack language with type inference. i think he got somewhat stuck with the "polymorphic on the ones below" part. it gets quite tricky if you try to give a type to something like underload's ^ which calls the function on top of the stack. and much worse if you try to call a function _twice_ with the st 02:03:13 ack possibly different... 02:03:40 oerjan: I strongly suspect that it's impossible to infer for the same reason that rank-3 type inference is in general impossible 02:03:49 it may work with explicit type annotations though 02:04:19 yeah if you have a general idea what your program _should_ do, you can probably annotate it enough. 02:07:14 I wonder if you could bolt a type system onto APL 02:07:34 Well, a stronger one, anyway 02:07:52 -!- Lilly_Goodman has joined. 02:09:15 -!- p34k has quit. 02:12:57 Also, stunned that Dyalog charges 1275 GBP for a 64-bit license :o 02:12:57 -!- heroux has quit (Ping timeout: 244 seconds). 02:13:24 -!- Lilly_Goodman has quit (Ping timeout: 246 seconds). 02:19:46 -!- hppavilion[1] has joined. 02:25:24 Hm... 02:25:33 Stack-Based Logic Programming? 02:25:35 -!- Lilly_Goodman has joined. 02:26:17 ais523: Wait, how would row polymorphism deal with loops, assuming an imperative SBL? 02:26:34 hppavilion[1]: if the loops don't change the size of the stack (which they often don't) there's no issue 02:26:45 if they do, they'd need to leave a predictable repeating pattern of types on the stack 02:26:53 you might need to use some sort of polymorphic recursion technique 02:26:56 ais523: Ah? 02:27:15 ais523: So you need a functional language for row polymorphism then? 02:27:30 how do you define "functional"? 02:27:52 ais523: Based on pure or mostly-pure functions 02:27:57 ais523: As opposed to state change 02:28:09 So you'd pass the stack around instead of just modifying it 02:28:17 It'd barely be stack based at that point though 02:31:05 -!- lambda-11235 has joined. 02:32:00 you don't need to pass the stack around as long as there's just one at all times. 02:44:31 a stack of functors 02:51:45 -!- espes__ has joined. 02:53:17 -!- Lilly_Goodman has quit (Ping timeout: 260 seconds). 02:56:00 -!- Lilly_Goodman has joined. 02:57:37 -!- heroux has joined. 03:11:36 -!- spygame has joined. 03:13:50 quintopia: That might actually work 0.0 03:15:40 naturally so 03:17:32 oerjan: ... 03:17:47 oerjan: Does λ-calculus support functors? 03:19:11 hppavilion[1]: not directly. also this was a category theory pun. 03:19:21 oerjan: Yes, I figured that 03:19:31 thought so. 03:19:38 oerjan: The instructions in a stack-o-functors language would be natural transformations, would they not? 03:20:19 Did someone say stack? https://en.wikipedia.org/wiki/Stack_(mathematics) 03:21:01 BAD! BAD PROOFTECHNIQUE! 03:21:17 hppavilion[1]: hm i think a tuple of functors can be thought of as a functor, so probably. 03:21:27 oerjan: Interesting 03:21:36 (between the corresponding tuples of categories) 03:21:36 oerjan: Wait, a tuple? 03:21:54 oerjan: Is the tuple representative of the stack? 03:22:24 oerjan: Oh, "stack of functors" was discussing a mathematical stack. The /fool's/ stack 03:22:26 not entirely, but every concrete stack is some tuple size... 03:23:03 -!- spygame has left. 03:23:08 oerjan: So why isn't there a λ++-calculus based on functors? Or is that stupid? 03:23:33 :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) 03:23:34 a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> 03:23:35 t59 -> t60 -> t61 -> t62 -> t63 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63) 03:24:17 `scold prooftechnique 03:24:22 hppavilion[1]: i would not be willing to bet either way whether quintopia meant that kind of stack. in any case if he did, i'm hereby underqualified hth 03:24:32 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: scold: not found 03:24:58 How do I capitalize in Bash? 03:25:25 (Don't worry, I'm using `mkx this time) 03:25:57 I think if I go to grad school, I'm going to get way into descent theory. I think I've seen all of 5 names on those papers ever, so I don't think there'd be a bunch of competition 03:26:00 hppavilion[1]: all i know about lambda-calculus and CT is that supposedly, closed cartesian categories model simply typed LC. the pieces probably involve some functors. 03:26:09 hppavilion[1]: Use tr? 03:26:16 `` echo "{walrus^^}" 03:26:21 ​{walrus^^} 03:26:28 `` echo "${walrus^^}" 03:26:29 No output. 03:27:44 `` foo=walrus; echo "${walrus^}" 03:27:47 No output. 03:27:50 `` foo=walrus; echo "${foo^}" 03:27:51 Walrus 03:27:52 Whoops 03:28:15 `` foo=walrus; echo "${walrus^^}" 03:28:16 No output. 03:28:23 `` foo=walrus; echo "${foo^^}" 03:28:24 WALRUS 03:28:27 Same mistake 03:28:30 `` echo walrus | tr '[:upper:]' '[:lower:]' 03:28:31 walrus 03:28:39 Wait, I don't need that 03:28:41 I'm using $1 03:28:59 `mkx bin/scold//echo "BAD! BAD ${1^^}!" 03:29:02 `` echo "walrus" | tr '[:upper:]' '[:lower:]' 03:29:04 bin/scold 03:29:05 walrus 03:29:10 `scold prooftechnique 03:29:10 BAD! BAD PROOFTECHNIQUE! 03:29:15 :) 03:29:18 How nice 03:29:24 prooftechnique: It's very useful 03:29:38 prooftechnique: I wish there was a way to control HackEgo from out-of-channel for mortals 03:29:44 `` echo "walrus" | tr '[:lower:]' '[:upper:]' 03:29:45 WALRUS 03:29:56 So we could make HackEgo yell at people without having to type the command 03:30:00 `? prooftechnique 03:30:01 prooftechnique ? ¯\(°​_o)/¯ 03:30:33 Hang on 03:30:45 `learn prooftechnique is inevitably on a mathematical descent. 03:30:47 Learned 'prooftechnique': prooftechnique is inevitably on a mathematical descent. 03:30:55 `scold HackEgo 03:30:56 BAD! BAD HACKEGO! 03:31:00 Whoops 03:31:05 `scold hppavilion[1] 03:31:05 BAD! BAD HPPAVILION[1]! 03:31:32 THere 03:31:42 `learn prooftechnique né NihilistDandy He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) 03:31:45 I successfully `scolded myself for inventing `scold 03:31:47 Relearned 'prooftechnique': prooftechnique né NihilistDandy He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) 03:31:57 prooftechnique: You aren't allowed to edit your own wisdom hth 03:32:02 It defeats the purpose 03:32:03 Observe: 03:32:12 `learn prooftechnique né NihilistDandy: He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) 03:32:14 Relearned 'prooftechnique': prooftechnique né NihilistDandy: He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) 03:32:15 That was my old wisdom 03:32:31 -!- tromp_ has joined. 03:32:36 `quote NihilistDandy 03:32:37 363) elliott: His mouse obeys the law of the excluded middle :/ \ 393) MY CONTINUITY MY FANFICTION RUINED \ 402) The Russian's emblem was the hammer and sickle, not the fist and other fist \ 412) Non sequitur is my forte On-topic discu 03:32:47 `quote prooftechnique 03:32:48 1272) (make is an esoteric language) b_jonas: Most esolangs I've seen have more comprehensive docs than make 03:32:52 `learn hppavilion[42] is the awesomest person you will ever meet. Much awesomer than oerjan. 03:32:55 Learned 'hppavilion[42]': hppavilion[42] is the awesomest person you will ever meet. Much awesomer than oerjan. 03:33:04 prooftechnique: ^that's why 03:33:14 I was merely restoring order. 03:33:19 You can always append to the old one 03:33:40 prooftechnique: Um, oerjan `?d you and HackEgo had no clue 03:34:06 I know. At some point, wisdom must have been reset. I have a github repo and everything here with proof 03:34:30 `? `? `? 03:34:31 Yes, you're very clever 03:34:33 int-e is on it, too 03:34:34 :) 03:34:39 `? int-e 03:34:41 int-e är inte svensk. Hen kommer att spränga solen. 03:35:02 `` ? walrus | ? 03:35:06 ​? ¯\(°​_o)/¯ 03:35:17 `? walrus 03:35:19 walrus? ¯\(°​_o)/¯ 03:35:27 `` ? walrus 03:35:31 walrus? ¯\(°​_o)/¯ 03:35:45 `` echo walrus | ? 03:35:46 ​? ¯\(°​_o)/¯ 03:35:49 Huh 03:36:02 I'm doing something obviously wrong, that's for sure 03:36:32 prooftechnique: Do you know of any completely esoteric forms of shell interaction? 03:36:48 PowerShell 03:36:58 prooftechnique: No. 03:37:01 -!- tromp_ has quit (Ping timeout: 252 seconds). 03:37:04 I think tcsh is a lost art, too 03:37:26 prooftechnique: What would be a good, strange way to interact with a shell? Perhaps some equivalent-but-totally-different equivalent to redirection? 03:38:08 No redirection. Only partial application of polyvariadic functions 03:38:20 prooftechnique: Oooh, partial application sounds nice 03:38:50 prooftechnique: Though I'd do them in an "anonymous lambda" syntax 03:39:16 (Wait, not anonymous, implicit) 03:39:18 `` foo=walrus; echo "${foo^}" 03:39:19 Walrus 03:39:28 swapped_mv = mv \2 \1 03:39:33 hppavilion[1]: you need to escape ? to use it as a shell command. 03:39:36 (All lambdas are anonymous, duh) 03:39:41 oerjan: OOOOOOH 03:41:01 * oerjan has tcsh on his (ancient) nvg account. he doesn't do very esoteric things with it. 03:42:18 `culprits wisdom/prooftechnique 03:42:21 prooftechnique prooftechnique oerjan 03:42:35 prooftechnique: are you _sure_ that existed before? 03:42:40 `? nihilistdandy 03:42:44 nihilistdandy? ¯\(°​_o)/¯ 03:42:55 `culprits wisdom/nihilistdandy 03:43:01 No output. 03:43:22 i suppose it might have been deleted before the last repo reset 03:43:38 `` ls wisdom/*tech* 03:43:41 wisdom/prooftechnique 03:43:47 `` ls wisdom/*dand* 03:43:48 wisdom/danddreclist 03:44:12 The github repo I took that from was run by boily from Aug 2013 to what looks like October 2015 03:44:32 oh you mean the wisdom.pdf? 03:44:36 Yeah 03:45:00 well that's _not_ older i think. 03:45:21 it's based on HackEgo after all. but someone may have added something just to it. 03:45:43 _or_ something could have got lost to HackEgo's `revert bugs. 03:46:01 (but i thought those mostly _prevented_ deleting stuff) 03:46:09 Last edit on my wisdom there is Nov 6, 2013, so ¯\(°​_o)/ 03:46:29 better ask boily. 03:47:34 `quote non sequitur 03:47:35 412) Non sequitur is my forte On-topic discussion is my piano Bowls of sugary breakfast cereal is my mezzoforte Full fat milk is my pianissimo On which note, I'm hungry 03:49:02 What's the quote append syntax, again? I should add back oerjan's addition. :D 03:49:14 -!- Lilly_Goodman has quit (Quit: Leaving.). 03:49:22 prooftechnique: I think you have to edit the storage directly 03:49:27 ais523: no 03:49:50 I thought it was quote-add or something 03:50:08 Er, learn-add 03:50:15 Maybe learn+ 03:50:23 `learn_append prooftechnique He is inevitably on a mathematical descent. 03:50:27 Learned 'prooftechnique': prooftechnique né NihilistDandy: He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) He is inevitably on a mathematical descent. 03:50:27 prooftechnique: `le/rn_append 03:50:36 There we go 03:50:45 le/rn_prepend 03:50:51 Tack tack :D 03:51:07 hppavilion[1]: you only need that if there are spaces in the file name. possibly slashes. 03:51:14 oerjan: Ah 03:51:30 `cat bin/learn_append 03:51:31 ​#!/bin/bash \ topic="$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//')" \ stuff=$(echo "$1" | cut -d' ' -f2-) \ perl -i -p -e 's/\n/ /' "wisdom/$topic" \ echo "$stuff" >>"wisdom/$topic" \ echo -n "Learned '$topic': " \ cat "wisdom/$topic" 03:51:45 oh slashes shouldn't be relevant. 03:51:50 the file already has to exist. 03:54:06 actually slashes might be relevant the other way, since `le/rn_append uses them as separator. (`le//rn_append should use two.) 03:55:30 hm time for heating pizza 03:56:36 Dropping those extraneous h's will make it 'm, time for eating pizza', t 04:01:40 -!- lambda-11235 has quit (Max SendQ exceeded). 04:02:14 -!- lambda-11235 has joined. 04:02:57 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…). 04:19:02 prooftechnique: but then it'd be frozen! 04:19:33 You raise an important point 04:28:39 wat, no edits in my wp watchlist 04:28:48 i think it's been a while since that happened 04:29:03 *new 04:30:47 -!- lambda-11235 has quit (Ping timeout: 268 seconds). 04:31:45 -!- lambda-11235 has joined. 04:32:05 oops, not to forget the pizza... 04:35:11 -!- lambda-11235 has quit (Read error: Connection reset by peer). 04:46:18 * oerjan ponders if he should have removed the pizza halfway through to fix the uneven toppings 04:46:43 this is pretty soaked in too much pineapple. 04:51:48 and only a small part seems to have any cheese. 04:55:03 -!- heroux has quit (Ping timeout: 240 seconds). 05:29:19 -!- Zoroaster has joined. 05:29:21 -!- Zoroaster has changed nick to Kaynato. 05:29:31 Hello all, I have made an esolang recently 05:30:02 I wrote a C compiler and interpreter. Recently I am optimising the memory allocation but the version so far should work without trouble 05:30:14 Nice to meet you. 05:32:12 -!- heroux has joined. 05:32:39 Hello, heroux 05:33:22 -!- tromp_ has joined. 05:37:33 -!- tromp_ has quit (Ping timeout: 244 seconds). 05:41:23 hi Kaynato 05:41:35 have you posted the language to the wiki? that's where most people go to look for new esolangs 05:41:51 Yes! I spent a lot of effort making my page, actually. It is great to meet the administrator here :) 05:41:57 Here it is: https://esolangs.org/wiki/Daoyu 05:42:45 I'm not the only administrator :-) 05:43:31 also I haven't been checking the wiki as much as I should recently because my RSS reader is broken 05:43:33 so I'd missed it 05:43:52 No problem, you are here after all 05:44:17 I was really excited to make this esolang, actually, I don't think I've really seen anything resembling this idea before 05:44:36 it's a lot more interesting than most people's esolangs 05:44:46 Although it was a tremendous hassle to actually write anything non-trivial in this language, haha 05:45:01 Half the code in the truth machine exists solely to make sure the input is ASCII 0 or 1 05:45:27 The rests writes a program inside the program data to then check the last unknown bit and decode to output and loop or output and end :) 05:45:48 The end mechanism is also very interesting - it deallocates the memory where the program that is running is being stored 05:46:08 Which exits the execution loop out of that, and then out of the top level program 05:46:24 I am unsure which paradigm this really counts as 05:46:35 how useful is UPLEV? 05:47:01 Very! It is indeed vital to the operation of the code 05:47:06 hmm, it reminds me a bit of the sort of things people do in Befunge 05:48:00 Hm, but the pointer does not change direction ever 05:48:11 oh I see, UPLEV changes what's interpreted as IDLES so that commands like SIFTS operate on different information 05:48:30 right, I wasn't thinking so much to do with the pointer direction as the sort of things you can do with self-modifying code 05:48:37 UPLEV was a combination of "How do I loop?" and "How do I not go into an infinite DOALC explosion?" 05:48:52 fizzie: does Befunge-98 have a mass fungespace copy fingerprint? 05:49:32 err, fizzie's in the UK and probably won't answer questions at 6:50am 05:49:34 To be fair, most of these commands were to "hopefully make this turing complete," haha 05:49:38 No problem, that's fine 05:49:42 I tend to just ask people on the offchance they're online 05:49:50 It's a good strategy 05:49:51 Kaynato: you write languages much the way I do, I think 05:49:58 Snowflake's initial set of instructions are pretty weird 05:50:08 but it was a case of "find way to add functionality the language needs" 05:50:19 Of course! With Daoyu it was initially just a data generation language 05:50:36 DOALC, SPLIT, HALVE, LATER, MERGE 05:50:45 I think the page could be made a bit better by explaining what the data storage model is, before presenting the commands 05:50:53 Of course, I was thinking about that 05:50:53 at the moment you explain what the commands do but it's not clear what they're operating on 05:51:16 I am on that right now 05:51:16 a program is formed out of a program and data, and data is also formed out of a program and data, recursively? 05:51:54 A program always owns data. Data can always become a program. 05:52:36 When you load a program from the binary code, the interpreter creates data, allocates it properly, reads the code into the data, then calls EXECS from the first bit 05:59:13 [wiki] [[Daoyu]] https://esolangs.org/w/index.php?diff=46695&oldid=46693 * Kaynato * (+813) More explanations 05:59:28 There we go :) 06:00:23 So, hmm... 06:00:29 "A program is formed out of a program and data" 06:01:10 When code is loaded, it is only data. EXECS can be interpreted as a function that turns data into a program - or rather, if the idea of "program" itself is thrown out 06:01:35 There is only one program at all times, and that program IS the interpreter. The instruction is the data that is being read (the "program") 06:02:09 Since the data all looks the same to EXECS, any data can become a program that EXECS executes. 06:02:56 And EXECS can also, through data that it receives (a program), create data which also calls EXECS, and then run through it, creating data by necessity of calling EXECS. 06:03:25 right 06:03:33 it's the sort of loop that concatenative languages normally use 06:04:02 I'm not sure whether your language is concatenative; it has a lot in common with something like Underload but also a lot of differences 06:08:02 For example, you have numbers :) 06:08:41 For a while I had been using 3$ to represent $$$ but there was really no reason to have numerals of any sort here, haha 06:08:57 Underload doesn't have numbers either really, you represent them as programs that make copies of other programs 06:09:10 ^ul (:::^^^)(x)~^S 06:09:10 ...bad insn! 06:09:18 ^ul (:::***)(x)~^S 06:09:18 xxxx 06:09:20 that's what I meant 06:09:25 that's the number 4, being converted to unary 06:09:27 Ah, but there is a copy function... 06:09:37 ^ul (:::***)(:::***)*(x)~^S 06:09:37 xxxxxxxxxxxxxxxx 06:09:40 and that's 4 times 4 06:09:48 Mhm, very nice 06:09:52 but yes, Underload has a copy because it's meant to be pretty minimal 06:09:56 ^ul (:::***)(:::***)^(x)~^S 06:09:56 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 06:10:05 4 to the power of 4 is, umm, 256 06:10:14 but those are too many xes to easily count 06:10:30 Mhm 06:11:01 Another problem is that Daoyu does not really have a stack 06:11:23 At the least, I am extremely unsure if it could "easily" produce stack-like behavior 06:11:49 It seems to be a "mostly writing" type of language in which reading is extremely difficult 06:12:11 Or just tedious 06:12:21 this is common in esolangs 06:12:54 To be expected, I suppose 06:13:39 The program "<" loops 9 times exactly - the program "><" is an infinite loop, and the program ">$<" generally causes a memory overflow 06:14:37 I find myself recently trying to make a program filter to demand ASCII digits, but I can't seem to figure out how to do it 06:15:05 It was possible with the truth-machine because 0 and 1 only differ by one bit 06:15:36 However, with a digit filter, I have to check certain digits only provided that other digits are in a certain pattern 06:16:46 often I think about how a language really "wants" to do input and output 06:16:50 A thought was to attach a single conditional to a "flag incrementer" for such a condition, which would permute some data outside of the ASCII input... 06:16:54 for example it may want to read a bit at a time rather than a byte at a time 06:17:06 That is possible here too 06:17:08 in this case, part of the problem is that the input can represent any pair of commands if interpreted as commands 06:17:34 I guess you could double the input twice so that you only have to deal with 0000 and 1111 06:17:54 Hm, if one only selects 4 bits before calling INPUT, then it is truncated anyway 06:18:03 or, hmm, does doubling even work like that? 06:18:08 Doubling? 06:18:55 err, DOALC 06:19:11 DOALC always ensures that the new bits are zeros 06:19:14 I should specify that 06:19:18 right 06:19:47 [wiki] [[Daoyu]] M https://esolangs.org/w/index.php?diff=46696&oldid=46695 * Kaynato * (+42) Minor clarification 06:20:10 Another problem is that of binary partitions 06:20:29 It is very difficult to transport data across large partitions - in the worst case, the middle of the data 06:20:53 [wiki] [[Portable Minsky Machine Notation]] M https://esolangs.org/w/index.php?diff=46697&oldid=46043 * Ais523 * (+15) /* Definition */ clarify whitespace rules 06:21:05 That is part of the reason I have SIFTS - so that one could write across partitions, then use SIFTS to move it all into likely a single one 06:22:47 most of the instructions in Snowflake are designed to avoid this sort of problem 06:22:59 e.g. one of them is to make it possible to introduce more than linearly many list wrappers per cycle 06:24:34 That is an extremely interesting language 06:25:13 I need to write an interpreter of it, make a backup copy, and experiment a bit 06:25:36 It seems like it would be very fun to write, most certainly! 06:27:28 Regarding this problem in Daoyu: But, since SIFTS probably(?) takes care of that problem, I suppose it would still be alright? 06:27:31 -!- bender| has joined. 06:28:17 I would suppose the next important step would be to make a program that takes input, modifies some bit outside of the input data depending on some bit in the input, and moves back to its original position 06:30:01 you could try writing a program to copy a string 06:30:26 ^bf >,[>,]<[<]>[.>]<[<]>[.>]!this is a test 06:30:26 this is a testthis is a test 06:30:32 that one 06:30:41 Mhm, yes 06:30:56 But I haven't identified any permutation cycles yet for looping, actually, hm 06:31:00 it's an interesting test of a language because you can't write it in a "linear" language, which is one in which data is only usable once 06:31:04 I imagine that the setup would be 06:31:10 ofc you would probably use a different algorithm to that brainfuck program 06:31:46 Setup - Take input - Make looping program to copy input - Run from beginning of internal program - Terminate 06:32:53 Something I should do very soon is to make a utility to print out necessary ([/!) for generation of arbitrary bit-strings 06:36:06 It is interesting that "ascending and descending floors of data" which I initially specified as a whimsical solution to an edge case has become so vital 06:39:54 that reminds me of the complexity of Snowflake's segmented transposition; there are a lot of cases I had to exclude as they'd otherwise have been irreversible (and all commands being reversible is important to Snowflake's design because it means you never lose access to functionality that existed in an older version) 06:40:10 and creating those cases artificially is only real way to do an if statement 06:42:04 Hm, and here I have to deal with the problem of intrinsically lossy commands 06:42:52 But part of the design was preventing the introduction of "obvious" commands such as incrementation, assignment, plain conditional, etc. 06:43:00 yes 06:43:05 too many people start with those 06:43:18 IMO, an esolang isn't a real esolang unless you have to figure out how to implement numbers for yourself 06:43:25 I agree wholeheartedly 06:45:00 An idea that I have been thinking of more recently is the potential in moving the data pointer into the original program data and then using EXECS 06:45:00 it is a differently kinded esolang, to be exact 06:45:01 what? you can't make categorical statements like that. there are many ways to esolangs. 06:45:06 yeah 06:45:34 Ah, ah, that is true also 06:45:47 some can be esoteric in its intention; some in its complexity; some in the external context; some in the computational ability; some in, uh, true stupidity; etc. 06:46:04 lifthrasiir: the truly stupid ones are clearly esoteric, but only arguably languages 06:46:16 something like Esme qualifies as truly stupid but I'm not convinced it's actually a langugae 06:46:29 And then there are the piles of BF Derivatives 06:46:33 more likely it is a moderately well-done trolling attempt 06:46:46 ais523: you bet. my point is that there is no such thing like "real esolang" (though I see what you really meant). 06:46:51 then there are the BF derivatives, only a small fraction of which are interesting, but which are a good way for new people to learn how to write esocompilers 06:47:16 "Real Esolang" is arguably much more dangerous than the idea of "Real Programmers / Real Languages" 06:47:38 "real programmers" are mostly a joke, though 06:47:53 the name's normally taken to refer to people like Mel from The Story of Mel 06:47:54 real programmers do not use any tool. they choose the universe that would contain the desired information somehow. 06:48:13 who do programming at a level so low that most people have problems comprehending it 06:48:23 Mhm 06:48:28 (this is sometimes exaggerated a bit, like in lifthrasiir's example) 06:48:37 a classical joke. 06:48:43 "real languages" is not something that I've heard of before 06:48:53 (inspired from https://xkcd.com/378/ ) 06:48:53 It feels that using Daoyu is sort of grasping at that horrible, painful thing at the bottom of the world, with one's hand cut off and eyes sewn shut 06:48:56 by saying "real esolang" I wasn't being 100% serious 06:49:17 It can be said to be at a lower conceptual level than assembly, of all things, but then orthagonal 06:49:35 especially because you can sometimes get interesting languages by starting with arithmetic (e.g. Forte) or even brainfuck (e.g. PaintFuck) 06:49:42 Oh of course 06:50:22 -!- jaboja has quit (Remote host closed the connection). 06:50:49 IMO, an esolang isn't a real esolang unless you have to figure out how to implement numbers for yourself <-- Fueue hth 06:50:55 or, for that matter, JavaScript (JSFuck), although JSFuck is only really interesting in that it's possible 06:51:10 also FORTE 06:51:40 I mentioned Forte already! 06:51:47 i was backscrolled! 06:52:00 how dare you contradict yourself while i'm typing! 06:52:25 I must admit I'm partial for arithmetic. I like arithmetic. 06:53:35 that said, in Forte, I'm not convinced that implementing numbers using numbers is the best idea 06:54:20 the TCness proof uses simulated Minsky machines 06:54:48 I think that the Rotary Turing Machine may prove BF\(-) TC 06:55:20 now I'm reminded to wikiplia, which has built in integers, functions for addition, subtraction, and equality, but not less-than comparison. the way to do less-than comparison (on not too large integers) is to subtract the two numbers, converting the result implicitly to a string substring it to take the first character, and compare that substring to "-" 06:55:24 hppavilion[1]: BF without -, is this? 06:55:31 ais523: Yes 06:55:39 ais523: \ is stand-in for set difference 06:55:45 that's clearly TC if you have a limited cell size, e.g. in 8-bit BF you can replace - with 255 + 06:56:00 if you have an unlimited cell size it's more interesting 06:56:10 that, or you can just do bitfuck by replacing + with 128+ 06:56:15 ais523: But it might only prove Brainfuck with an even wrapping point TC 06:56:20 ais523: hey, fractran both does and doesn't fit 06:56:36 my immediate reaction was that it was obviously sub-TC but thinking about it I'm not sure 06:57:16 ais523: Nowrap BF\- is probably not TC, but it might be if you allow quotient types 06:57:39 ais523: Basically, you could have 2-cell tuples (a, b) that represent a/b 06:57:42 let's call this "permanent BF" because once a cell becomes nonzero, you have no way to set it back to zero 06:57:46 Wait, but how would you do the math? 06:57:49 ais523: Good idea 06:58:14 ais523: And Permanent BF's wimpmode has a _ ("reset to zero") instructoin 06:58:31 no, that would make the language really different 06:58:37 ais523: Should we compile a (single-page) list of "Brainfuck derivatives that are actually interesting"? 06:58:39 ais523: Fair enough 06:58:43 the most obvious implementation method appears to be to allocate every nth cell as a different counter, and create an increment-only Minsky machine whose instructions are "increment counter" and "compare two counters" 06:58:51 hppavilion[1]: no. 06:58:58 b_jonas: It would only be one page 06:58:58 definitely no. 06:59:04 hppavilion[1]: just no. 06:59:07 b_jonas: In fact, we could move boolfuck and such into that page 06:59:09 it would lead to too much flames. 06:59:16 err, I mean, each of the n sets of every-nth-cell is a counter 06:59:22 b_jonas: Thus DECREASING the number of BF derivative pages 06:59:25 hppavilion[1]: if you want, make a user subpage about brainfuck variants that _you_ think are interesting, and emphasize it's subjectiveness. 06:59:33 hppavilion[1]: that's not how it works 06:59:39 hppavilion[1]: think of "too many standards" 06:59:39 you could make an objective page of "BF derivatives that are not trivial to prove TC or T-incomplete" 06:59:53 ais523: Yeah, that works 07:00:00 ais523: TiC? 07:00:05 unTC 07:00:10 ais523: Yeah 07:00:55 ais523: "Brainfuck derivatives with nontrivial computational class proofs, and other assorted significances"? 07:01:18 no because now it isn't objective 07:01:25 ais523: Yeah, fair enough 07:02:03 BoolFuck is probably fairly simple (not quite trivial, but not insane) to prove TC, but it's still significant because of being boolean, thus showing that any n>2 is acceptable for a cell bound 07:02:28 ais523: Fine, how about just the stuff before the comma? 07:02:54 is BoolFuck just BrainFuck where every cell is either 0 or 1, and rather than +/- you have a toggle? 07:03:01 hppavilion[1]: that might work 07:03:05 coppro: yes 07:03:08 I think 07:03:15 oh it's trivially TC then 07:03:17 many of these limited-BFs make minor changes to the set of instructions that exist 07:03:24 like removing output 07:03:34 or merging < and * (* is the toggle instruction) 07:03:35 you can easily emulate arbitrarily cell-bounded BF with it 07:03:49 coppro: Not quite trivial, but fairly simple 07:03:56 By generalization 07:04:04 Thinking about that, it would be possible to implement BoolFuck in Daoyu if it were not for the problem of nonlinear partitioning. Linear traversal operates at a higher level than is available 07:04:25 256-wrap BF is TC, 128 is, 64 is, 32 is, 16 is, 8 is, 4 is, so why not 2? Or something along those lines 07:04:27 I could change the level table to make this trivial but I am not sure if that is in the spirit of this language 07:04:40 how easy is it to emulate unbounded BF in bounded-cell BF? I assume it's harder than the bounded-in-bounded implementations, and interpreter-bundling might even be the easiest way 07:07:22 ais523: depends on how fast you want it 07:07:42 I think I will set my next goal to be a string copier. It is 3 AM now, so goodnight everyone, once again thank you for being receptive and kind 07:07:58 night Kaynato 07:08:56 ais523: well you basically have to use some stick-infinitely-many-cells-in-one method 07:09:04 wait 07:09:06 ais523: and I don't think you need interpreter bundling. just treat it like a single-tape turing machine with a couple of different symbols, each cell represented by a fixed number of brainfuck cells; represent bignums on the turing machine in unary and shift the whole rest of the tape when you increment a bignum. 07:09:10 that's the wrong way 07:09:25 oerjan: the other way you definitely go via Minsky machines 07:09:29 ais523: that is, if you don't need efficiency, only turing-completeness, then it's easy. 07:09:46 ais523: What would you say the most promising path for proving Permafuck's computational class is? 07:09:58 b_jonas: I agree that it's easy if you just care about TCness 07:10:11 hppavilion[1]: Minsky machines 07:10:15 ais523: OK 07:10:33 they're a really good model for restricted BFs because BF can implement a Minsky machine in two different ways 07:10:46 either using single unbounded cells or a row of cells along the tape 07:11:14 i think BCT would also be fairly easy 07:11:38 I think you'd have difficulty finding the left end of the queue 07:11:41 using two cells for each BCT cell 07:11:58 hppavilion[1]: no, it's trivial 07:12:25 oerjan: only two? 07:12:33 what's your iteration command for going from the right end to the left end? 07:12:39 every two adjacent boolfuck cells become one 4-brainfuck cell 07:12:42 maybe more. i wasn't thinking about getting to the end there. 07:12:45 ooh, I think you could probably do it using five 07:12:56 or six? 07:12:57 i think maybe 3? 07:13:08 and intentionally unbalancing the loop so that you fall to an otherwise unreachable position 07:13:36 [wiki] [[Brainfuck derivatives with nontrivial computational class proofs]] N https://esolangs.org/w/index.php?oldid=46698 * Hppavilion1 * (+1494) Created page (First Example: Permanent Brainfuck) 07:13:50 replace each instruction with another instruction that works on the 2-cell 07:14:01 to make it even easier 07:14:09 ais523: Are there any strict subsets of brainfuck with trivial computational class proofs? 07:14:12 replace the two-cell with three cells, one of which just stores a "is nonzero" bit 07:14:20 * hppavilion[1] realizes his massive mistake there 07:14:31 * hppavilion[1] misspoke entirely 07:14:41 whoa whoa whoa, I thought you were talking about n-categories 07:14:41 Are there any Turing-Complete strict subsets of brainfuck? 07:14:51 hppavilion[1]: remove , and . 07:15:02 ais523: Oh, right. The /useless/ instructions. 07:15:06 ais523: Other than that? 07:15:10 you can remove + or - on with a bounded cell size, and remove < or > with a bounded tape length 07:15:17 other than that you can't remove instructions without changing or adding some 07:15:20 ais523: But isn't that a trivial proof? 07:15:24 permanent brainfuck is boring 07:15:26 Oh, I forgot to constrain "nontrivial" 07:15:28 it can't loop 07:15:30 (obviously if you have both a bounded cell size and a bounded tape length it's sub-TC) 07:15:32 coppro: why not? 07:15:38 coppro: Yeah, I think that's the biggest problem 07:15:41 I agree that you can't write a useful /balanced/ loop 07:15:43 ais523: by induction 07:15:49 but I don't see why an unbalanced loop couldn't be useful 07:16:01 ais523: Unbalanced loop? 07:16:11 actually wait 07:16:13 ais523: Like, unbalanced brackets? 07:16:18 hppavilion[1]: one which isn't necessarily on the same cell at the [ and the ] 07:16:23 what's the input-output method here? 07:16:24 that matters 07:16:24 ais523: Ah 07:16:28 the simplest possible unbalanced loop is [>] 07:16:39 coppro: I think we ignore those 07:16:41 coppro: assume no input, output is BF . 07:16:46 that's the simplest model I think 07:16:53 ais523: err, what 07:17:08 ais523: Or , increments the current cell by n, but that just leads to needless complication 07:17:09 alternatively you could make output BF . but in bits 07:17:11 I'm talking about computational complexity 07:17:17 so that you don't have to store the value of the cell 07:17:23 how does it receive input? 07:17:32 coppro: It doesn't. 07:17:35 coppro: which language are you talking about? unbounded-cell BF without - ? 07:17:38 coppro: It's like a TM: no input 07:17:39 ais523: yes 07:17:46 you don't need input to prove TCness 07:17:53 you don't? 07:17:56 coppro: No! 07:18:08 explain 07:18:08 coppro: , and . are useless to brainfuck aside from practicality! 07:18:19 coppro: It's confusing, I know, but if you think long enough, it works 07:18:21 oh wait 07:18:21 durrr 07:18:23 it's alte :( 07:18:25 *late 07:18:32 you were confusing with BF-completeness, I think@ 07:18:35 *think? 07:18:50 ais523: @ should be used in actual punctuation 07:19:01 I really love your hair@ <-- Sarcasm 07:19:15 i think that's a great idea@ 07:19:22 oerjan: Well played. 07:19:42 what do you mean by the output being BF, though? 07:19:46 I do prefer the spanish language's prefix punctuation. 07:19:57 coppro: It outputs /like/ in BF 07:20:23 coppro: I assume it only takes the low up-to 8 bits, left-padding with zeros if necessary 07:20:48 (alternatively, it divides it in up-to 8 bit chunks, but that's just pointless) 07:21:52 ais523: Hm... what other interesting BFs are there? 07:22:24 Random idea: [ has no behavior. All while loops become do-while loops 07:22:33 ok so the first obvious reduction is that multiple + are idempotent 07:22:46 hppavilion[1]: meh 07:22:46 Wait, I think oerjan or \oren\ published that as "noob fuck" 07:22:48 hppavilion[1]: that's actually been named twice (by me and by oerjan), and invented many more times than that 07:23:09 ais523: Yes, but has it been explored in properties? Does anyone know how it works? 07:23:33 It seemed trivially TC at first (just undo everything after the loop so it reverts the changes), but now I'm not so sure 07:23:57 Because it might loop only 1 time naturally, but then 1 loop is equal to 0 loops 07:24:01 coppro: right, + is basically "permanently set this cell to 1" 07:24:04 Wait, what? 07:24:37 That doesn't sound right... 07:25:28 You know, with the right knowledge, I think BF might actually be /easier/ to compile than to interpret, because the search-for-the-matching-] at every [ feels wrong to me, but just using ASM labels feels OK 07:25:32 It feels more ethical to compile 07:26:08 (Also, if you can't compile BF to at least a custom ASM, you are a n00b of programming who deserves... some suitable punishment.) 07:27:39 it's a good project to learn on 07:27:53 now I'm wondering if you can compile BF to x86 via string substitution 07:27:57 the hard part would be bracket matching 07:28:22 you can't do it in the compiler via string substitution, so you'd have to match at runtime somehow 07:28:44 which probably either involves reading your own code to find the ], or else abstaining the loop for its first iteration 07:28:56 mark the [ with a nop 07:29:48 pick some variety of jump instruction in ] that is used exactly once per ] 07:29:59 ais523: What kind of string substitution? 07:30:06 look backwards through the executing code, looking for the unmatched nop 07:30:07 then jump to it 07:30:21 ais523: Wait, the answer is a definite yes 07:30:25 hppavilion[1]: s/+/add 1, (%rbp)\n/g 07:30:26 See: Thue 07:30:50 hppavilion[1]: no, I mean 07:30:55 for each BF instruction 07:31:02 expand it to a string, that is always the same for the same instruction 07:31:05 ais523: Oh, single-pass? 07:31:29 like you can do a BF to C compiler via replacing "[" with "while (*p) {", "]" with "}", "+" with "(*p)++;", and so on 07:32:22 ais523: So the question is isomorphic to "Can you compile that subset of C with string substitution" 07:32:28 ais523: I'm unfamiliar with one aspect of computation theroy you can maybe clear me up on 07:33:06 if we're trying to prove that a BF-like has the same power as, say, PDAs, is there an enumeration characteriazation we can use? 07:33:06 hppavilion[1]: err, no, because I mean you replace each character of the input with a string in the output 07:33:28 coppro: things tend to end up not well-defined if you look at them in too much detail 07:33:45 ais523: well then 07:33:48 I typically use an informal "can you compile an X into a Y in such a way that the programs 'do the same thing'" 07:33:51 seemms like a problem 07:34:04 trying to define this more precisely is indeed a huge problem that has defined considerable portions of my life 07:34:13 (i.e. basically all the 2,3/Wolfram stuff) 07:34:16 yeah 07:34:26 I knew you had some experience in the area ;) 07:34:50 -!- tromp_ has joined. 07:36:35 ais523: Is there a simple language similar to brainfuck that can definitely be compiled with sed? 07:36:42 (or sed--) 07:36:56 (sed-- really just has regexless s/// expressions) 07:37:12 (Because that's all sed is really used for in most cases anyway) 07:37:21 hppavilion[1]: sed is TC, so… 07:37:28 ais523: Then sed-- 07:38:01 what are you compiling it into? 07:38:07 ais523: ASM 07:38:10 ais523: Same as you 07:38:37 ais523: Or did you finish that while I wasn't looking? 07:38:50 ais523: I'm thinking something like BF+^ 07:39:05 oh, you can compile asm into asm pretty easily :-P 07:39:15 -!- tromp_ has quit (Ping timeout: 246 seconds). 07:39:32 ais523: s/(.*)/\g1/ 07:39:43 Wait, no, s/(.*)/\g<1>/ 07:40:04 (The standard set of BF+x instructions is yet to be defined, but ^ is "Jump back by the number of characters in the current cell) 07:40:25 (I'm attempting to make the world's greatest BF compiler, called ABfCI 07:41:42 I /think/ that with unbounded cells, you can compile BF+^,v into BF fairly simply, but I'm not sure if it can be done via string substitution 07:43:44 Hm... 07:44:18 I want to use x86 as the target for ABfCI, but I'm not sure what to do with it; any time I try to read up on it I get intimidated because I'm a bit pathetic 07:45:26 I guess I'm going to inherit the earth, so at least I've got that going for me 08:00:04 -!- AnotherTest has joined. 08:10:38 -!- ^v has quit (Ping timeout: 248 seconds). 08:11:28 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 08:11:35 -!- ^v has joined. 08:22:28 -!- Kaynato has quit (Ping timeout: 252 seconds). 08:49:06 -!- lleu has quit (Quit: That's what she said). 08:53:54 -!- mroman has joined. 08:54:02 Is there a blocking version of InputStream? 08:54:13 eh wrong channel :) 08:56:03 mroman: itym "fnærd" hth 08:56:53 I thought InputStream was blocking by default :-( 08:57:14 . o O ( just pass it to a BlockingStreamFactory ) 08:58:53 oerjan: would be more likely a BlockingFilterStream 08:59:12 no reason to factorize when you can just use it as a constructor parameter 08:59:37 you seem to assume i know the difference 09:00:14 i mean, NOT ENTERPRISEY ENOUGH 09:22:58 -!- oerjan has quit (Quit: LNaiter). 09:40:16 stupid webpages unnecessarily using crazy complicated javascript and css to try to just show some textual information that they could show on a simple static textual webpage, and messing it up so the words keeps overlapping each other or getting truncated. 09:41:35 or break scrolling or navigation commands 09:42:38 -!- gniourf has quit (Quit: Leaving). 09:45:56 -!- gniourf has joined. 09:47:08 ais523: Belatedly, the TOYS fingerprint has block copy/move operations. 09:47:38 fizzie: I was thinking about the idea of no-delta-change *funge 09:47:50 (probably unefunge as the extra dimensions wouldn't help all that much) 09:48:12 the idea being that you copy code ahead of the IP to run it, in the style of various esolangs (IIRC SMITH?) 09:51:30 Sounds feasible. 09:58:20 -!- nooga has joined. 09:58:32 kood 10:23:57 ais523: (1) how is that a fungeoid, and (2) can you at least jump, even if you can't change the delta? 10:24:20 b_jonas: I didn't say it was a fungeoid, just a restriction of funge 10:24:31 also I wasn't planning on having jumps either 10:24:39 hmm 10:24:41 -!- boily has joined. 10:24:47 you may have trouble copying commands fast enough to not run out of them then 10:25:04 b_jonas: that's why I asked if there were any block copy fingerprints 10:25:26 I see 10:26:06 well if you have a block copy, then you could just always copy the next block ahead of you whenever you jump 10:26:45 yes 10:26:55 I guess to make it harder you could add a rule against copying over nonzero memory 10:28:56 ais523: even then it's not hard 10:29:04 indeed 10:29:50 ais523: you break your code to elementary blocks (with no jumps at the middle and one jump at the end) and copy only the next one at the end of the block 10:30:22 right, the hard part is writing conditionals, but you can do it via arithmetic 10:30:29 computing one block or another to jump to (i.e. copy forwards) 10:30:53 arithmetic? doesn't funge have easy value conditional statements? 10:32:45 they change the delta 10:32:47 yeah, doesn't matter, it has a proper value comparison function, and you can combine that with arithmetic and stack control to make a conditional 10:33:02 ah right, it has a less-than 10:33:13 which is basically an arithmetical < rather than a control-flow < 10:33:22 yep 10:34:50 -!- Reece` has joined. 10:34:52 the ` command for less-than compare, arithmetic on the stack, and the g and p commands to load and store from random memory (which together let you do stack operations too) 11:00:13 -!- lleu has joined. 11:06:04 @metar CYUL 11:06:05 CYUL 301000Z 24004KT 15SM SCT240 M02/M06 A3021 RMK CI4 SLP232 11:19:16 -!- boily has quit (Quit: GERMANIC CHICKEN). 11:23:30 ais523: InputStream is just an abstract class with a default implementation that blocks, yes. 11:23:38 but actual implementations of InputStream can do whatever they want 11:24:02 indeed 11:24:04 so if you get an InputStream from somewhere, it is not guaranteed to behave in the way the default implementation does. 11:24:11 I'd /expect/ them to make it block though 11:24:31 because that's what the interface contract implies 11:36:22 -!- tromp_ has joined. 11:38:44 -!- earendel has joined. 11:41:33 -!- tromp_ has quit (Ping timeout: 276 seconds). 11:43:17 -!- J_Arcane_ has joined. 11:44:54 -!- J_Arcane has quit (Ping timeout: 244 seconds). 11:44:55 -!- J_Arcane_ has changed nick to J_Arcane. 11:45:19 -!- ais523 has quit. 11:51:11 Yeah but the docs also mention that subclasses are free to do otherwise 11:51:32 so basically unless an InputStream overrides the read method it will block 12:06:20 -!- Hoolootwo has quit (Remote host closed the connection). 12:13:01 -!- Hoolootwo has joined. 12:32:24 -!- J_Arcane has quit (Ping timeout: 268 seconds). 12:37:57 -!- idris-bot has quit (Quit: Terminated). 12:38:22 -!- idris-bot has joined. 12:48:33 -!- Sgeo has quit (Ping timeout: 240 seconds). 13:18:21 -!- augur_ has joined. 13:20:30 -!- augur has quit (Ping timeout: 248 seconds). 13:20:30 -!- dingbat has quit (Ping timeout: 248 seconds). 13:23:42 -!- mbrcknl has quit (Ping timeout: 248 seconds). 13:23:50 -!- dingbat has joined. 13:26:28 -!- mbrcknl has joined. 13:51:15 -!- meAgen has joined. 13:52:12 -!- meAgen has left. 14:00:33 -!- Guest6809 has joined. 14:02:10 -!- miko_ has joined. 14:04:45 Hi. I'm looking for a serious, but IMHO higly esoteric language. The main feature is the lack of turing completeness, as no unbounded loops are permitted. 14:05:40 I saw in on HN. It looked a bit like C, and was on github. It was like the serious cusin of cloop. 14:06:14 -!- Melvar has quit (Ping timeout: 260 seconds). 14:06:45 -!- idris-bot has quit (Ping timeout: 268 seconds). 14:07:29 -!- Melvar has joined. 14:10:31 miko_: http://tkatchev.bitbucket.org/tab/ 14:10:33 ? 14:15:44 prooftechnique, while that looks interesting, It wasn't that. It was simpler, and the syntax was a curly braces language. I think it was promoted under the "langsec" mantra. 14:25:20 miko_: Crema? 14:26:40 Yes! Thank You! 15:14:06 -!- miko_ has quit (Ping timeout: 248 seconds). 15:14:51 -!- gremlins has joined. 15:18:54 -!- Reece` has quit (Ping timeout: 268 seconds). 15:19:34 -!- earendel has quit (Ping timeout: 240 seconds). 15:20:16 -!- jaboja has joined. 15:26:03 -!- miko_ has joined. 15:28:36 -!- nooga has quit (Quit: Lost terminal). 15:50:15 -!- Kaynato has joined. 15:59:55 -!- miko_ has quit (Quit: Verlassend). 16:06:23 -!- mroman has quit (Quit: Lost terminal). 16:08:08 -!- bender| has quit (Changing host). 16:08:08 -!- bender| has joined. 16:10:27 -!- bender| has quit (Quit: Leaving). 16:16:38 -!- Kaynato has quit (Ping timeout: 244 seconds). 16:23:52 -!- MoALTz has quit (Ping timeout: 244 seconds). 16:26:08 -!- jaboja has quit (Ping timeout: 250 seconds). 16:27:25 -!- Kaynato has joined. 16:44:52 -!- J_Arcane has joined. 17:04:37 -!- Lilly_Goodman has joined. 17:04:50 Hola 17:10:37 hey 17:12:40 -!- Lilly_Goodman has quit (Excess Flood). 17:13:02 -!- Lilly_Goodman has joined. 17:30:09 -!- jaboja has joined. 17:30:11 -!- hppavilion[1] has joined. 17:31:08 -!- Lilly_Goodman has quit (Ping timeout: 250 seconds). 17:31:48 -!- lambda-11235 has joined. 17:33:51 -!- Lilly_Goodman has joined. 17:40:24 -!- MoALTz has joined. 17:41:15 -!- Caesura has joined. 17:44:28 -!- Kaynato has quit (Ping timeout: 244 seconds). 17:50:37 -!- Caesura has quit (Ping timeout: 252 seconds). 17:59:10 -!- p34k has joined. 18:00:28 -!- jaboja has quit (Ping timeout: 268 seconds). 18:13:43 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 18:15:04 -!- hppavilion[1] has joined. 18:16:01 -!- Reece` has joined. 18:16:15 -!- gremlins has quit (Ping timeout: 246 seconds). 18:19:27 -!- gremlins has joined. 18:19:38 -!- J_Arcane has quit (Ping timeout: 244 seconds). 18:20:07 -!- J_Arcane has joined. 18:22:25 -!- gremlins2 has joined. 18:23:15 -!- Reece` has quit (Ping timeout: 246 seconds). 18:23:57 -!- gremlins has quit (Ping timeout: 246 seconds). 18:24:06 fizzie: Do you think crema goes well with SALSA? 18:24:07 I'm making a military-grade brainfuck compiler 18:25:00 Is it written in Ada 18:25:26 -!- bb010g has joined. 18:26:17 Taneb: No, but it's cross-platform 18:26:56 -!- jaboja has joined. 18:30:46 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 18:31:23 -!- hppavilion[1] has joined. 18:32:55 Taneb: I'm making it include a number of useful /optional/ extensions to ease programmers with its usage 18:33:05 Taneb: But they have to be enabled 18:34:58 -!- Caesura has joined. 18:35:37 Taneb: By the .conf file for that module 18:36:54 (Which is encoded in JSON (though maybe I'll change it to YAML)) 18:39:28 -!- Phantom_Hoover has joined. 18:45:59 -!- jaboja has quit (Ping timeout: 244 seconds). 18:46:01 Okay, so where does the bureaucracy fit in? 18:47:01 prooftechnique: What bureaucracy? I can add that if you like. 18:47:29 prooftechnique: Is bureaucracy a programming pattern, or are you speaking of it in the literal sense? 18:47:43 If in the literal sense, I don't see how it's relevant 18:47:56 It's Military Standard (tm) 18:48:09 Taneb: Oh, yes. 18:48:36 Taneb: Should I add "springback points" 18:48:53 Springback points? 18:48:58 Taneb: Which would be like using CJMP on the top of the stack, but instead it moves the tape 18:49:12 Taneb: So you can PUSH the current tape location, then later POP it and jump back there 18:49:52 It's a... rather extendy extension 18:50:10 Taneb: It is. But it gives me a use for the stack. 18:50:17 Taneb: And it's fully optional 18:50:22 Taneb: And not hard to implement 18:50:33 You can use the stack for [ jumpback! I think 18:50:45 -!- XorSwap has joined. 18:50:50 Taneb: Yes, but I don't, because that'll make ^ confusing if I implement it 18:51:02 If you ^ to somewhere after the [ but before the ] 18:51:26 The metaphor is that you "tie a knot" on the current cell, then you later follow the string. Because programmers can't understand this stuff in the abstract, obviously. 18:51:31 It'd be good for pointers 18:52:29 Taneb: Part of the goal of ABfCI is to be usable, while still including normal bf by default 18:52:42 Taneb: But you have a point about being very extendy. 18:58:14 -!- Lilly_Goodman has quit (Quit: Leaving.). 19:00:30 -!- Reece` has joined. 19:02:07 -!- gremlins2 has quit (Ping timeout: 252 seconds). 19:04:19 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 19:05:17 -!- hppavilion[1] has joined. 19:09:27 -!- jaboja has joined. 19:16:25 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 19:23:06 -!- XorSwap has quit (Ping timeout: 268 seconds). 19:30:57 -!- lambda-11235 has quit (Quit: Bye). 19:36:19 -!- XorSwap has joined. 19:37:35 -!- hppavilion[1] has joined. 19:48:57 -!- jaboja has quit (Ping timeout: 250 seconds). 19:59:39 -!- mihow has joined. 20:00:22 -!- Reece has joined. 20:00:54 -!- Reece` has quit (Ping timeout: 246 seconds). 20:04:03 -!- trn has quit (Quit: quit). 20:08:01 -!- Reece` has joined. 20:09:18 -!- Reece has quit (Ping timeout: 246 seconds). 20:16:33 -!- XorSwap has quit (Ping timeout: 240 seconds). 20:25:18 -!- trn has joined. 20:35:04 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 20:35:58 -!- Zoroaster has joined. 20:38:26 -!- MoALTz has quit (Quit: Leaving). 20:38:50 -!- hppavilion[1] has joined. 20:39:06 -!- Caesura has quit (Ping timeout: 244 seconds). 20:41:42 -!- tromp_ has joined. 20:45:55 -!- tromp_ has quit (Ping timeout: 248 seconds). 20:47:57 -!- jaboja has joined. 20:51:03 -!- Reece` has quit (Ping timeout: 240 seconds). 20:52:18 -!- AnotherTest has quit (Quit: ZNC - http://znc.in). 21:00:33 -!- Coronel has joined. 21:05:03 -!- lleu has quit (Ping timeout: 240 seconds). 21:09:56 -!- Coronel has left ("Leaving"). 21:13:13 What data model hasn't been languaged yet? 21:13:56 Perhaps the Real Minsky Machine? 21:14:03 hmm 21:14:04 banana 21:14:17 There's a special register called "am" 21:14:31 And when you increment or decrement a register, you're really changing by 1/am 21:14:37 am starts at 1 and cannot go below 0 21:14:51 that sounds weird 21:14:59 but interesting 21:15:01 And it is incremented/decremented normally, instead of by the 1/am (unless you're hardcore) 21:15:20 rdococ: It's trivially TC, but it hasn't been done before AFAIK 21:16:58 with just increment and decrement? 21:17:51 perhaps s/Real/Harmonic/ 21:18:12 (since you can easily compute harmonic numbers ;-) 21:18:14 ) 21:20:47 int-e: Oooh :) 21:20:58 rdococ: Yes, it's a Minsky Machine 21:21:05 rdococ: It's not JUST inc/dec 21:21:11 what other operations? 21:21:15 rdococ: It's also an FSM with alternate transformations 21:21:28 it made me think 21:21:47 rdococ: A minsky machine can be thought of as an ASM with the instructions INC(reg), JMP(dest), and JZDEC(reg, dest) 21:21:51 hppavilion[1]: now the evil version... you cannot modify am. instead, am is incremented by one after each operation. 21:21:59 int-e: You're a bad person 21:22:20 int-e: The other evil version is the one where incrementing/decrementing AM is affected by AM 21:22:24 rdococ: You need >= 2 registers for TCness 21:22:26 (to simplify things, test for zero would be replaced by a comparison r < 1/am) 21:22:45 int-e: Why? 21:22:49 int-e: Oh, I see 21:23:01 hppavilion[1]: because I imagine that hitting zero exactly will become extremely hard 21:23:04 int-e: This might make for a good Malbolge... 21:23:25 int-e: I suppose would be, as 1/x has an asymptote at 0 21:23:33 (An asymptote that it does /not/ cross) 21:24:16 hmm 21:25:23 [wiki] [[User:Hppavilion1/Simple Languages]] N https://esolangs.org/w/index.php?oldid=46699 * Hppavilion1 * (+878) Switchboard 21:26:36 int-e: What about a Minsky Machine based on strings? 21:27:00 Actually, that seems fairly similar to a TM 21:27:09 With two registers, you can treat them both as stacks 21:27:12 hppavilion[1]: that sounds too much like a Turing machine (since two stacks easily give you a tape) 21:27:24 int-e: I know 21:27:30 int-e: That's what I just said 21:27:48 not before I started typing :P 21:28:18 int-e: A Minksy Machine with... hm... what other data types could we use? 21:30:20 for lack of a sensible answer... how about popcorn. 21:30:37 -!- Zoroaster has quit (Ping timeout: 252 seconds). 21:31:28 int-e: Map Machine? An Abstract Machine that actually feels like programming? 21:31:47 (Because it has real variables) 21:32:00 int-e: Image Machine, which deals with images. 21:32:56 int-e: Especially useful because you can combine it with a TM or MM to make an Abstract Monitor :P 21:48:56 -!- bb010g has quit (Quit: Connection closed for inactivity). 21:49:41 int-e? 21:53:51 hmm 21:54:13 we could use types? 21:54:30 increment int 21:54:46 rdococ: Maybe 21:54:51 rdococ: Formal Proof Machine? 21:55:03 we could use problems 21:55:07 rdococ: I'd also like to see someone make a TM-like λ-calc interpretation 21:55:09 as in, logical problems 21:55:15 rdococ: Logic Machine? 21:55:29 increment halting problem 21:55:36 now it's the halting plus problem 21:55:37 rdococ: 42 21:55:44 rdococ: = 42 21:55:52 hmm 21:55:53 = 42! 21:56:05 = 42! 21:56:06 how would one describe a logical problem 21:56:35 rdococ: In terms of predicates and such 21:56:46 rdococ: But with the extra ? symbol 21:56:49 a logical problem might be a set of relations of variables 21:56:50 halts(X)? 21:57:12 ? is a postfix operator meaning "devise an expression to solve the previous problem" 21:57:27 halts(X)?? returns FALSE or something 21:57:30 ["y=1": ["x=0"], "y=0": ["x=1"]] 21:57:33 or something 21:57:43 rdococ: So... Table? 21:57:47 maybe 21:57:53 rdococ: Actually, that makes sense... 21:58:13 rdococ: I still think we need a Logic Machine or something 21:58:32 ["one condition": ["conditions that are only true if that condition is true"], "other condition": ["other conditions"], "unknown condition"] 21:58:42 rdococ: Not "only true" 21:58:52 rdococ: More like "are proven true" 21:59:22 ["x = 1": ["y = 0"], "x = 0": ["y = 1"], "x = 0"] -> "y = 1" or something? 21:59:29 The closed world assumption means we could interpret a logical proposition as a gate that turns on when it receives a signal and stays on forever 21:59:43 closed world? 21:59:58 rdococ: Closed World means unproven things are interpreted as FALSE 22:00:04 rdococ: Open World allows them to be UNDEFINED 22:00:32 rdococ: That's looking a lot like PROLOG 22:01:00 give me an example of a bit of prolog 22:01:19 fallible(X) :- human(X). 22:01:36 That means "If X is human, X is fallible" 22:01:36 so a human is fallible? 22:01:41 rdococ: Yes 22:01:41 right 22:01:52 And if you also have: 22:01:53 human(socrates). 22:01:54 ["human": ["fallible"]] 22:01:55 And you call 22:02:01 ?- fallible(socrates) 22:02:02 Maybe you meant: v @ ? . 22:02:08 Prolog will say "yes" 22:02:17 lambdabot: I did not. 22:02:21 .walrus 22:02:45 rdococ: I have a more extensive example about my family tree 22:02:57 [human: [fallible], socrates: [human]] 22:03:15 contains(socrates, fallible) == true 22:03:49 -!- Guest6809 has quit (Quit: This computer has gone to sleep). 22:04:07 rdococ: that actually seems weird in the sense that predicates and instances look the same 22:04:07 rdococ: That works 22:04:48 rdococ: But your earlier ["y = 1": ["x = 1": ["y = 0"], "x = 0": ["y = 1"], "x = 0"]] would be an issue with how Logic Programming works 22:04:52 i.e. note that in prolog you cannot use fallible(human) in the same sense as fallible(X) :- human(X) 22:04:57 rdococ: However, that syntax might work well for type theory 22:04:58 interesting 22:05:13 also, if you like logic programming, have a look at curry 22:05:41 myname: A nice syntax would be fallible(X : human) 22:05:54 Which is syntactic sugar for fallible(X) :- human(X) 22:06:13 i don't think you'd need that kind of sugar 22:06:23 myname: It looks nice 22:06:30 it is not consistent with any syntax in prolog 22:06:47 and i find it less readable 22:06:53 myname: Fair enough 22:07:25 once you get that :- is an implication, prolog makes perfectly sense 22:07:36 rdococ: One thing prolog can't do is anonymous implication 22:07:41 that X: human syntax doesn't fit 22:07:52 also, how would you handle more complex expressions 22:08:02 And it has issues with anonymous predicates 22:08:22 -!- mihow has quit (Quit: mihow). 22:08:51 You can't do speciesHasAttr(S, A) :- species(S), (A(X) :- S(X)) 22:09:18 is there a version with that? 22:09:38 that sounds weird in the same sense as rdococ's syntax 22:09:53 well, it's higher order 22:09:57 rdococ: No, because I don't think there's a known algorithm to unify those 22:10:07 rdococ: In fact, I would go so far as to say it's probably undecidable 22:10:20 afair it is 22:10:31 at least if you have binary relations 22:10:32 -!- tromp has quit (Quit: Konversation terminated!). 22:10:46 -!- Sgeo has joined. 22:10:47 myname: Yep 22:10:52 (undecidable, that is) 22:15:25 -!- mihow has joined. 22:21:17 hmm 22:23:57 father = parent and male 22:24:05 mother = parent and female 22:24:33 father(X, Y) :- parent(X), male(X) 22:25:13 son = parent(x) 22:25:25 or something 22:25:53 just look at prolog? 22:26:00 or, as i said, curry 22:26:14 parent(X, Y) :- child(Y, X) 22:26:23 child(Y, X) = parent(X, Y) 22:26:28 inverse prolog 22:27:11 nah 22:27:16 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 22:27:38 or with my syntax 22:27:43 [parent: [children]] 22:27:58 [sarah: [children: [bob]]] 22:28:00 or something 22:28:26 your syntax looks like a neat idea at first, but i'd say it would be just horrible to implement in 22:28:36 just take your parent: children 22:28:49 what do you do if they differ in arity? 22:28:58 arity? 22:29:06 number of arguments 22:29:17 what do you mean 22:29:21 like, parent only has one argument but children has two 22:29:57 so??? 22:30:07 parent(X) would mean X is a parent. not telling about the kids. children(X, Y) would tell that X is the child of Y 22:30:28 how would you represent the missing information in your format of parent: children? 22:30:35 idk 22:30:43 it makes me tired just looking at it 22:31:03 hmm 22:31:07 go full curry :p 22:31:33 what could be wrong about a nondeterministic haskell derivate 22:31:49 -!- boily has joined. 22:31:50 x ? y = x 22:31:56 x ? y = y 22:32:05 default definition of ? in curry 22:32:13 so 0?1 is either 0 or 1 22:32:41 insert x ys = x:ys 22:32:53 insert x (y:ys) = y:insert x ys 22:33:06 will put an element randomly in a list 22:33:29 hmm 22:33:34 who needs data types 22:33:39 boolean = true ? false 22:33:48 permutation (x:xs) = insert x (permutation xs) 22:34:24 hmm 22:34:46 what about this 22:35:02 also: reverse f x' | f x == x' = x where x free 22:35:09 just reverses a function 22:35:31 "you want to make a parser? easy, make a print function and reverse it" 22:35:44 that actually works? 22:35:50 it does 22:35:56 what 22:36:04 last (xs ++ [e]) = e 22:36:07 also works 22:36:47 reverse reverse? 22:36:56 what happens if you reverse reverse 22:37:42 that would be: g x' | reverse x == x' where x free 22:38:05 doesn't make much sense 22:38:35 but go try it 22:41:24 hmm 22:41:44 I had this string substitution language 22:41:46 it went like this 22:41:53 true and true = true 22:41:59 true and $x = $x 22:42:04 $x and true = $x 22:42:11 false and $x = false 22:42:23 $x and $y = $y and $x 22:42:32 something like that 22:42:36 what is the last one for 22:42:47 the others look just like haskell 22:43:11 it's just the definition of && and || 22:43:44 oh but mine was only that 22:43:56 no data types 22:44:08 just string subtitution 22:46:01 successor predecessor $x = $x 22:46:52 predecessor successor = successor predecessor 22:46:55 add $x $y = add (successor $x) (predecessor $y) 22:46:58 add $x 0 = $x 22:47:12 numerals in a couple of lines of code 22:49:27 still perfectly doable in haskell in the exact way 22:49:35 -!- Frooxius has quit (Quit: *bubbles away*). 22:49:45 in fact, at our university we let students do that thing 22:50:01 define natural numbers, implement addition and substraction 22:50:31 true 22:50:39 I guess mine's a stripped down version then 22:50:46 without data types 22:50:49 because 22:51:03 well, kind of 22:51:18 what you cannot do in your version is 1 and 0 22:51:25 because it doesn't match 22:51:32 0 = 0 22:51:52 actually, no need to define 0 22:52:12 didn't say anything against it 22:52:24 i just said "1 and 0" is an alid expressioni 22:52:33 because none of your and-rules apply 22:53:09 data $x \= $y[] = (type $y = $x) 22:53:31 \=* 23:00:09 -!- jaboja has quit (Ping timeout: 276 seconds). 23:01:03 halts $x = huh... 23:02:52 -!- lleu has joined. 23:02:52 -!- lleu has quit (Changing host). 23:02:52 -!- lleu has joined. 23:07:31 -!- hppavilion[1] has joined. 23:07:48 rdococ 23:09:11 yeah? 23:12:29 -!- p34k has quit. 23:12:53 rdococ: Just alerting you to my returnedness. I was eating yogurt and thus had half access to one hand 23:13:10 http://dl.acm.org/citation.cfm?id=96559.96570 has &lgr; for some reason. I have no clue what that entity means 23:14:52 Anyone know what that means? It's not in Mathematical Operators, Miscellaneous Mathematical Symbols-A, or Miscellaneous Mathematical Symbols-B 23:15:58 -!- jaboja has joined. 23:18:34 Looks like it's a typo 23:18:55 It could be ≶ (≶) 23:20:04 Dammit, looks like the site I checked doesn't cover them all 23:20:11 All entities, that is 23:20:16 ≶ isn't listed 23:20:20 <> 23:20:43 hmm 23:20:47 a novel datatype 23:20:57 I got it! 23:21:07 datatype 23:21:15 INCR integer 23:21:23 integer + fraction 23:21:56 complex - real 23:22:43 x + y = z = z - y = z 23:23:08 egloblam 23:23:27 -!- tromp has joined. 23:23:29 Eglo Blam, the easiest language ever 23:24:38 so there is no turing complete machine with only one register? 23:24:39 rdococ: I vote we invent a Functor Calculus and call it the ð-calc 23:24:46 rdococ: There is 23:24:47 functor? 23:25:01 well there has to be 23:25:12 rdococ: It's called "Turing Machine with a Single Useless and Unusable Register" 23:25:16 lol 23:25:23 took the thoughts straight out of my head 23:25:44 rdococ: Exactly 23:25:48 rdococ: Wait, there is 23:25:52 but what if there's only that register 23:25:54 and nothing else 23:25:56 rdococ: It's a variant on the Minsky Machine 23:26:09 tell me more 23:26:12 rdococ: Then you have "An Extra Useless Register No One Wanted to Use" 23:26:18 rdococ: It's like a minksy machine 23:26:45 rdococ: But you also have cm(r, n) and cd(r, n) 23:26:52 cm and cd? 23:26:55 Where cm is constant multiply and cd is constant divide 23:27:16 cm(3) 23:27:26 incr r 23:27:30 cm r 23 23:27:32 rdococ: Oh, right, you don't need a regaddress :P 23:27:42 hmm 23:27:51 You only divide if it's divisible by that constant, and it enacts an alternate state transition on dividing 23:27:55 rdococ: ^important 23:28:06 an alternate state transition 23:28:08 uh 23:28:10 (I was trying to remember the caveat I was forgetting) 23:28:23 rdococ: The same way JZDEC follows an alternate state transition if r=0 23:28:34 to church? jk 23:29:27 could there be a declarative machine code? 23:29:51 rdococ: Yes 23:29:58 awesome 23:30:09 rdococ: TM descriptions are declarative 23:30:18 descriptions... 23:30:34 my TM brain is not so TC 23:30:44 rdococ: The things that describe which TM to use 23:30:57 hmm 23:33:29 rdococ: The real question is whether there could be an /interrogative/ machine code 23:39:30 [wiki] [[BASICER]] N https://esolangs.org/w/index.php?oldid=46700 * Rdococ * (+1749) Introducing the Beginners' All-purpose Symbolic Instruction Code, Esoteric Revision! Which isn't Turing Complete! Yay! 23:40:06 or BSSIC by Beginners' Some-purpose Symbolic Instruction Code 23:40:22 not all purpose 23:41:33 omg 23:41:35 -!- XorSwap has joined. 23:41:47 I just realized that my other language PRINTASKSWITCHINPUTCASEXGOTOACASEYGOTOBELSEGOTOC has a dirty word in it by complete mistake 23:43:33 that's not a dirty word 23:45:14 rdococ: You hadn't notice that until just now? 23:45:39 just noticed it 23:45:51 coppro: It's "got" I think 23:46:10 -!- jaboja has quit (Ping timeout: 244 seconds). 23:46:13 coppro: My 4th grade english teacher certainly would disagree with you 23:47:07 what? there's nothing wrong with "asks" 23:48:22 uh, look after INPUT 23:48:27 coppro: I may have made this joke before, but who's ppro? Your dual? 23:48:30 rdococ: *sigh* 23:48:32 hppavilion[1]: yes 23:48:45 rdococ: We were being funny 23:48:52 oh 23:48:57 coppro: No, I asked *who* 23:49:03 hppavilion[1], you're in an array?! 23:49:03 coppro: What's ppro like? 23:49:28 rdococ: No, hppavilion is a number and I'm calculating a range 23:49:36 oh 23:49:37 s/calculating // 23:49:57 hppavilion = 0 23:50:05 NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- 23:50:11 -!- hppavilion[1] has quit (Quit: Leaving). 23:50:18 huh? 23:50:32 did I mess up the variable? 23:50:59 hppavilion = 1 23:51:17 * rdococ is concerned for a range? weird 23:51:17 -!- hppavilion[1] has joined. 23:51:34 rdococ: Don't do that again 23:51:36 hppavilion = 1 23:51:46 rdococ: People divide by me occasionally 23:52:06 what was hppavilion before I set it to 0 23:52:08 hppavilion = pi^(e*i) 23:52:11 Fixed 23:52:27 what would happen if I set you to 3? 23:52:35 hppavilion[1]: I don't know 23:52:53 co(ppro) 23:53:09 coppro is a coroutine running ppro 23:53:34 I'm rdococ, a function removing a directory called ococ 23:53:39 rdococ: You could also be the coproduct of professionalism 23:53:46 he* 23:53:58 -!- lleu has quit (Read error: Connection reset by peer). 23:54:00 or you mean me? 23:54:11 rdococ: Whoops, coppro 23:54:45 oh 23:55:33 what about a system where computation is achieved by time travel 23:56:34 `wisdom 23:56:46 `? wisdom 23:56:57 `? `? 23:57:04 [bot: father] 23:57:09 now he's a deadBOT dad 23:57:33 -!- tromp has quit (Remote host closed the connection). 23:57:48 what about a language where programs are channels 23:58:05 ​`? ¯\(°​_o)/¯ 23:58:05 tautology/A tautology is a tautology. Oren invented them. 23:58:05 wisdom is always factually accurate, except for this entry, and uh that other one? it started with like, an ø? 23:58:31 `wisdom 23:58:32 `wisdom 23:58:33 `wisdom 23:58:37 oklopol/oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid." 23:58:37 identity function/The identity function is a mockingbird. 23:58:37 1/The 1 is just for disambiguation. 23:58:55 \oren\: he\\oren\. you invent things too? 23:59:45 I once used the loeb combinator to solve an "electric circuit" problem. the solution is quite neat ^^ 23:59:52 `learn `? is a blue tit 23:59:55 Relearned '`': `? is a blue tit 23:59:59 uh