←2015-11-19 2015-11-20 2015-11-21→ ↑2015 ↑all
00:00:06 <hppavilion[1]> FireFly: It is. I think it's clever and awesome, but it's probably just stupid.
00:00:30 <hppavilion[1]> I mean, the efficiency is probably going to be atrocious. Then again, Kastor isn't a particularly quick language in the first place.
00:01:38 <tswett> You know, in SQL, an "OUTER SELECT" would make perfect sense.
00:01:57 <hppavilion[1]> FireFly: The only problem I can think of with that syntax, though, is if you want to write a float in hex for some reason: You think it should be 0xABC.123, but it'd actually have to be 0xABC.0x123 and there's no way to fix it without making floats just a builtin, which everytime I think about becomes a better and better idea but I'm probably not going to do anyway.
00:02:23 <tswett> hppavilion[1]: so 1.01 would be interpreted as 1.1, aye?
00:03:12 <hppavilion[1]> tswett: ...
00:03:16 <hppavilion[1]> Fuckfuckfuckfuckfuck
00:03:21 <tswett> Roll with it.
00:03:24 <hppavilion[1]> No.
00:03:40 <hppavilion[1]> It's designed to still be usable, despite drawing on Eso.
00:03:41 <tswett> Okay.
00:04:22 <tswett> Ooh, here's an idea.
00:04:32 <tswett> In addition to the . operator, there's a .0 operator, a .00 operator, and so on.
00:04:40 <tswett> So that would be: 1 .0 1
00:05:00 <tswett> How to do an OUTER SELECT: Add a NULL row to each table. Take the cartesian product of all those tables. Filter by the WHERE conditions, treating each one involving a NULL as satisfied. Project as desired. Take only the maximum tuples.
00:05:03 <tswett> Sump'm like that.
00:06:45 -!- mauris has joined.
00:08:55 -!- mauris__ has quit (Ping timeout: 240 seconds).
00:11:19 <hppavilion[1]> tswett: But that doesn't fit the operator syntax xD. But no, I'm just sticking with float.
00:11:53 <tswett> Here's another idea.
00:12:01 <tswett> Reverse the digits of the rhs part.
00:12:17 <tswett> The expression 120 . 240 represents 120.042.
00:13:39 <hppavilion[1]> tswett: No. This language is meant to actually be usable.
00:13:47 <tswett> Roger.
00:13:56 <hppavilion[1]> Like, python-usable if speed isn't a big issue.
00:14:08 <tswett> If I ever finish Tokiber, I'll create an Esolang page for it.
00:14:33 <tswett> Usability will be a major goal, but *usefulness*, not so much.
00:17:07 <hppavilion[1]> I'm currently working on how integer tokens work
00:18:00 <hppavilion[1]> Basically, 0b[binary number], 0q[quaternary number], 0o[octal number], and 0x[hex number] are builtin, along with 0n[decimal base]_[arbitrary-base number].
00:18:43 <hppavilion[1]> You can define how arbitrary-base numeric alphabets behave; by default they support 0-9a-zA-Z as digits, so you can't yet do base64 constants.
00:19:44 <hppavilion[1]> All numbers support underscores wherever you like (except leading (that's a variable) and trailing (a special). That does not work).
00:21:25 <hppavilion[1]> Also, you can define your own encodings that just feed a class constructor or a function a string; e.g. 0rn_VII could be programmed to return 0q13 (7)
00:22:03 <hppavilion[1]> (0rn_VII works because any numeric or letter-like character can go after a 0[type]_)
00:34:30 <hppavilion[1]> OK, finished the BNF
00:36:58 <Taneb> Things I would not recommend: having a moustache
00:40:35 <FireFly> How so?
00:40:59 -!- oerjan has joined.
00:41:20 <Taneb> It itches
00:41:23 <Taneb> It itches so much
00:41:32 <quintopia> nah
00:41:39 <quintopia> its fine
00:41:43 <quintopia> to tame it
00:41:50 <quintopia> with wax
00:42:11 <Taneb> quintopia: it's not long enough yet
00:44:28 -!- boily has joined.
00:45:06 -!- heroux has quit (Ping timeout: 240 seconds).
00:45:34 -!- heroux has joined.
00:45:48 <oerjan> <hppavilion[1]> Fuckfuckfuckfuckfuck <-- design is hard.
00:46:01 <hppavilion[1]> oerjan: Yes. It is.
00:47:43 <boily> hppavellon[1]! tell me all.
00:48:11 <oerjan> bohily
00:50:06 <boily> hellørjan!
00:51:19 <\oren\> ヘロルヤン
00:52:43 <boily> \helloren\. I believe ヘレリャン is closer hth
00:53:34 <oerjan> i believe you're evil for making me use google translate hth
00:54:27 <\oren\> ゲハハハハハハ
00:56:47 <boily> オホホホホホホ
00:57:53 <oerjan> i knew that was a bad idea.
00:58:01 <oerjan> ondskapsfulle beist
01:00:02 <hppavilion[1]> boily: I'm making a programming language called Kastor. It draws on Eso, but is made for general usage.
01:00:09 <hppavilion[1]> Vaguely like perl.
01:00:14 <boily> perl is eso.
01:00:47 <hppavilion[1]> It is most definitely eso.
01:01:21 <hppavilion[1]> boily: I'm currently working on how integers work; I took the _ syntax from Perl and am allowing custom 0c prefix codes
01:03:15 -!- mauris has quit (Ping timeout: 272 seconds).
01:07:45 <Taneb> It is a weird experience listening to a video from ICFP and there being a familiar voice asking a question at the end
01:09:28 <Taneb> Although, I guess, not that weird
01:09:39 <Taneb> I'd imagine it'd be pretty weird if I heard my own voice there
01:18:30 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:26:53 -!- \oren\ has joined.
01:41:09 -!- andrew has joined.
01:57:10 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
02:15:37 -!- hppavilion[1] has joined.
02:17:54 -!- boily has set topic: The ウフフ channel. | /ɛ̃ˈglɪʃ spɛˈliŋ ʀɘfɔʀm/ | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://esolangs.org/.
02:18:11 -!- boily has quit (Quit: IMAGINARY CHICKEN).
02:20:25 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
02:29:57 -!- hppavilion[1] has joined.
02:30:05 -!- mauris has joined.
02:34:44 -!- llue has quit (Read error: Connection reset by peer).
02:35:00 -!- llue has joined.
02:39:47 -!- \oren\ has quit (Ping timeout: 264 seconds).
02:41:22 -!- \oren\ has joined.
02:53:01 <hppavilion[1]> I've just integrated my first Unicode character into Kastor :)
02:53:05 <hppavilion[1]> Well, two
02:53:46 <hppavilion[1]> Specifically, ⧼ and ⧽ to denote arrays/vectors
02:53:55 <izabera> what is kastor?
03:10:38 <oerjan> pizzarama
03:11:21 <\oren\> `unidecode ⧼⧽
03:11:22 <HackEgo> ​[U+29FC LEFT-POINTING CURVED ANGLE BRACKET] [U+29FD RIGHT-POINTING CURVED ANGLE BRACKET]
03:11:35 <\oren\> I don't have those
03:11:44 <\oren\> need to add them
03:11:47 <oerjan> shocking
03:12:13 <\oren\> yeah, i'm shocked, I thought I had all the damn operators already
03:17:15 <hppavilion[1]> OK, I changed the symbols because I was using the wrong ones xD
03:18:27 <hppavilion[1]> I'm now using ⟨⟩ instead of ⧼⧽ (the former ones were curved and looked a bit nicer, but I prefer the chevrons because they're more typical)
03:18:50 <hppavilion[1]> \oren\: It's from misc operators, as it turns out
03:19:15 <hppavilion[1]> izabera: Programming language I'm making based on the principal that languages should be usable, but combined with all the teachings of Esobuddha.
03:22:31 <hppavilion[1]> Huh. Indian programmers often refer to {"{", "}"} as "Flower Brackets"
03:22:44 <hppavilion[1]> (Notice that I used set notation there solely because it's more confusing)
03:39:58 <hppavilion[1]> Does unicode lack the logical xnor?
03:40:44 <zgrep> This? https://reference.wolfram.com/language/ref/character/Xnor.html
03:41:07 <\oren\> AGH, that block (misc math sybols B) is full of annoying crap!
03:41:51 <hppavilion[1]> Dammit, there isn't one in the entire fucking formal logic
03:42:30 <hppavilion[1]> zgrep: Thank you! There we go!
03:42:55 <zgrep> Google helps, you know, rather than digging through a table of unicode values...
03:44:10 <hppavilion[1]> Dammit, fonts don't support it
03:44:14 <hppavilion[1]> Not many, at least
03:44:40 <\oren\> tell me the code point and I'll add it if I can draw it
03:45:44 <hppavilion[1]> \oren\: F4A2
03:46:05 <hppavilion[1]> I might have to embed your font into my IDE for Kastor, \oren\ xD
03:46:40 <hppavilion[1]> Wouldn't that be cool?
03:46:58 <\oren\> thsat's a private use character point.
03:47:19 <\oren\> e.g. not an official unicode character
03:47:27 <hppavilion[1]> Oh
03:47:29 <hppavilion[1]> Shit.
03:47:37 <hppavilion[1]> That's a problem.
03:47:44 <\oren\> so even GNU unifont won't have it
03:48:46 <hppavilion[1]> I need a surrogate symbol to represent logical xor... It has to look good among
03:48:46 <hppavilion[1]> ∧∨⊻⊼⊽
03:49:08 <hppavilion[1]> My problem is that even formal logicians don't have a symbol for some reason xD
03:49:35 <\oren\> xor is the same as not equal, so xnor would be =
03:50:31 <hppavilion[1]> \oren\: Except the ∧∨⊻⊼⊽ symbols are type-insensitive, being the "logical" versions of the operator: ''==0 evaluates to false, but ''<xnor>0 evaluates to true.
03:51:09 <\oren\> you could use some other variant of =
03:51:13 <hppavilion[1]> I could
03:51:35 <\oren\> ≖≗≘≙≚≛≜≝≞≟ any of these look good
03:52:08 <hppavilion[1]> Perhaps ≚?
03:52:12 <hppavilion[1]> Oh, you found that one xD
03:52:28 <\oren\> and those are all in my font!
03:52:32 <hppavilion[1]> Wait, no
03:52:37 <hppavilion[1]> I want the other one
03:52:54 <hppavilion[1]> Wait, I didn't send the message those last two posts were referring to xD
03:53:51 <hppavilion[1]> ≙ makes the most sense, as it's "="+"∧", so it's logical. Only problem is people might confuse it for an assignment operator, but oh well
03:54:23 <\oren\> I prefer an arrow for assignemtn
03:54:47 <\oren\> a ← 4
03:54:56 <hppavilion[1]> Wait, no
03:55:13 <hppavilion[1]> ≚ is or. So I'll use that.
03:58:00 <hppavilion[1]> \oren\: Maybe I'll use that.
03:58:55 <izabera> does anyone know how to check if a process has a fd that points to a given file?
03:59:01 <izabera> how does lsof do it?
03:59:29 <izabera> all i can think of is to readlink every file in /proc/pid/fd
03:59:50 <hppavilion[1]> \oren\: Kastor currently has planned 12 different types of builtin collection xD
04:01:10 -!- llue has quit (Quit: That's what she said).
04:04:31 <hppavilion[1]> \oren\: You must know a lot of unicode characters from fontsmithing. Is there a good type of bracket I could use for bags?
04:07:05 <\oren\> ⦃⦄
04:07:16 <\oren\> `unidecode ⦃⦄
04:07:17 <HackEgo> ​[U+2983 LEFT WHITE CURLY BRACKET] [U+2984 RIGHT WHITE CURLY BRACKET]
04:08:04 <hppavilion[1]> \oren\: I just was thinking that when I openned hexchat to see that suggestion. That was awesome.
04:13:18 <hppavilion[1]> 13 possible collections. Wow.
04:13:34 <hppavilion[1]> Oh, ordered bag
04:13:53 <\oren\> that would just be a sorted array dudu
04:13:59 <\oren\> s/dudu/dude/
04:16:15 <hppavilion[1]> \oren\: That's one way of representing it, but not the only way
04:16:30 <hppavilion[1]> And thus I'm including it
04:16:43 <hppavilion[1]> However, no bagdicts or anything.
04:20:17 <hppavilion[1]> Because that doesn't make any sense, and more importantly, it looks almost like "big dicks" and no just no.
04:33:03 <HackEgo> [wiki] [[Combinatory logic/Analysis of combinators]] http://esolangs.org/w/index.php?diff=45554&oldid=45461 * Hppavilion1 * (+421) Some stuff, I hope
04:33:10 <hppavilion[1]> Yay!
04:42:01 <\oren\> hppavilion[1]: well in that case the correct character is ⇫
04:42:53 <\oren\> or maybe Ⰴ or Ⰲ
04:45:41 -!- ent0nces has joined.
04:46:41 <hppavilion[1]> \oren\: ?
04:46:58 <hppavilion[1]> My font won't render any of those characters, so I don't know what you're talking about
04:47:43 <hppavilion[1]> It won't render in neoletteres either
04:48:08 <hppavilion[1]> ...
04:48:14 <hppavilion[1]> I think I'm going to keep IRC on neoletters
04:50:26 -!- idris-bot has quit (Ping timeout: 260 seconds).
04:51:15 -!- Melvar has quit (Ping timeout: 255 seconds).
05:00:14 -!- hppavilion[1] has quit (Quit: WALRUS MAAAAAAAAAAAAN).
05:00:35 -!- hppavilion[1] has joined.
05:04:17 <hppavilion[1]> Is a multiset a bag?
05:06:07 <hppavilion[1]> Wait, I just remembered I might not want to use x ← 5 as assignment unless there's a good-looking augmented assignment syntax for ← assignment. Do you have anything, \oren\?
05:14:12 <oerjan> hppavilion[1]: afaik
05:28:28 -!- bb010g has joined.
05:56:10 -!- ent0nces has quit.
06:00:11 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
06:11:11 -!- heroux has quit (Ping timeout: 250 seconds).
06:12:06 -!- heroux has joined.
06:34:05 -!- hppavilion[1] has joined.
06:37:13 <HackEgo> [wiki] [[Semantic Brain]] http://esolangs.org/w/index.php?diff=45555&oldid=45548 * Zerk * (-46) Fixed an infinite loop in cumulative adder code.
06:42:25 <oerjan> re. today's girl genius: i bet 10 zorkmids that's othar
06:53:10 -!- hppavilion[1] has quit (Ping timeout: 260 seconds).
06:57:11 -!- andrew has quit (Remote host closed the connection).
06:59:04 -!- andrew has joined.
07:03:52 -!- andrew has quit (Remote host closed the connection).
07:04:33 -!- hppavilion[1] has joined.
07:04:46 <b_jonas> hppavilion[1]: what's wrong with just using circled plus for xor?
07:04:47 <hppavilion[1]> oerjan: afayk what? I was afk.
07:04:59 <hppavilion[1]> b_jonas: No, not xor, xnor
07:05:05 <b_jonas> oh that
07:05:12 <b_jonas> for that, triple horizontal line
07:05:23 <oerjan> hppavilion[1]: afa what you said 2 lines before hth
07:05:24 <hppavilion[1]> b_jonas: That's "is defined as"
07:05:37 <hppavilion[1]> Ah
07:06:21 <oerjan> oh hm
07:06:27 <oerjan> <=>
07:06:43 <hppavilion[1]> oerjan: What are you trying to help me with? xD
07:07:35 <oerjan> i changed the subject hth
07:07:39 <oerjan> the xnor
07:07:59 <oerjan>
07:08:16 <oerjan> as a boolean proposition operator
07:09:14 <b_jonas> I still say triple horizontal line. Isn't that what Knuth uses these days?
07:09:44 <oerjan> or maybe just ↮ without the slash
07:10:17 <oerjan> hppavilion[1]: https://en.wikipedia.org/wiki/Logical_biconditional has several options
07:10:41 <hppavilion[1]> oerjan: I believe I settled on ≚
07:10:52 <hppavilion[1]> I'll check out that page
07:11:28 <oerjan> of course you settled on something my client cannot display
07:11:42 <oerjan> well it couldn't display the last i suggested either
07:14:40 <hppavilion[1]> oerjan: It's the equal sign with an "or" sign above it; neoletters supports it.
07:15:36 <oerjan> OKAY
07:16:34 <hppavilion[1]> The PROBLEM with that is that it's confusing as it looks like an assignment operator
07:17:00 <hppavilion[1]> Should I implement ⚢⚣⚤⚥⚦⚧⚨⚩ as operators, allow them to be included in names, or do something else with them? (xD)
07:20:08 -!- J_Arcane has quit (Ping timeout: 246 seconds).
07:22:53 <hppavilion[1]> Same goes for ♂♀, ☿♁♃♄♅♆♇, ♈♉♊♋♌♍♎♏♐♑♒♓, ♔♕♖♗♘♙/♚♛♜♝♞♟, ♠♡♢♣♤♥♦♧, and ⚭⚮⚯
07:25:22 <hppavilion[1]> And why not ⚊ ⚋ / ⚌ ⚍ ⚎ ⚏ / ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷
07:33:52 <hppavilion[1]> Should I use the
07:33:52 <hppavilion[1]> ⊻⊼⊽ for logical operations XOR, NAND, and NOR, or should I switch to the arrow notation?
07:34:07 <hppavilion[1]> I think I'll stick with these and reserve arrows for othere purposes
07:41:43 <b_jonas> hmm....
07:52:09 -!- Patashu has joined.
08:00:12 -!- bb010g has quit (Quit: Connection closed for inactivity).
08:28:43 <HackEgo> [wiki] [[Aubergine]] http://esolangs.org/w/index.php?diff=45556&oldid=45455 * Quintopia * (+77) /* Examples */
08:32:46 <HackEgo> [wiki] [[Cellular automaton]] http://esolangs.org/w/index.php?diff=45557&oldid=30870 * 202.99.113.80 * (+11) /* Relation to esoteric programming */
08:33:02 -!- hppavilion[1] has quit (Ping timeout: 260 seconds).
08:42:13 <HackEgo> [wiki] [[Purple]] N http://esolangs.org/w/index.php?oldid=45558 * Quintopia * (+3993) Created page with "{{infobox proglang |name=Purple |paradigms=imperative |author=[[User:Quintopia]] |year=[[:Category:2015|2015]] |class=[[:Category:Turing complete|Turing complete]] |refimpl=Se..."
08:43:27 -!- AnotherTest has joined.
08:46:14 <HackEgo> [wiki] [[BitShift]] http://esolangs.org/w/index.php?diff=45559&oldid=45549 * Bas * (-5)
08:49:35 <HackEgo> [wiki] [[Purple]] http://esolangs.org/w/index.php?diff=45560&oldid=45558 * Quintopia * (-8) bleh
08:53:11 -!- AnotherTest has quit (Ping timeout: 272 seconds).
09:19:12 -!- andrew_ has joined.
09:36:32 -!- oerjan has quit (Quit: Later).
09:40:25 <HackEgo> [wiki] [[Aubergine]] http://esolangs.org/w/index.php?diff=45561&oldid=45556 * Quintopia * (+5) /* Examples */
09:40:40 <HackEgo> [wiki] [[Aubergine]] http://esolangs.org/w/index.php?diff=45562&oldid=45561 * Quintopia * (+0) /* ]Hello, world! */
09:41:52 <HackEgo> [wiki] [[Aubergine]] http://esolangs.org/w/index.php?diff=45563&oldid=45562 * Quintopia * (+4) /* Examples */
09:44:58 <HackEgo> [wiki] [[Purple]] http://esolangs.org/w/index.php?diff=45564&oldid=45560 * Quintopia * (+9) /* Examples */
09:47:02 -!- mroman has joined.
09:47:05 <mroman> fnard
09:59:04 -!- ais523 has joined.
10:09:48 -!- andrew_ has quit (Remote host closed the connection).
10:12:47 <HackEgo> [wiki] [[Hello world program in esoteric languages]] http://esolangs.org/w/index.php?diff=45565&oldid=45232 * Quintopia * (+224)
10:13:31 <HackEgo> [wiki] [[Hello world program in esoteric languages]] M http://esolangs.org/w/index.php?diff=45566&oldid=45565 * Quintopia * (+3) /* Aubergine */
10:16:56 <HackEgo> [wiki] [[Language list]] http://esolangs.org/w/index.php?diff=45567&oldid=45464 * Quintopia * (+13) /* P */
10:17:50 <HackEgo> [wiki] [[Language list]] http://esolangs.org/w/index.php?diff=45568&oldid=45567 * Quintopia * (+16) /* U */
10:23:15 -!- callforjudgement has joined.
10:23:30 -!- ais523 has quit (Ping timeout: 244 seconds).
10:33:55 <HackEgo> [wiki] [[User:Quintopia]] http://esolangs.org/w/index.php?diff=45569&oldid=42578 * Quintopia * (+214)
10:35:17 -!- callforjudgement has changed nick to ais523.
10:35:19 <mroman> well I just answered a haskell question on stackexchange
10:35:24 <mroman> let the hatred begin :)
10:41:15 <mroman> http://codepad.org/xZCenjhm <- but technically that's how you could implement "inheritance" of some sorts
10:47:59 <HackEgo> [wiki] [[Purple]] http://esolangs.org/w/index.php?diff=45570&oldid=45564 * Quintopia * (+7) /* Python 2 */
10:56:48 -!- ais523 has quit.
11:20:06 -!- Phantom_Hoover has joined.
11:20:14 -!- Froox has quit (Read error: Connection reset by peer).
11:20:19 -!- Frooxius has joined.
11:21:38 -!- Frooxius has quit (Read error: Connection reset by peer).
11:21:47 -!- Frooxius has joined.
11:31:48 -!- boily has joined.
11:45:47 -!- gniourf has quit (Quit: Leaving).
11:55:16 <boily> @massages-loud
11:55:16 <lambdabot> You don't have any messages
11:55:51 <boily> int-e: int-ello. is it possible to specialcase lambdabot for loud massages please?
11:57:04 <Jafet> @sausages
11:57:05 <lambdabot> Unknown command, try @list
12:01:37 -!- Patashu has quit (Ping timeout: 265 seconds).
12:02:45 -!- Patashu has joined.
12:05:41 -!- Patashu has quit (Remote host closed the connection).
12:06:19 -!- Patashu has joined.
12:13:22 -!- lleu has joined.
12:19:13 -!- Melvar has joined.
12:28:25 -!- Frooxius has quit (Read error: Connection reset by peer).
12:28:33 -!- Frooxius has joined.
12:29:02 -!- Patashu has quit (Ping timeout: 260 seconds).
12:31:07 -!- boily has quit (Quit: UNREADABLE CHICKEN).
12:51:11 <Taneb> I wonder how many people are bilingual in two sign languages
12:59:07 <b_jonas> Taneb: bilingual to at least what level of knowledge?
12:59:25 <Taneb> At least conversational
13:01:47 -!- Frooxius has quit (Quit: *bubbles away*).
13:28:46 -!- ais523 has joined.
14:24:08 -!- ais523 has quit.
14:24:39 -!- ais523 has joined.
14:31:13 -!- ais523 has quit.
14:32:43 -!- ais523 has joined.
14:49:12 <mroman> What's the best data structure in Haskell for writing interpreters on a sequence of instructions where you need to do forwards and backwards jumps?
14:49:25 <mroman> Map? HashTable? Array?
14:49:50 <mroman> and you can't parse it neatly like Brainfuck data BF = Loop [BF] | Increment
14:49:56 <ais523> oh no, someone's going to mention lens aren't they
14:50:11 <mroman> Well, Taneb is online so
14:50:15 <Taneb> What
14:50:16 <mroman> there's the chance of that happening, yes.
14:50:16 <Taneb> I am
14:50:36 <Taneb> Huh
14:50:41 <Taneb> mroman: I'd use vector
14:51:41 <Taneb> Or a skiplist, maybe???
14:52:18 <Jafet> Just precompute the target address for each jump hth
14:53:32 <mroman> skiplists in haskell?
14:53:37 <mroman> does that even work?
14:54:25 <Melvar> Wait wait!
14:54:32 <Melvar> Oh derp.
14:54:43 <Melvar> Was scrolled up.
14:55:00 <mroman> well I guess I can't precompute every jump anyway
14:56:40 <Melvar> @tell hppavilion[1] Wait wait for bags you must use ⟅⟆ as brackets. {LEFT,RIGHT} S-SHAPED BAG DELIMITER
14:56:41 <lambdabot> Consider it noted.
14:58:34 <ais523> that unicode character name is irrefutable
15:02:16 <Melvar> More importantly those look awesomely bag-like.
15:03:29 <Jafet> 💰💰💰
15:04:22 <Melvar> Pretty much, yeah.
15:04:38 <Melvar> ⟅$⟆
15:05:02 <Jafet> Combining bag characters
15:05:02 <mroman> I wonder if I can do indentation based thingies in parsec
15:05:08 <mroman> should be possible
15:05:17 <Jafet> Hmm, delimiters as combining characters
15:05:32 -!- Welo has joined.
15:05:37 <ais523> surely you just need a COMBINING BOTTOM OF BAG to place below the $?
15:06:16 <Melvar> mroman: I think it’s troublesome. There’s been a paper about indentation sensitive parsing, but I don’t remember if there’s a lib based on it.
15:07:32 <Melvar> ⟅$̲⟆
15:11:37 <Jafet> You can, of course, implement any computable grammar next to parsec.
15:13:44 <coppro> idea: what about a language where combining characters are operators
15:14:11 <Jafet> The zalgo programming language
15:15:02 <Jafet> (Gives a new meaning to code density...)
15:15:06 <coppro> https://hackage.haskell.org/package/indents-0.3.3/docs/Text-Parsec-Indent.html
15:26:18 <mroman> aw fuck
15:26:19 <mroman> yeah
15:26:22 <mroman> you have to use lots of tries
15:26:23 <mroman> :(
15:27:38 <mroman> but that doesn't soom to work either
15:29:54 <mroman> the problem is that if you expect 6 spaces to be there
15:30:04 <mroman> but there are only three there (which means block end)
15:30:11 <mroman> then parsec will still expect those 3 additional spaces
15:31:36 <mroman> https://hackage.haskell.org/package/indents-0.3.3/docs/Text-Parsec-Indent.html
15:31:38 <mroman> although there is this
15:32:16 <Jafet> You could embrace it instead.
15:34:14 <mroman> why not begin ... end
15:34:15 <mroman> or
15:34:18 <mroman> begin ... nigeb
15:34:43 <mroman> procedure ... while ... elihw .. erudecorp
15:34:51 -!- J_Arcane has joined.
15:34:54 <mroman> man that'd be annoying
15:35:17 <mroman> foreach x in y do ... hcaerof
15:35:56 <ais523> I'm vaguely sure I've seen "erudecorp" in that context before (presumably as a joke)
15:36:13 <mroman> There are plenty of rude corporations in the see
15:36:15 <ais523> (vaguely sure = a little less sure than "pretty sure")
15:36:56 <mroman> `learn erudecorp is the shortform of e-rude corporation. The term is used for corporations that are electronically rude.
15:36:59 <HackEgo> Learned 'erudecorp': erudecorp is the shortform of e-rude corporation. The term is used for corporations that are electronically rude.
15:37:39 <mroman> One using german swear speech would be fun
15:38:02 <mroman> fürjedes x in y friss das ... du sack
15:38:31 <mroman> versuche x menno .... so'n müll
15:38:47 <mroman> = try: x except: ....
15:42:05 <mroman> öffentlich statisch hauptmethode(Schnur[] argumente) ist ganz i; solange(i < 10) mach print(i) aber schnell gecheckt?
15:43:29 * J_Arcane reconstructs a code snippet by hand from a Twitter image, thus learning why he should use version control even for small projects.
15:47:36 -!- ais523 has quit.
15:48:16 <mroman> http://codepad.org/858XP1XQ
15:48:28 -!- ais523 has joined.
15:48:35 -!- ais523 has quit (Changing host).
15:48:35 -!- ais523 has joined.
15:51:56 <HackEgo> [wiki] [[List of ideas]] http://esolangs.org/w/index.php?diff=45571&oldid=44809 * 160.85.232.226 * (+413) lolcode in german.
16:01:36 <Melvar> mroman: Now add that modifiers have to be properly inflected for what they go on.
16:02:18 <Melvar> Also, “Schnur”, really? <ω<
16:03:22 <mroman> well
16:03:24 <mroman> yes
16:03:27 <mroman> Schnur
16:03:36 <mroman> double -> doppelt
16:03:42 <mroman> float -> schwimm
16:04:00 <Melvar> >ω<
16:07:02 <Melvar> “Zeichenkette”, “Gleitkommazahl” (“doppeltgenaue” or “einfachgenaue”).
16:07:20 <mroman> Niemals
16:07:24 <mroman> Das wäre ja nicht Lustig.
16:07:50 <mroman> KRANKENHAUSKIOSKVERKAEUFERIN
16:07:55 <Melvar> Ich weiß, ich konnte das nur einfach nicht so stehenlassen.
16:08:39 <mroman> bool -> buhl
16:08:57 <mroman> Zwischengesicht Vergleichbar
16:09:32 <Melvar> Amusing: “chain” and “Kette” are cognate, but not Germanic; they’re from Latin “catena”, but in the English case of course it got filtered through Old French first.
16:10:43 <Melvar> (“Schnittstelle”)
16:14:21 -!- J_Arcane has quit (Ping timeout: 255 seconds).
16:23:02 <FreeFull> Chain in Polish is łańcuch
16:23:04 <FreeFull> Probably not cognate
16:27:43 -!- rdococ has joined.
16:28:10 <b_jonas> Melvar: of course. the Mormann warriors have learnt that word from the Roman soldiers who took their lived ones away as slaves chained up
16:47:59 -!- J_Arcane has joined.
16:49:46 <mauris> schwimm. oh my god
17:04:48 -!- Guest23593 has joined.
17:12:57 -!- AnotherTest has joined.
17:25:09 <mroman> Ach du liebe Güte.
17:26:02 <mroman> There will also be a swiss german dialect of it
17:26:11 <mroman> maybe
17:26:48 -!- Guest23593 has quit (Remote host closed the connection).
17:43:31 -!- Welo has quit (Quit: Leaving).
17:53:48 <mroman> mauris: to float = schwimmen
17:53:56 <mroman> float imperative => schwimm
17:53:59 <mauris> i know!
17:54:02 <mauris> it's just funny
17:54:06 <mroman> It's an imperative language after all!
17:54:10 <mauris> haha
17:54:57 <Melvar> Well, depends … sometimes you want “schweben” instead.
18:07:07 <mroman> I'm watching "Best of Donald Trump"
18:07:22 <mroman> makes a nice sitcom
18:10:18 <mroman> wait
18:10:24 <mroman> that wrestling video with donald trump
18:10:27 <mroman> is this for real?
18:11:08 <mroman> what the hell is this
18:12:44 <mroman> (real for wrestling purposes)
18:22:43 -!- bb010g has joined.
18:29:14 -!- mroman has quit (Quit: Lost terminal).
18:49:23 -!- mauris has quit (Ping timeout: 264 seconds).
18:54:58 -!- gniourf has joined.
19:08:10 -!- hppavilion[1] has joined.
19:13:36 <hppavilion[1]> I need a good name for a heavily symbolic (as in, gets-its-syntax-from-"Misc. Symbols"-symbolic) language. I'm currently calling it "Langdon"
19:16:11 <hppavilion[1]> How about Apollo? I might roll it in with Kastor in a way
19:17:21 <hppavilion[1]> Even better, I could just roll my ideas for it into UniFunge and name UniFunge apollo.
19:17:24 <hppavilion[1]> I think I'll do that
19:18:27 <HackEgo> [wiki] [[Special:Log/move]] move * Hppavilion1 * moved [[User:Hppavilion1/UniFunge]] to [[Apollo]]: Came up with a good name for the language
19:19:19 <HackEgo> [wiki] [[Apollo]] http://esolangs.org/w/index.php?diff=45574&oldid=45572 * Hppavilion1 * (-7) Fixed names for new page
19:21:13 <hppavilion[1]> Actually, I think I've changed my mind xD
19:22:00 <HackEgo> [wiki] [[Apollo]] http://esolangs.org/w/index.php?diff=45575&oldid=45574 * Hppavilion1 * (+8) Undo revision 45572 by [[Special:Contributions/Hppavilion1|Hppavilion1]] ([[User talk:Hppavilion1|talk]])
19:22:25 <HackEgo> [wiki] [[Special:Log/move]] move_redir * Hppavilion1 * moved [[Apollo]] to [[User:Hppavilion1/UniFunge]] over redirect: Changed mind. Sorry.
19:23:01 <hppavilion[1]> And... on to lunch.
19:27:44 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
19:29:07 -!- hppavilion[1] has joined.
19:29:09 <hppavilion[1]> Should I use ≪ and ≫ instead of << and >> for bitshifts in Kastor?
19:29:37 <ais523> Perl6 uses « and » as quote marks, that can be typed as << and >>
19:29:41 <ais523> I'm not sure what it uses for shifts
19:29:45 <ais523> knowing Perl, probably also << and >>
19:29:56 <hppavilion[1]> Probably
19:36:00 <FireFly> ais523: for delimiting strings?
19:36:41 <ais523> FireFly: so in Perl6, < and > are literal list constructors that interpret everything between them raw and split on spaces
19:36:51 <ais523> i.e. <foo bar baz> = ('foo', 'bar', 'baz')
19:36:56 <FireFly> Ah, okay
19:36:59 <ais523> « and » are like that, but interpolate
19:37:06 <FireFly> I see
19:37:20 <ais523> «foo $x baz» = ("foo", "$x", "baz") = ("foo", $x, "baz")
19:37:37 <ais523> err, ("foo", ~$x, "baz"), $x gets stringified
19:45:17 -!- idris-bot has joined.
19:48:28 -!- hppavilion[2] has joined.
19:48:51 <Melvar> hppavilion[2]: Did you see my message?
19:49:04 <hppavilion[2]> Melvar: Yes. I might change it to that.
19:49:08 <hppavilion[2]> Though I like the existing ones too
19:49:15 <Melvar> Nm lambdabot now alerted me to your answer.
19:49:45 <hppavilion[2]> Because if I use the white brackets, then I can logically have both bags and ordered bags
19:49:58 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
19:50:35 <Melvar> Are those … hmm … lists with a fast count operation?
19:51:04 <hppavilion[2]> Melvar: They're basically just ordered lists, at least that's one way to implement them
19:51:35 <hppavilion[2]> But yes, they're lists that store the number of times a value occurs in them. And you can't have a value occur at multiple indexes, unless I decide you can.
19:51:53 <Melvar> Huh?
19:52:08 <Melvar> If you can’t have one at multiple indices, how can you have any more than one?
19:52:30 <hppavilion[2]> Melvar: In literals you can have them at multiple indices, but they get consolidated into a single bag basically
19:52:59 <hppavilion[2]> I think I'll let my language have operators in prefix, postfix, infix, circumfix, precircumfix, postcircumfix, and incircumfix, just to one-up perl.
19:53:17 <Melvar> <ω<
19:53:55 <Melvar> Agda already has fully general mixfix, which merely has all those as special cases.
19:54:29 <ais523> does incircumfix even make sens?
19:54:40 <ais523> *sense
19:54:47 <ais523> (what would it look like?)
19:54:58 <Melvar> _⟨_⟩_
19:55:00 <ais523> I guess along the lines of a[b]c but that's just a ternary
19:55:02 <Melvar> I presume.
19:55:10 <ais523> (no reason the brackets have to match)
19:55:16 <ais523> _?_:_ is topologically the same
19:55:17 <hppavilion[2]> ais523: a[b]c is an example of an incircumfix operator, but not necessarily one that will be used
19:55:25 <hppavilion[2]> Wait, you typed the exact same thing before me xD
19:55:54 <Melvar> I believe in Agda I’ve seen _[_]=_ for replaceAt in a vector.
19:56:01 <hppavilion[2]> But yes, that's an example of incircumfix; it is as a matter of fact ternary. I might not have any builtin though
19:56:35 <hppavilion[2]> There will also be associativities if I can figure it out, also taken from perl: right, left, chain, list, and whatever the other one perl has is
19:56:40 <ais523> I guess I meant that the "circum" is suspect because there's no reason why the brackets would match
19:57:13 <Melvar> Anyway, for the ordered bags, if you enter one where the same value appears at multiple indices, where is the value going to be in the resulting orderedbag?
19:57:28 <hppavilion[2]> Melvar: The first occurence. Duh.
19:58:04 <Melvar> I disagree, not duh. How would I know you wouldn’t use the last occurrence?
19:58:33 <hppavilion[2]> You can ALSO declare associativity groups- for example, a>b>c is be equal to (a>b)&(b>c)
19:58:51 <ais523> Melvar: OCaml has maps with multiple bindings
19:58:55 <hppavilion[2]> Melvar: Trial and error, or reading the fucking manual. Either one works.
19:59:04 <ais523> where newer bindings shadow old ones, but don't remove them (you can delete the newer binding and see the older binding again)
19:59:15 <Melvar> No, asking you just now, that’s how I know. I just disagree that it’s duh.
19:59:16 <ais523> strangely enough, this is its default sort of map
19:59:17 <ais523> for some reason
19:59:26 <hppavilion[2]> I believe that Kastor currently has 14 builtin data structures xD
20:00:31 <Melvar> ( :let infixl 6 <=?
20:00:31 <idris-bot> defined
20:01:07 <Melvar> Actually, derp, that won’t work.
20:01:11 <Melvar> ( :unlet
20:01:11 <idris-bot> Undefined .
20:01:27 <HackEgo> [wiki] [[User:Hppavilion1/UniFunge]] http://esolangs.org/w/index.php?diff=45578&oldid=45576 * Hppavilion1 * (+814) /* Δ Commands */ Astrological symbols
20:02:47 <hppavilion[2]> In case anyone wants to see the WIP documentation for Kastor, it's here: https://drive.google.com/folderview?id=0ByRvNdqqy3GPV1NfZmRwOFNxQ28&usp=sharing
20:05:17 -!- spiette has joined.
20:07:54 -!- ais523 has quit (Ping timeout: 260 seconds).
20:08:09 -!- ais523 has joined.
20:17:03 -!- hppavilion[2] has changed nick to hppavilion[1].
20:20:07 <b_jonas> ais523: hello
20:20:39 <ais523> hi b_jonas
20:21:25 <b_jonas> ais523: have you seen this Amycus esolanguage I mentioned a last time?
20:21:30 <b_jonas> it turns out to be quite interesting,
20:21:44 <b_jonas> and I've only written some of the intersting stuff about it so far, I'll have to document the rest
20:22:00 <ais523> b_jonas: I looked at it when reviewing Esolang edits
20:22:24 <b_jonas> also, it seems that's partly by accident, because I misread _one_ character in the spec, and didn't read the interpreter carefully enough to notice that it doesn't match
20:22:31 <b_jonas> the interpreter matches the intended spec
20:22:50 <b_jonas> but I went by my copy of the spec, which had an error compared to David's spec
20:22:50 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
20:23:06 <b_jonas> so now we have twice as many languages
20:23:27 <b_jonas> and of course, that one character matters a lot, because esolang
20:28:52 <izabera> this is an interesting read http://www.opensource.apple.com/source/lsof/lsof-8/lsof/00PORTING
20:31:02 <ais523> haha, lsof reads /dev/kmem on most platforms?
20:32:31 <b_jonas> ais523: on BSD, probably
20:32:41 <b_jonas> on linux, I think it reads /proc
20:32:51 <ais523> by "most platforms" I mean "all Unices but Linux"
20:32:58 <b_jonas> ais523: yes, but so does ps
20:33:03 <b_jonas> I think
20:33:12 <b_jonas> maybe it differs on some modern ones
20:33:17 <b_jonas> as in, modern bsds
20:33:32 <b_jonas> reading /dev/kmem is the traditional way
20:34:15 -!- llue has joined.
20:34:15 -!- llue has quit (Changing host).
20:34:15 -!- llue has joined.
20:34:35 -!- lleu has quit (Read error: Connection reset by peer).
20:38:53 -!- hppavilion[1] has joined.
20:54:40 <hppavilion[1]> Should I make ¹²³ be postfix operators that power (for niceness), or should they be permitted to be at the end of names so you can have, for example, w¹?
20:57:25 <ais523> both!
20:58:06 <hppavilion[1]> ais523: That's not possible, even for a language like perl.
20:58:08 <b_jonas> heheheh
20:58:12 <b_jonas> sure it is
20:58:29 <ais523> for example, you could allow the subscripts to be part of the identifier only if the identifier had been declared
20:58:34 <ais523> and otherwise have them as operators
20:58:36 <b_jonas> I mean, it would be an esolang, but still
20:59:03 <hppavilion[1]> b_jonas: No, not even perl could do it; if we did both (and didn't allow other syntactic fixes) x³ as in x**3 would be ambiguous relative to x³ the name
20:59:09 <ais523> just like in Perl, if you declare a function then foo (with no punctuation around it) is a function call, otherwise it's a string literal
20:59:39 <b_jonas> yeah
20:59:39 <ais523> apparently the actual official reason behind this feature is that it makes it easier to write Perl/poetry polyglots
20:59:49 <ais523> (where "poetry" is the literature/artistic concept, not an esolang)
20:59:49 <b_jonas> what
21:00:00 <b_jonas> ais523: also builtins, but yes
21:00:12 -!- bb010g has quit (Quit: Connection closed for inactivity).
21:00:13 <ais523> foo isn't a builtin, I picked a concrete example for a reason :-)
21:00:49 <b_jonas> right
21:01:45 <ais523> although some things that are builtins are surprising
21:01:50 <ais523> like Perl 6's ... operator
21:01:59 <ais523> which is either an eager or lazy exception, I forget which
21:02:04 <ais523> (intended use: sub foo { ... } )
21:02:09 <ais523> (for a function you haven't written yet)
21:05:28 <b_jonas> yes, that's a recent addition
21:06:05 <hppavilion[1]> ais523: Wait, really? Wow.
21:09:28 <hppavilion[1]> \oren\: So is there a nice-looking way to represent augmented assignment with <- assignment?
21:10:38 <b_jonas> hppavilion[1]: do you mean like var +← val;
21:10:48 <b_jonas> to increase var by val
21:11:08 <hppavilion[1]> b_jonas: yes, but that looks a bit bad
21:11:15 <b_jonas> does it?
21:11:20 <hppavilion[1]> Is there a better looking version
21:11:22 <hppavilion[1]> It does to me
21:11:50 <b_jonas> well, I think K uses : for assignment, and var +: val for compound assignment iirc
21:13:41 <b_jonas> I don't know if there are apls that use +←
21:14:36 <hppavilion[1]> b_jonas: : might actually work... Especially because it's used in Dicts.
21:15:43 <b_jonas> hppavilion[1]: or, if you have no prefix operators, only postfix and infix, then ←+ could work too
21:16:20 <b_jonas> hppavilion[1]: also maybe .+← or ←.+
21:16:37 <b_jonas> where . stands for a method call such that .+ would do addition
21:16:55 <hppavilion[1]> b_jonas: I do have prefix, unfortunately. I think I might use :.
21:17:07 -!- Lord_of_Life has quit (Excess Flood).
21:18:00 -!- Lord_of_Life has joined.
21:18:37 <b_jonas> hppavilion[1]: or even ←;+ if ; is your method cascade marker?
21:18:54 <b_jonas> as long as that doesn't clash with other syntax of course
21:23:12 <ais523> have you seen the way Ursala does operator fixity?
21:23:24 <b_jonas> ais523: no
21:23:27 <ais523> the whitespace around an operator determines whether it's infix, postfix, prefix, or unary
21:23:29 <ais523> err, nullary
21:23:34 <ais523> (rather than unary)
21:23:47 <b_jonas> ais523: yeah... ruby sometimes does that, and even perl does sometimes, in ambiguous situations
21:23:50 <ais523> and the four versions can have entirely unrelated meanings (although more commonly are various currying)
21:23:51 <b_jonas> I hate that
21:23:58 <ais523> also, operator precedence isn't transitive
21:24:26 <b_jonas> ruby has especially complicated rules where there's like three sets of nested exceptions so that it dwims on a negative number powered to something
21:24:31 <ais523> (it's been known for ages that you can parse grammars unambiguously even if operator precedence isn't transitive; however, mostly this was viewed as a quirk of the parsing algorithms rather than an actually useful feature)
21:25:33 <Melvar> I think the mixfix paper explained how to do nontransitive precedence with it …
21:26:14 <b_jonas> I prefer a solution where the arity of the operator is unambiguous anyway, because the syntax is like that
21:26:58 <ais523> b_jonas: have you seen Ursala at all
21:26:59 <b_jonas> oh, I wanted to ask a question from you about parsers too, but it's too late so some other time
21:27:03 <ais523> if not, you should at least look at some examples
21:27:05 <b_jonas> no, I haven't seen ursala
21:27:13 <b_jonas> I haven't looked at it at all
21:27:18 <Melvar> b_jonas: Unambiguous at use site or only when including definition site?
21:27:22 <b_jonas> remind me later to look at it then
21:27:41 <ais523> unfortuately the website seems to be down
21:27:44 <b_jonas> Melvar: depends
21:27:57 <ais523> but it basically reads as an esolang that's trying to market it as a non-esolang, and has a library collection competitive with Funge-98 but in different fields
21:28:17 <b_jonas> ais523: heh
21:28:41 <ais523> this seems to be relevant: http://www.bcs.org/category/10379
21:30:01 <ais523> also the site was http://www.basis.uklinux.net/ursala and is in the wayback machine at http://web.archive.org/web/20080329070617/http://www.basis.uklinux.net/ursala/ so you could look at it that way
21:30:44 <ais523> "Lessons learned from an unusual language" is the title of the seminar about it
21:31:34 <ais523> apparently it's inspired by "Squiggol" which I've never heard of
21:33:12 <ais523> actually this is a really good presentation for learning about what the language is like
21:34:27 <ais523> anyway it's fun to compare Ursala to Underlambda because they have several similar design goals and end up similar for that reason
21:34:50 <ais523> (although they're very different in some other respects, because of Underlambda's big defining property that it should be easy to write in and also easy to compile into very low-powered languages)
21:44:53 -!- spiette has quit (Quit: :qa!).
21:58:51 <hppavilion[1]> Can functional powers be done with non-natural exponents?
21:59:37 <hppavilion[1]> For example, if f(x)=x+1, that means f**2(x)=f(f(x))=(x+1)+1=x+2
22:00:27 <hppavilion[1]> But what does f**0.5 mean? And while we're at it, f**-1, f**i and f**(1+i)
22:00:47 <hppavilion[1]> (And, I suppose, f**0, though I suspect that that f**0(x)=1)
22:01:35 <ais523> f**0(x)=x
22:01:38 <shachaf> f^0(x)=x
22:01:44 <ais523> f**-1(x) is the inverse of f, which might or might not exist
22:01:49 <ais523> depending on what f does
22:01:54 <ais523> (and might be non-unique in some cases)
22:02:45 <shachaf> What does it mean to say the inverse isn't unique?
22:02:56 <shachaf> That it's just a left inverse or right inverse?
22:03:23 <ais523> shachaf: no, those only work on binary operators
22:03:39 <ais523> a unary function (i.e. one argument) doesn't have a "left inverse" and "right inverse"
22:03:44 <shachaf> ?
22:03:47 <shachaf> I mean https://en.wikipedia.org/wiki/Inverse_function#Left_and_right_inverses
22:04:02 <shachaf> Would you prefer section/retraction?
22:04:03 <ais523> wait, it does have a preinverse and postinverse though
22:04:17 <ais523> but what I'm thinking of is, say, f(x) = floor(x/2) (for integral x)
22:04:36 <ais523> that is inverted by f**-1(x) = x*2, but it's also inverted by f**-1(x) = (x*2)+1
22:05:08 <shachaf> OK, so you mean right inverse.
22:05:15 <shachaf> Where f is surjective but not injective.
22:05:43 <ais523> I get confused because there are so many different ways to formalize what a function is
22:05:56 <shachaf> "every surjective function has a right inverse" is equivalent to the axiom of choice, which is kind of obvious when you see it but still neat.
22:05:59 <ais523> if you're composing them then they obviously have left and right inverses
22:06:09 <shachaf> Maybe you'd prefer "split epimorphism"?
22:06:12 <ais523> sorry, I'm tired
22:06:16 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
22:06:23 <ais523> also trying to explain things in terms of category theory will just make things worse
22:06:46 <shachaf> I actually agree that "left inverse" and "right inverse" is confusing terminology, it's just what I've heard.
22:06:55 -!- hppavilion[1] has joined.
22:07:26 <shachaf> We're talking about "right inverse" with respect to the binary operation of function composition, I think.
22:08:39 <ais523> yes
22:08:45 <ais523> these are clearly composition-based definitions
22:09:01 <ais523> if you think about functions in terms of application rather than composition, there's no left and right, just inside and outside
22:09:14 <ais523> (I used the composition-based version of all this in my thesis, but I wasn't happy about it)
22:09:19 <hppavilion[1]> Ah, f**0 is hte identity
22:11:41 <ais523> hppavilion[1]: you can see this very clearly in Underload
22:11:46 <ais523> the standard definition of 0 is !()
22:12:05 <ais523> which literally means "discard the argument, and replace it with the identity"
22:13:39 <FireFly> I don't think generalizing functional powers to non-integers make much sense, but if you do figure something out I'm curious to hear about it
22:13:42 <FireFly> hmm
22:14:40 <ais523> FireFly: 1/(1-x) is the cube root of the identity :-)
22:16:33 <hppavilion[1]> Well I'd say that to generalize it to integers is simple: f**x where x<0 is equivalent to iterating f**-1 |x| times.
22:16:45 <FireFly> sure
22:16:46 <shachaf> For integer x?
22:17:14 <hppavilion[1]> shachaf: For any real number, really. But only the integers for now, because we haven't defined it for reals yet.
22:17:51 <hppavilion[1]> Now, function square root is a thing: g**1/2=f such that f(f(x))=g(x)
22:17:53 <FireFly> Raising a function to 0 or 1 is a somewhat common idiom for applying a function conditionally in J (and maybe APL, dunno)
22:18:13 <FireFly> (0 and 1 also double as boolean values)
22:18:41 <hppavilion[1]> So we can clearly generalize that to any arbitrary real number of the form 1/n where n is an item of R
22:19:09 <hppavilion[1]> g**1/n=f such that f**n(x) = g(x)
22:20:53 <hppavilion[1]> Now, since any number x to the power of a rational of the form n/d (x**(n/d)) is equivalent to d√(x**n)
22:22:05 <hppavilion[1]> So in analogue to that, for a function g to the power of a real number n/d which is equivalent to f, f is a function such that f**n(f**n...(x))...)=g(x)
22:22:53 <hppavilion[1]> And, of course, if n/d is negative, it's quite simple: the above expression where n is negated.
22:23:57 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:26:49 -!- Patashu has joined.
22:28:26 <hppavilion[1]> so for S**(-2/3)=f, f is equal to, I believe, S**-2(S**-2(S**-2(x))), where S**-2=(S**-1)**2, which means S**-1(S**-1(S**-1(S**-1(S**-1(S**-1(x))))))=P(P(P(P(P(P(x)))))) where P is the predecessor function (I assume S**-1=P), so S**(-2/3)(x)=x-6. Boom.
22:28:49 <hppavilion[1]> Next, we have to define f**i(x) if we want to generalize to the complexes.
22:30:28 <hppavilion[1]> Skipping that for now, since x**n*x**m=x**(n+m), and defining composition as function multiplication because that seems to make sense, we can deduce that f**(a+bi)(x) = f**a(f**bi(x))
22:31:05 <hppavilion[1]> Either that or function multiplication can just be defined such that f*g(x)=f(x)*g(x), but that's not as fun
22:31:22 <hppavilion[1]> FireFly: So really, all we need do is define f**i(x) and we're home free.
22:33:38 <hppavilion[1]> FireFly: Have any ideas?
22:34:00 <FireFly> Uh, no clue what imaginary powers would be
22:34:13 <FireFly> the rationals is enough for m
22:34:15 <FireFly> me*
22:34:27 <hppavilion[1]> FireFly: What's x**i equal to when x is a real?
22:34:29 <shachaf> f^i(f^i(x)) = f^-1(x), presumably
22:34:37 <hppavilion[1]> FireFly: BLASPHEMY! WE CAN NEVER BE SATISFIED!
22:35:46 <hppavilion[1]> shachaf: But if we assume that composition is multiplication of functions, that poses a problem. x**n*x**m=x**(n+m), so that means that f**i(f**i(x))=f**2i(x)
22:36:23 <shachaf> Oops, of course.
22:36:53 <hppavilion[1]> FireFly: Also, I techncially covered the reals. You just have to round off the naturals, which is kind of how exponentation works anyway AFAICT
22:37:15 <hppavilion[1]> I suppose we should define S(f)
22:37:30 <FireFly> “A systematic procedure to produce arbitrary functional n-roots (including, beyond n= ½, continuous, negative, and infinitesimal n) relies on the solutions of Schröder's equation.[3][4] [5]”
22:37:41 <FireFly> You might want to read those (from the article on functional square root)
22:37:58 <FireFly> Hm, the first one is from 1870
22:38:02 <hppavilion[1]> FireFly: My system is either better or equivalent.
22:43:12 <hppavilion[1]> Wait, what if function multiplication is giving a function its arguments? At least, for the type func*tuple
22:53:12 <hppavilion[1]> ais523: I think the cube (or indeed, square or generally nth) root of the identity is the identity, as I(I...I(x)...)=I(x).
22:53:33 <ais523> hppavilion[1]: try calculating the third power of 1/(1-x) :-)
22:53:48 <hppavilion[1]> Of course.
22:53:53 <hppavilion[1]> I suspected that.
22:54:14 <ais523> (at least I think that's what it is)
22:54:19 <ais523> one of my favourite random mathematical facts
22:54:20 <hppavilion[1]> Wait, so 1/(1-x) is a convenient way to obtain EXACTLY the cube root of a number? Wait, that doesn't seem right...
22:55:16 <hppavilion[1]> I mean, any two rationals fed to division is a rational, and - is closed over the rationals, but there are rationals such that root(x, 3)(/-R
22:55:58 <hppavilion[1]> So the cube root of I(x) can't be 1/(1-x), at least not exactly. Thus, it'd be more accurate to say that the cube root of identity is just I.
22:56:02 <hppavilion[1]> (Math!)
22:57:29 <Phantom_Hoover> ais523, idgi
22:57:33 <shachaf> ((1-x)^-1)^3 = (1-x)^(-3)
22:58:35 <ais523> hppavilion[1]: no, not the third power of the result
22:58:36 <ais523> the third power of the function
22:58:53 <shachaf> Oh, that was meant to be a function, not an expression.
22:59:10 <hppavilion[1]> Ah
22:59:22 <shachaf> > let f x = 1/(1-x) in f (f (f x))
22:59:24 <lambdabot> 1 / (1 - 1 / (1 - 1 / (1 - x)))
22:59:30 <ais523> here's an example, start with 5; after running the function once we get 1/-4 which is -¼; after running it twice we get 1/(5/4) which is 4/5; and after running it three times we get 1/(1/5) which is 5
23:02:17 <Phantom_Hoover> oh, it collapses to x
23:02:20 <shachaf> ais523: So the algebraic data type L(a) = 1 + a*L(a)
23:02:25 <shachaf> So L(a) = 1/(1-a)
23:02:33 <shachaf> So [[[a]]] = a?
23:02:46 <shachaf> That doesn't seem right.
23:03:31 <ais523> I'm not sure I understand
23:03:57 <shachaf> People talk about this thing where you represent the algebraic data type of lists as L(x) = 1/(1-x)
23:04:12 <shachaf> And you do a bunch of algebraic mafipulation and somehow it works out in the end.
23:04:22 <shachaf> E.g. when you take the derivative or that sort of thing.
23:04:24 <Phantom_Hoover> you expand it to a power series
23:04:39 <shachaf> Yes, you can expand it to a power series, 1 + x + x^2 + ...
23:04:46 <shachaf> Which is the obvious representation of lists.
23:05:15 <shachaf> But ais523 is saying that L^3 = I, so I'm wondering if that can be made to work here somehow.
23:06:03 <hppavilion[1]> Ok, I have an issue. I have two functions for the short article I'm writing on this, S and D. S(x)=x+1 and D(x)=2x. I also have the auxilliary functions sS(x)=x+0.5 and sD which are to be used to demonstrate square roots of functions. What I'm trying to find is what sD(x) is equal to; currently it's sqrt(2*x), but that doesn't seem right because sqrt(xy)=sqrt(x)*sqrt(y) and thus it seems wrong. I think. Actually, it's
23:06:03 <hppavilion[1]> beginning to seem more right. Not sure
23:06:34 <shachaf> sqrt(2)*x?
23:06:55 <hppavilion[1]> shachaf: Tried that, but sqrt(2)*x seems to equal 2(x**2)
23:07:21 <shachaf> ?
23:07:36 <hppavilion[1]> I mean (sqrt(2)*x)**2
23:08:25 <shachaf> > let f x = sqrt 2 * x in f (f x)
23:08:27 <lambdabot> sqrt 2 * (sqrt 2 * x)
23:08:42 -!- shikhin has changed nick to hin.
23:09:01 <hppavilion[1]> (sqrt(x)*sqrt(y))**2=sqrt(x)*sqrt(x)+sqrt(x)*sqrt(y)+sqrt(y)*sqrt(x)+sqrt(y)*sqrt(y)=x+sqrt(x)*sqrt(y)+sqrt(x)*sqrt(y)+y=xy+sqrt(xy)+sqrt(xy)=xy+2(sqrt(xy))
23:09:05 -!- hin has changed nick to shikhin.
23:09:34 <shachaf> I have no idea what you're getting at now.
23:10:00 <shachaf> I'm saying that sD(x) = sqrt(2) * x, so that sD(sD(x)) = sqrt(2) * sqrt(2) * x = 2*x
23:10:46 <hppavilion[1]> Hard to read, yes, but the gist is that sqrt(xy)**2 is equal to (sqrt(x)*sqrt(y))**2 is equal to xy+2(sqrt(xy))
23:10:50 <hppavilion[1]> I think
23:11:33 <shachaf> Oh, well, it's not.
23:11:41 <hppavilion[1]> Oh right
23:11:49 <hppavilion[1]> I was doing the wrong math
23:12:15 <hppavilion[1]> I was doing (sqrt(x)+sqrt(y)**2 instead of (sqrt(x)*sqrt(y)**2
23:12:17 <shachaf> Anyway you can make some sort of relationship between S^n and D^n using log2, probably.
23:13:21 -!- zzo38 has joined.
23:13:37 <hppavilion[1]> So I guess sqrt(2)*x it is. Really hope that math is right xD
23:13:49 <shachaf> It isn't difficult to verify.
23:13:55 <shachaf> A lot less work than what you were doing there.
23:14:26 <shachaf> Why does "geometric" mean "with multiplication"?
23:15:16 <hppavilion[1]> shachaf: Did I say geometric at some point?
23:15:26 <shachaf> No, but I just did.
23:15:54 <Phantom_Hoover> shachaf, because scaling is very natural in geometry i guess
23:18:06 -!- ais523 has quit (Ping timeout: 240 seconds).
23:18:32 <shachaf> Aw, no answer from ais523. Maybe I should ask in #haskell or something.
23:18:39 <hppavilion[1]> Wait, I think I've found a problem with composition being function multiplication. Consider f(x)=x+1 and g(x)=2x. If composition is function multiplication, (f∘g)(x)=2x+1, so (f∘g)(3)=7, but (g∘f)(x)=2(x+1), so (g∘f)(3)=8. Therefor ∘ is noncommutative
23:18:47 <hppavilion[1]> Wait, matrix multiplication isn't commutative either
23:18:49 <hppavilion[1]> Problem solved.
23:19:00 <shachaf> Matrix multiplication is function composition.
23:19:03 <hppavilion[1]> (And neither is quaternion)
23:19:08 <hppavilion[1]> shachaf: How so?
23:19:21 <shachaf> A matrix represents a linear function.
23:19:29 <hppavilion[1]> Is a matrix secretly a function? By that logic, couldn't any value be considered a function?
23:19:29 <shachaf> Matrix multiplication represents composition of linear functions.
23:19:33 <hppavilion[1]> Ah
23:19:40 <shachaf> It's not so secret in the case of the matrix.
23:20:21 <Phantom_Hoover> quaternion multiplication is also function composition
23:20:24 <shachaf> It's not a trick like the what's-it-called representation.
23:20:43 <hppavilion[1]> NEXT ARGUMENT:
23:20:51 <zzo38> How can you tell CUPS to display what it will do to print the given input (what filters and so on are used, etc) but not send to printer? Also how can you tell CUPS to print to file?
23:20:52 <Phantom_Hoover> though i mean every group can be realised as function composition
23:20:55 <hppavilion[1]> I mean NEXT GENERALIZATION:
23:21:01 <zzo38> ?messages-loud
23:21:02 <lambdabot> hppavilion[1] said 4d 2h 4m 58s ago: Found an article on how type systems are logics: https://codewords.recurse.com/issues/one/type-systems-and-logic
23:21:03 <hppavilion[1]> g**-1(x, y)
23:21:08 <shachaf> Cayley, that's it. Presumably what Phantom_Hoover is talking about.
23:21:22 <Phantom_Hoover> cayley's theorem, yes
23:21:38 <shachaf> Except you can do it for monoids, not just groups.
23:21:47 <shachaf> No need for inverses.
23:23:32 <int-e> nor for units. nor for associativity...
23:23:54 <Phantom_Hoover> can't do rings though!
23:23:55 <shachaf> Well, monoids are the natural place to do it.
23:24:40 <hppavilion[1]> So how does g**-1 work when g takes multiple arguments? I suppose it could be that if g takes multipile arguments and returns an argument of type t, g**-1 could accept a single argument (of type t) and return a tuple of the arguments g would take to yield that
23:25:07 <hppavilion[1]> Well, a set of the tuples
23:25:20 <shachaf> Functions only take one argument.
23:25:53 <hppavilion[1]> Essentially, if g(1, 2) = 3 and g(4, 5)=3, then g**-1(3) = {(1, 2), (4, 5)}
23:25:58 <hppavilion[1]> shachaf: Oh right. Curring.
23:26:05 <shachaf> You don't have to cur.
23:26:38 <shachaf> You can just have a function from a product.
23:27:02 <hppavilion[1]> shachaf: Godel numbering or the like?
23:27:09 <shachaf> No, just a pair.
23:27:29 <hppavilion[1]> shachaf: You mean a function that just accepts an n-tuple?
23:27:33 <shachaf> Yes.
23:27:35 <hppavilion[1]> Ah
23:27:51 <int-e> Meh, do the Foglios wa
23:27:59 <hppavilion[1]> You /could/ do that, OR you could do it the fun way and just interpret them as having multiple arugments
23:28:26 <int-e> ... want to kill us with the suspense of an impending wasp attack in Paris?
23:30:24 -!- shikhin has changed nick to _exit.
23:30:33 -!- _exit has changed nick to shikhin.
23:33:13 -!- shikhin has changed nick to sortix.
23:33:18 -!- sortix has quit (Disconnected by services).
23:33:31 -!- shikhin has joined.
23:33:34 -!- shikhin has quit (Changing host).
23:33:34 -!- shikhin has joined.
23:42:49 <zzo38> Also how to override the MIME type of the input with CUPS?
23:43:49 <hppavilion[1]> Should I use Roman Numerals or Arabic Numerals as the page numbering for a LaTeX document I'm working on?
23:44:25 <hppavilion[1]> I think I'll go with arabic
23:45:06 <hppavilion[1]> I'm practicing my LaTeX (and making myself seem smarter) by making a little mathematics PDF on Function Arithmetic.
23:45:31 <hppavilion[1]> I think I'll call functions "Functia" for the entire article because why the hell not?
23:47:09 <FireFly> Hmm, I should catch up with GG
23:47:32 <FireFly> It was fun to read until I got up to speed with the comic.. then I kind-of forgot about it
23:51:17 <tswett> hppavilion[1]: the Esoteric Language Council approves of this usage of "functia".
23:51:38 <hppavilion[1]> tswett: Excellent.
23:51:44 <hppavilion[1]> Wait, we have a council?
23:54:52 <tswett> The Esoteric Language Council's position on this question is that yes, we do.
23:55:39 <hppavilion[1]> What's the name again for functions that have conditions in them? That is, functions with "if x=2" and the like.
23:56:16 <hppavilion[1]> I was going to use it in my Arithmetic of the Functia, but then I realized hyperoperations for demonstration of basic functions is a bad idea
23:56:22 <hppavilion[1]> But I'm still curious
23:56:56 <int-e> fungot: where are you?
23:57:06 <zzo38> My own computer does not have the "--list-filters" option of "cupsfilter" program
23:57:20 <tswett> hppavilion[1]: piecewise.
23:57:25 <hppavilion[1]> THERE we go!
23:58:18 <hppavilion[1]> I need a good, simple, 2-argument function for my Arithmetic of Functia. A(x, y)=x+y is already used. I don't just want to do M(x, y)=xy. Anyone have any good ideas? Perhaps a famous but simple function?
23:58:58 <hppavilion[1]> One that I can evaluate for two naturals (including 0) <= 4 in my head while writing the document? xD
23:59:22 <hppavilion[1]> It need not be piecewise, but that'd add some nice variety
23:59:51 <hppavilion[1]> (And noone suggest Ackermann. Just no. I don't think it's even /possible/ to do that in one's head.)
←2015-11-19 2015-11-20 2015-11-21→ ↑2015 ↑all