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