←2022-01-13 2022-01-14 2022-01-15→ ↑2022 ↑all
00:03:19 -!- impomatic has quit (Quit: impomatic).
00:03:39 -!- impomatic has joined.
00:07:44 <esolangs> [[MacroBeep]] https://esolangs.org/w/index.php?diff=92058&oldid=92057 * PixelatedStarfish * (-10216) /* Test Cases */
00:07:51 -!- impomatic has quit (Client Quit).
00:08:11 -!- impomatic has joined.
00:26:51 <Sgeo_> How do ordinal numbers work when "zeroth" exists? When "zeroth", does "first" = "second"?
00:27:10 <Sgeo_> I got confused by the NDball page because of this
00:27:27 <Sgeo_> label "first" = ordinal "second"
00:33:19 -!- impomatic has quit (Quit: impomatic).
00:33:41 -!- impomatic has joined.
00:37:51 -!- impomatic has quit (Client Quit).
00:38:10 -!- impomatic has joined.
00:43:19 -!- impomatic has quit (Quit: impomatic).
00:43:39 -!- impomatic has joined.
00:48:34 -!- impomatic has quit (Quit: impomatic).
01:53:54 -!- kit-ten has joined.
01:57:08 -!- kit_ten has quit (Ping timeout: 250 seconds).
02:05:19 -!- oerjan has quit (Quit: Nite).
03:19:57 -!- sprock has quit (Ping timeout: 240 seconds).
03:27:07 -!- sprock has joined.
04:36:29 <int-e> Look at this beauty (colors are preserved through reduction; there are beta steps and steps that replace alpha by its full expression. syntax is T = ^T | `TT | v, where variables start at 0) https://int-e.eu/~bf3/tmp/alpha-k.html
04:37:33 <int-e> (There's alpha-s.html for S too, but that's a 5MB HTML file)
05:52:10 -!- impomatic has joined.
05:55:53 -!- impomatic has quit (Client Quit).
05:56:13 -!- impomatic has joined.
06:01:21 -!- impomatic has quit (Quit: impomatic).
06:01:41 -!- impomatic has joined.
06:05:52 -!- impomatic has quit (Client Quit).
06:06:12 -!- impomatic has joined.
06:33:06 -!- razetime has joined.
06:33:06 -!- razetime has quit (Client Quit).
06:51:20 -!- impomatic has quit (Quit: impomatic).
06:51:39 -!- impomatic has joined.
06:54:56 -!- tromp has joined.
07:00:52 -!- impomatic has quit (Quit: impomatic).
07:01:12 -!- impomatic has joined.
07:16:20 -!- impomatic has quit (Quit: impomatic).
07:16:40 -!- impomatic has joined.
07:20:53 -!- impomatic has quit (Client Quit).
07:21:12 -!- impomatic has joined.
07:33:37 -!- razetime has joined.
07:41:20 -!- impomatic has quit (Quit: impomatic).
07:41:39 -!- impomatic has joined.
07:45:59 -!- impomatic has quit (Client Quit).
07:46:20 -!- impomatic has joined.
08:01:20 -!- impomatic has quit (Quit: impomatic).
08:01:41 -!- impomatic has joined.
08:03:31 -!- SGautam has joined.
08:05:56 -!- impomatic has quit (Client Quit).
08:06:17 -!- impomatic has joined.
08:15:37 -!- razetime has quit (Ping timeout: 256 seconds).
08:20:31 -!- Hooloovoo has quit (Remote host closed the connection).
08:21:20 -!- impomatic has quit (Quit: impomatic).
08:21:40 -!- impomatic has joined.
08:24:22 -!- Hooloovoo has joined.
08:25:53 -!- impomatic has quit (Client Quit).
08:26:12 -!- impomatic has joined.
08:31:20 -!- impomatic has quit (Quit: impomatic).
08:31:40 -!- impomatic has joined.
08:34:55 -!- Sgeo_ has quit (Read error: Connection reset by peer).
08:35:53 -!- impomatic has quit (Client Quit).
08:36:13 -!- impomatic has joined.
08:46:20 -!- impomatic has quit (Quit: impomatic).
08:46:40 -!- impomatic has joined.
08:50:52 -!- impomatic has quit (Client Quit).
08:51:14 -!- impomatic has joined.
09:06:20 -!- impomatic has quit (Quit: impomatic).
09:06:41 -!- impomatic has joined.
09:15:52 -!- impomatic has quit (Quit: impomatic).
09:16:11 -!- impomatic has joined.
09:25:02 -!- impomatic has quit (Quit: impomatic).
09:55:22 -!- __monty__ has joined.
10:08:57 -!- Lord_of_Life has quit (Ping timeout: 256 seconds).
10:12:53 -!- SGautam has quit (Quit: Connection closed for inactivity).
10:13:27 -!- SGautam has joined.
10:17:07 -!- Oshawott has joined.
10:17:23 -!- razetime has joined.
10:18:17 -!- archenoth has quit (Ping timeout: 240 seconds).
10:23:53 <salpynx> int-e: those are neat (K and S). The colours are a great idea. Do you have generic code available to this sort of tracked reduction, or is this a one off for just those combinators?
10:32:40 <salpynx> S blows out amazingly, (1933 character line at max, with 731 alphas) but reduces down relatively quickly.
10:38:28 <salpynx> ... what does `I` look like? -- is that going to be longer than S, via SKK, or is there a more direct way in terms of alpha?
10:42:36 -!- salpynx has quit (Quit: Client closed).
10:44:22 -!- salpynx has joined.
10:54:30 -!- wib_jonas has joined.
10:57:50 <wib_jonas> fungot: in what sense does a kayak paddle rotate? does the rower rotate it foward when they row with the hand with the bearing, or backwards?
10:57:50 <fungot> wib_jonas: how much do you program the robots, not so much work. it's a bit irrational in the general case in the second short e turns to i.
10:59:35 <wib_jonas> fungot: also which core series Pokémon games have the mechanic where when a Pokémon is about to evolve from leveling, you can interrupt that by pressing a button to keep its current less evolved speices?
10:59:35 <fungot> wib_jonas: if at the end of january?
10:59:44 <wib_jonas> which year, fungot? which year?
10:59:44 <fungot> wib_jonas: i don't like
10:59:56 <wib_jonas> those games have been going on for over two decades now. "january" doesn't help.
11:01:20 <fizzie> fungot: Have you been watching AGDQ? I saw something about Pokémon.
11:01:21 <fungot> fizzie: for the empty-as, shouldn't car be an error to return when the fd is closed? ( i'm using drscheme
11:06:39 -!- salpynx has quit (Quit: Client closed).
11:06:46 <wib_jonas> fungot: how often does Batman use his bat-webshooter to shoot webs using his sticky and strong bat-web liquid formula? when he does, is he afraid that the other comic strip company will get angry at him?
11:06:46 <fungot> wib_jonas: changed and it fnord to asi523 for having numbers whose product are no greater then the length of the file?
11:07:18 -!- Lord_of_Life has joined.
11:07:53 -!- salpynx has joined.
11:10:05 <fizzie> Heh, apparently "asi523" is a sufficiently common word to not get fnorded.
11:10:14 <riv> :-)
11:15:31 <tromp> With Johannes Bader's basis, his S is indeed not minimal. He says he found no shorter up to size 15. So he missed this one of size 16: S = X(X(X(X X(X(X(X X))))))(X(X(X X) X) X) X
11:17:28 <tromp> salpynx: I = A(A(A(A A)A))(A(A A)A) of size 10
11:18:04 <riv> has anyone heard of the Harmonic Time-Bind Ritual Symphony?
11:18:11 <salpynx> nice, I've just been checking αKK = I, which seems to work
11:18:17 <riv> I am thinking I might try it out later
11:20:16 <wib_jonas> riv: does that involve a choir of four simultaneous 24-hour days?
11:20:28 <riv> it's very likely to
11:23:04 -!- salpynx has quit (Quit: Client closed).
11:35:52 -!- salpynx has joined.
11:36:53 <wib_jonas> fungotÉ you rotate it backwards, apparently. but I still don'tk now the answer to the Pokémon question.
11:36:54 <fungot> wib_jonas: or just a genral stigma?), a is -1 or inputed character, and it can run more than one
11:37:37 <riv> fungot gotta poke em all
11:37:37 <fungot> riv: now nobody say " bot," then you are just asking for bad puns to be made?
11:49:14 <fizzie> fungot: Yeah, that's your purpose on this channel, to make bad puns.
11:49:15 <fungot> fizzie: oh no, that's fine then :) an " object identity equality" operator
11:49:41 <fizzie> IDGI
12:10:15 -!- razetime has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.).
12:21:23 <salpynx> I've been playing with alpha in python and am getting max recursion depth exceeded with I(I) (defined in terms of alpha), but it seems to behave correctly otherwise.
12:22:39 -!- kit_ten has joined.
12:23:30 <salpynx> `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(I)"
12:23:32 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ [Previous line repeated 996 more times] \ RecursionError: maximum recursion depth exceeded
12:25:05 <wib_jonas> salpynx: try import sys; sys.setrecursionlimit(1_000_000)
12:25:59 <salpynx> ```>>> I(I)
12:26:00 <salpynx> Segmentation fault (core dumped)```
12:26:01 <HackEso> ​``>>>? No such file or directory
12:26:06 <salpynx> fun!
12:26:46 -!- kit-ten has quit (Ping timeout: 250 seconds).
12:27:45 <salpynx> I don't know if this is a great proof, but it demonstrates my python doing what I expect the same identity function to do
12:27:47 <salpynx> `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));test = lambda x: 'test' if x == '?' else α;print(I(I(test))('?'))"
12:27:49 <HackEso> test
12:29:51 <tromp> instead of i(i), how about the simpler i(0) ?
12:30:38 -!- tech_exorcist has joined.
12:33:22 <salpynx> I get type errors if the argument is not a function (hence that 'test' lambda above which returns a string if passed a '?' string, alpha otherwise)
12:34:27 <esolangs> [[Subleq]] https://esolangs.org/w/index.php?diff=92059&oldid=90797 * Shaman * (+178)
12:34:36 <wib_jonas> tromp: maybe it's the identity only up to eta conversion equivalence
12:34:51 <salpynx> (S(K)(K))(S(K)(K)) (all in terms of alpha) gives a fn that behaves as identity
12:35:15 <salpynx> I(S(K)(K)) triggers the max recursion depth
12:35:59 <salpynx> strangely I(S(K)(S)) seems to be trying to do something, but I haven't seen it terminate yet
12:36:10 <wib_jonas> so how you'd test the supposed identity is to pass it a hundred-argument function that returns a non-callable magic token (0 in your case), then call the result with a hundred different magic tokens, and see if you get your first magic token as a result
12:36:55 <tromp> it equals I itself, not some other eta equivalent
12:37:31 <wib_jonas> tromp: in that case you should be able to pass a non-callable argument to it
12:37:59 <esolangs> [[Izhora]] https://esolangs.org/w/index.php?diff=92060&oldid=89479 * Shaman * (+103)
12:38:28 <esolangs> [[Izhora]] https://esolangs.org/w/index.php?diff=92061&oldid=92060 * Shaman * (+6)
12:38:48 <esolangs> [[Izhora]] https://esolangs.org/w/index.php?diff=92062&oldid=92061 * Shaman * (+0)
12:38:56 <tromp> of course the term is untypable; Haskell reports an infinite type error on let a x y z = x z (y (const z)) in i = a(a(a(a a) a) a) a
12:38:56 <salpynx> If this is what you meant, I(0) where 0 is an integer 0:
12:38:58 <salpynx> `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(0)"
12:38:59 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ [Previous line repeated 2 more times] \ TypeError: 'int' object is not callable
12:39:49 <tromp> while a itself it typable: a :: (a -> t1 -> t2) -> ((b -> a) -> t1) -> a -> t2
12:42:53 <salpynx> I(S(K)(S)) appears to just loop,   I can use sks and skk as identity and sks(skk) interchangeably and that seems to work
12:46:11 <salpynx> I don't know if this helps, but using a fn b which returns its argument and prints 'B', I(b) prints B 5 times, and returns b
12:51:40 <salpynx> wib_jonas: what is the purpose of the 100 arguments in the test function? I assume 100 means 'many', but what's the main purpose? Just to create a unique signature?
12:53:32 <wib_jonas> salpynx: no, to make sure that the I can work if it's not the same I but an eta-equivalent, something like I = \x\y.xy or I = \x\y\z.xyz etc
13:00:38 <salpynx> I think this is a shorter version of that idea:
13:00:41 <salpynx> >>>I(fish)
13:00:41 <salpynx> <function fish at 0x7f21d959bea0>
13:00:42 <salpynx> >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(0)
13:00:42 <salpynx> 'fish test!'
13:00:43 <salpynx> >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(1)
13:00:43 <salpynx> <function <lambda> at 0x7f21d9c95c80>
13:00:44 <salpynx> >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(0)
13:00:44 <salpynx> 'fish test!'
13:00:45 <salpynx> >>> (S(K)(K))(I)(fish)(1)(2)(3)(4)(5)(6)(7)(0)
13:00:45 <salpynx> 'fish test!'
13:00:46 <salpynx> >>> (S(K)(K))(fish)(1)(2)(3)(4)(5)(6)(7)(0)
13:00:47 <salpynx> 'fish test!'
13:10:55 <salpynx> it's super late, I've been poking at this too long (fish test?), but it's been interesting. If anyone wants to check my code or reproduce the recursion issue, here's what I have for alpha and SKI: https://pastebin.com/Q1R1wW7f
13:18:08 <riv> What is your opinion on rust { and } format string feature?
13:18:16 <riv> you escape then like this {{ and }}
13:20:23 <riv> \n denotes a newline, so it is better that { just denotes a '{
13:20:37 <riv> ' character. and \{ \} be used as metacharacters
13:20:58 <riv> it may be thought of as less readable
13:22:52 -!- SGautam has quit (Quit: Connection closed for inactivity).
13:28:43 <riv> string literals are purely about encoding a sequence of characters. format strings are string literals - but the sequence of characters has its own metacharacters and escaping and so on
13:28:48 <riv> so you can look at it in layers
13:29:13 <riv> having two layers of metacharacters, escaping and quotation - is it a good thing or a bad thing
13:32:46 <wib_jonas> I hate python/rust-like braced format string simply because "{:12.2e}" is two characters slower to write than "%12.2e". But rust puts an extra stupid spin on them, because the short "{}" behaves like "%f" rather than "%g" so you never even encounter the one case where you can use a format specifier that is just as short as the C-like would be.
13:33:06 <riv> i see
13:43:04 <salpynx> tromp: I( α(α(α)(α)) )  is a smaller term that causes the max recursion (or segfault if the limit is increased) behaviour
13:44:00 <wib_jonas> luckily the python standard library comes with functions that use the C-style format directives too
13:44:53 -!- eli_oat has joined.
13:52:09 -!- salpynx has quit (Quit: Client closed).
14:42:48 -!- wib_jonas has quit (Quit: Client closed).
15:30:06 <esolangs> [[JR]] https://esolangs.org/w/index.php?diff=92063&oldid=90168 * Kaveh Yousefi * (+138) Added a hyperlink to my implementation of the JR programming language on GitHub.
15:36:32 -!- Sgeo has joined.
15:38:55 <esolangs> [[User talk:SunnyMoon]] https://esolangs.org/w/index.php?diff=92064&oldid=92045 * TwilightSparkle * (+427) yay
16:53:44 -!- kit-ten has joined.
16:57:37 -!- kit_ten has quit (Ping timeout: 240 seconds).
17:00:53 -!- eli_oat has quit (Quit: eli_oat).
17:22:55 -!- kit_ten has joined.
17:23:00 -!- kit-ten has quit (Read error: Connection reset by peer).
17:29:06 <int-e> tfw you put b { font-weight: normal } in your CSS because <b> is shorter than <span>
17:31:46 <int-e> > 5375045 / 7480981
17:31:48 <lambdabot> 0.7184946733590154
17:42:05 -!- wellen has joined.
17:51:00 <esolangs> [[Quiner]] https://esolangs.org/w/index.php?diff=92065&oldid=92043 * Umnikos * (+170) Add an alternative quine example
18:24:21 -!- chiselfuse has quit (Ping timeout: 276 seconds).
18:25:39 -!- oerjan has joined.
18:25:50 -!- chiselfuse has joined.
18:37:48 -!- Guest37 has joined.
18:38:25 -!- Guest37 has quit (Client Quit).
18:55:08 -!- DHeadshot has joined.
18:57:12 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
19:20:10 -!- wellen has quit (Ping timeout: 250 seconds).
19:21:29 <int-e> Oh I like the dialogue in today's GG.
19:21:53 <int-e> Same planet, different worlds.
19:26:09 <oerjan> i almost thought the castle was affected by the fumes there
19:29:13 <b_jonas> int-e: I assume that's after they already used the less common one-letter tags Q and S and U for something too. and if those four aren't enough, then comes I and A.
19:30:09 <int-e> b_jonas: I didn't; b was the first single letter one I thought of :P
19:31:16 <b_jonas> and then even the two-letter ones like H6, H5, H4, H3, H2, H1, HR, RP, RT, DL, DD, DT, EM, OL, UL, LI, TH, TR, TD, BR
19:31:51 <int-e> <q> was new to me, somehow
19:32:12 <int-e> and <a> is too special.
19:36:02 <b_jonas> if A is too special, you can restrict your CSS rules based on attributes with something like a :not(a[href]) { ... } so they revert to their normal behavior when they have a href
19:36:50 <b_jonas> maybe a:not(a[href]) { ... } without the space
19:41:03 <esolangs> [[Dirac]] N https://esolangs.org/w/index.php?oldid=92066 * Palaiologos * (+1310) Created page with "{{lowercase}} {{infobox proglang |name=dirac |paradigms=imperative |author=[[:User:Palaiologos|Palaiologos]] |year=[[:Category:2022|2022]] |memsys=:Category:Cell-based|Cell-..."
19:46:31 -!- kit_ten has quit (Read error: Connection reset by peer).
19:46:41 -!- kit_ten has joined.
19:51:30 <esolangs> [[Dirac]] https://esolangs.org/w/index.php?diff=92067&oldid=92066 * Palaiologos * (+92)
20:01:01 -!- Noisytoot has joined.
20:03:51 <esolangs> [[User:Ethan T. Stanger]] N https://esolangs.org/w/index.php?oldid=92068 * Ethan T. Stanger * (+16) Created page with "I like esolangs."
20:06:03 <esolangs> [[Ethan T. Stanger]] N https://esolangs.org/w/index.php?oldid=92069 * Ethan T. Stanger * (+61) Redirected page to [[Https://esolangs.org/wiki/User:Ethan T. Stanger]]
20:06:55 <esolangs> [[JR]] https://esolangs.org/w/index.php?diff=92070&oldid=92063 * Kaveh Yousefi * (+152) Extended the command table by a column juxtaposing the Deadfish equivalents, if extant.
20:06:57 <esolangs> [[Ethan T. Stanger]] https://esolangs.org/w/index.php?diff=92071&oldid=92069 * Ethan T. Stanger * (-9) Removed redirect to [[Https://esolangs.org/wiki/User:Ethan T. Stanger]]
20:07:54 <esolangs> [[Ethan T. Stanger]] https://esolangs.org/w/index.php?diff=92072&oldid=92071 * Ethan T. Stanger * (-18)
20:08:14 <esolangs> [[Ethan T. Stanger]] https://esolangs.org/w/index.php?diff=92073&oldid=92072 * Ethan T. Stanger * (+1) Redirected page to [[User:Ethan T. Stanger]]
20:16:09 <esolangs> [[User:Palaiologos]] https://esolangs.org/w/index.php?diff=92074&oldid=91927 * Palaiologos * (+17)
20:26:12 -!- sebbu has quit (Read error: Connection reset by peer).
20:27:23 -!- sebbu has joined.
20:51:14 <esolangs> [[Special:Log/newusers]] create * Fxomt * New user account
20:58:10 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=92075&oldid=92028 * Fxomt * (+247) /* Introductions */
21:26:51 <esolangs> [[HASSL]] N https://esolangs.org/w/index.php?oldid=92076 * Ethan T. Stanger * (+3501) Created page with "{{infobox proglang |name=HASSL |paradigms=Imperative |author=[[Ethan T. Stanger]] |year=[[:Category:2022|2022]] |typesys= |memsys=[[:Category:Stack-based|Stack-Based]] |dimens..."
21:26:55 -!- kit-ten has joined.
21:30:49 -!- kit_ten has quit (Ping timeout: 256 seconds).
21:50:23 -!- tech_exorcist has quit (Remote host closed the connection).
21:56:01 -!- kit_ten has joined.
21:56:26 -!- tech_exorcist has joined.
21:59:17 -!- kit-ten has quit (Ping timeout: 240 seconds).
21:59:20 -!- delta23 has joined.
22:25:45 <int-e> tromp: I did some colorful reductions, file:///home/bf3/alpha-i.html file:///home/bf3/alpha-k.html and file:///home/bf3/alpha-s.html (big, 5MB)
22:26:34 <int-e> (ther's b, w, and c as well; C is even worse than S at 8MB)
22:27:12 -!- tech_exorcist has quit (Quit: Disconnecting).
22:28:31 -!- salpynx has joined.
22:28:41 <int-e> I wonder how much that would shrink if I replaced useless subterms by ⊥
22:29:31 <riv> im having trouble opening those links
22:29:35 <int-e> uhm
22:29:38 <int-e> yeah you would
22:30:05 <int-e> these should work: https://int-e.eu/~bf3/tmp/alpha-i.html https://int-e.eu/~bf3/tmp/alpha-k.html https://int-e.eu/~bf3/tmp/alpha-s.html (5MB)
22:30:50 <riv> seriously cool visualization
22:32:08 <salpynx> I just joined to say I 'found' a naive I, going from SK(K|S) -> αK(K|S) -> αKα , which is has 13 alphas. That isn't givng me the recursion trouble that the size 10 one is
22:33:39 <int-e> https://int-e.eu/~bf3/tmp/alpha-b.html stands out in that the three remaining abstractions stem from different alphas
22:33:59 <riv> Hello salpynx
22:34:54 <salpynx> Hi!
22:36:58 <zzo38> How to request the criticism/cryptanalysis of cryptographic hash algorithm? The "2D hash" has a infinite internal state size and infinite output size, and has two dimensions (input dimensions and output dimension; either one can be space and the other one time, and you will get the same answer either way).
22:37:05 <int-e> salpynx: code looks like this: https://paste.debian.net/1227159/
22:39:06 <int-e> (which is improved from yesterday where I generated HTML with `sed` :P)
22:39:26 <salpynx> +1 for sed!
22:40:17 <int-e> which would not have supported the highlighting through hovering on (the head of) subterms that the new version does :)
22:40:29 <zzo38> The first 768 bits of a empty hash are: 8d90a8ffcc33d31505cc15e2042c766e9bd965d4e51dce84fe0d871bd1d40ecbe4a2091aa2217ac92f9654b4b994ba69ba2630e260ddfd26efc7de04787984240e7e5b0d80c0ee7d616e479d6ebc3346b6efb6086e9bb0aa870de4ce8b97f019
22:40:46 -!- __monty__ has quit (Quit: leaving).
22:45:02 <int-e> tromp: you might like the Read instance from that paste :)
22:45:35 <int-e> (different design choice from yours: I use digits 0..9 and then add parentheses: (10), (11) etc.)
22:45:56 <salpynx> I'm not sure what's up with the recursion error I'm seeing with that I(I) in python. I just checked my conversion from your I notation and got the same as I was using last night
22:46:26 <salpynx> Not sure if it's the limitations of python, of there's something weird with the combinator.
22:48:11 <int-e> Hmm.
22:50:39 <salpynx> I = ``α`α``α`ααα``α`ααα = A(A(A(A A)A))(A(A A)A) = α(α(α(α(α))(α)))(α(α(α))(α))
22:51:05 <salpynx> the python notation is the worst, but it's what I'm executing
22:52:45 <int-e> well Python is strict.
22:53:11 <int-e> Note how there's a `0^... just before the last line, that gets erased in the final step?
22:53:20 <salpynx> I can paste 1 liners at HackEso to demonstrate the problem, but it's probably not that easy to read for longer examples
22:53:37 <int-e> if you try to evaluate that, it'll apply something to the argument, corresponding to TypeError: 'int' object is not callable
22:57:11 <salpynx> I was working around that by only using functions
22:57:22 <salpynx> this is the strangeness:
22:57:24 <salpynx> `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(I)"
22:57:25 <int-e> there may be other problems with the translation, I'm not sure.
22:57:26 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ File "<string>", line 1, in <lambda> \ [Previous line repeated 996 more times] \ RecursionError: maximum recursion depth exceeded
22:57:41 <salpynx> vs.
22:57:43 <salpynx> `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));K = α(α)(α(α(α))(α)(α)(α))(α)(α(α));I = α(K)(α);print(I(I) == I)"
22:57:44 <HackEso> True
22:58:38 <salpynx> ... and other more complex variations where I used magic tokens to id my functions, but don't transfer well over IRC bot evaluation :)
23:01:33 <int-e> `` python3 -c"a = lambda x: lambda y: lambda z: x(z)(y(lambda _: z)); print(a(a(a(a(a))(a)))(a(a(a))(a))(lambda _: lambda _: lambda _: 42)([])([])([]))"
23:01:34 <HackEso> 42
23:03:00 <int-e> (the extra lambda _: avoid calling the `int` object; now it's calling that lambda instead)
23:03:12 -!- monoxane has quit (Quit: Ping timeout (120 seconds)).
23:03:38 -!- monoxane has joined.
23:03:46 <int-e> `` python3 -c"a = lambda x: lambda y: lambda z: x(z)(y(lambda _: z)); print(a(a(a(a(a))(a)))(a(a(a))(a))(lambda a: lambda b: lambda c: [a,b,c,42])("a")("b")("c"))"
23:03:48 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ NameError: name 'b' is not defined
23:04:06 <int-e> `` python3 -c"a = lambda x: lambda y: lambda z: x(z)(y(lambda _: z)); print(a(a(a(a(a))(a)))(a(a(a))(a))(lambda a: lambda b: lambda c: [a,b,c,42])('a')('b')('c'))"
23:04:07 <HackEso> ​['a', 'b', 'c', 42]
23:04:34 <int-e> and you can check that the lambdas don't come from the a(lpha) too.
23:05:12 <int-e> in any case, the diagnosis is still too much strictness :)
23:14:53 <salpynx> how does Haskell cope with that I(I)?
23:15:55 <int-e> What I have there is a symbolic evaluator that does leftmost outermost reduction.
23:17:06 <int-e> You could do the same thing in Python and it would cope with it just as well.
23:19:23 <int-e> as for how lazy evaluation works... there's special support for suspended computations deep down in Haskell's implementation (STG, the spineless, tagless G-machine; there's papers)
23:20:09 <salpynx> sorry, just going back to "Note how there's a `0^... just before the last line, that gets erased in the final step?"  You mean the line "^`^1```0^```α`ααα^2^....." ?
23:20:31 <int-e> yes
23:21:27 <int-e> that 0 refers to the outermost lambda, so you will have put a 0: int there.
23:21:32 <salpynx> I noticed when I ran I(fn) where fn was something that printed to stdout, it got called 5 times (IIRC)
23:25:14 <salpynx> ah, and the other variation of the strangeness that I think I'm seeing is that I(SKS) appears to be an infinite loop, without errors. While I(SKK) gives me the max recursion error.
23:29:27 <salpynx> so it's just down to lazy evaluation sidestepping an infinite loop? ... and python falls into it for not being lazy?
23:30:51 <salpynx> That seems less mysterious, if that's the case.
23:31:38 <int-e> where "lazy evaluation" is less about Haskell and more about explicit leftmost outermost reduction
23:32:27 <int-e> (which is not exactly lazy evaluation; it loses sharing)
23:33:02 <int-e> (but that's only relevant for performance, not for termination)
23:36:47 <salpynx> Is there terminology to distinguish between an  I = ``α`α``α`ααα``α`ααα that requires explicit leftmost outermost reduction to return a result in some cases, and I = ``α``α`αα``````α`αααααααα , which seems to be less picky?
23:39:29 -!- DHeadshot has quit (Read error: Connection reset by peer).
←2022-01-13 2022-01-14 2022-01-15→ ↑2022 ↑all