00:03:19 -!- impomatic has quit (Quit: impomatic). 00:03:39 -!- impomatic has joined. 00:07:44 [[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 How do ordinal numbers work when "zeroth" exists? When "zeroth", does "first" = "second"? 00:27:10 I got confused by the NDball page because of this 00:27:27 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 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 (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 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 S blows out amazingly, (1933 character line at max, with 731 alphas) but reduces down relatively quickly. 10:38:28 ... 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 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 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 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 wib_jonas: if at the end of january? 10:59:44 which year, fungot? which year? 10:59:44 wib_jonas: i don't like 10:59:56 those games have been going on for over two decades now. "january" doesn't help. 11:01:20 fungot: Have you been watching AGDQ? I saw something about Pokémon. 11:01:21 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 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 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 Heh, apparently "asi523" is a sufficiently common word to not get fnorded. 11:10:14 :-) 11:15:31 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 salpynx: I = A(A(A(A A)A))(A(A A)A) of size 10 11:18:04 has anyone heard of the Harmonic Time-Bind Ritual Symphony? 11:18:11 nice, I've just been checking αKK = I, which seems to work 11:18:17 I am thinking I might try it out later 11:20:16 riv: does that involve a choir of four simultaneous 24-hour days? 11:20:28 it's very likely to 11:23:04 -!- salpynx has quit (Quit: Client closed). 11:35:52 -!- salpynx has joined. 11:36:53 fungotÉ you rotate it backwards, apparently. but I still don'tk now the answer to the Pokémon question. 11:36:54 wib_jonas: or just a genral stigma?), a is -1 or inputed character, and it can run more than one 11:37:37 fungot gotta poke em all 11:37:37 riv: now nobody say " bot," then you are just asking for bad puns to be made? 11:49:14 fungot: Yeah, that's your purpose on this channel, to make bad puns. 11:49:15 fizzie: oh no, that's fine then :) an " object identity equality" operator 11:49:41 IDGI 12:10:15 -!- razetime has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.). 12:21:23 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 `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(I)" 12:23:32 Traceback (most recent call last): \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ [Previous line repeated 996 more times] \ RecursionError: maximum recursion depth exceeded 12:25:05 salpynx: try import sys; sys.setrecursionlimit(1_000_000) 12:25:59 ```>>> I(I) 12:26:00 Segmentation fault (core dumped)``` 12:26:01 ​``>>>? No such file or directory 12:26:06 fun! 12:26:46 -!- kit-ten has quit (Ping timeout: 250 seconds). 12:27:45 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 `` 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 test 12:29:51 instead of i(i), how about the simpler i(0) ? 12:30:38 -!- tech_exorcist has joined. 12:33:22 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 [[Subleq]] https://esolangs.org/w/index.php?diff=92059&oldid=90797 * Shaman * (+178) 12:34:36 tromp: maybe it's the identity only up to eta conversion equivalence 12:34:51 (S(K)(K))(S(K)(K)) (all in terms of alpha) gives a fn that behaves as identity 12:35:15 I(S(K)(K)) triggers the max recursion depth 12:35:59 strangely I(S(K)(S)) seems to be trying to do something, but I haven't seen it terminate yet 12:36:10 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 it equals I itself, not some other eta equivalent 12:37:31 tromp: in that case you should be able to pass a non-callable argument to it 12:37:59 [[Izhora]] https://esolangs.org/w/index.php?diff=92060&oldid=89479 * Shaman * (+103) 12:38:28 [[Izhora]] https://esolangs.org/w/index.php?diff=92061&oldid=92060 * Shaman * (+6) 12:38:48 [[Izhora]] https://esolangs.org/w/index.php?diff=92062&oldid=92061 * Shaman * (+0) 12:38:56 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 If this is what you meant, I(0) where 0 is an integer 0: 12:38:58 `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(0)" 12:38:59 Traceback (most recent call last): \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ [Previous line repeated 2 more times] \ TypeError: 'int' object is not callable 12:39:49 while a itself it typable: a :: (a -> t1 -> t2) -> ((b -> a) -> t1) -> a -> t2 12:42:53 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 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 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 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 I think this is a shorter version of that idea: 13:00:41 >>>I(fish) 13:00:41 13:00:42 >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(0) 13:00:42 'fish test!' 13:00:43 >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(1) 13:00:43 at 0x7f21d9c95c80> 13:00:44 >>> I(fish)(1)(2)(3)(4)(5)(6)(7)(0) 13:00:44 'fish test!' 13:00:45 >>> (S(K)(K))(I)(fish)(1)(2)(3)(4)(5)(6)(7)(0) 13:00:45 'fish test!' 13:00:46 >>> (S(K)(K))(fish)(1)(2)(3)(4)(5)(6)(7)(0) 13:00:47 'fish test!' 13:10:55 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 What is your opinion on rust { and } format string feature? 13:18:16 you escape then like this {{ and }} 13:20:23 \n denotes a newline, so it is better that { just denotes a '{ 13:20:37 ' character. and \{ \} be used as metacharacters 13:20:58 it may be thought of as less readable 13:22:52 -!- SGautam has quit (Quit: Connection closed for inactivity). 13:28:43 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 so you can look at it in layers 13:29:13 having two layers of metacharacters, escaping and quotation - is it a good thing or a bad thing 13:32:46 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 i see 13:43:04 tromp: I( α(α(α)(α)) )  is a smaller term that causes the max recursion (or segfault if the limit is increased) behaviour 13:44:00 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 [[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 [[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 tfw you put b { font-weight: normal } in your CSS because is shorter than 17:31:46 > 5375045 / 7480981 17:31:48 0.7184946733590154 17:42:05 -!- wellen has joined. 17:51:00 [[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 Oh I like the dialogue in today's GG. 19:21:53 Same planet, different worlds. 19:26:09 i almost thought the castle was affected by the fumes there 19:29:13 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 b_jonas: I didn't; b was the first single letter one I thought of :P 19:31:16 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 was new to me, somehow 19:32:12 and is too special. 19:36:02 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 maybe a:not(a[href]) { ... } without the space 19:41:03 [[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 [[Dirac]] https://esolangs.org/w/index.php?diff=92067&oldid=92066 * Palaiologos * (+92) 20:01:01 -!- Noisytoot has joined. 20:03:51 [[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 [[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 [[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 [[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 [[Ethan T. Stanger]] https://esolangs.org/w/index.php?diff=92072&oldid=92071 * Ethan T. Stanger * (-18) 20:08:14 [[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 [[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 [[Special:Log/newusers]] create * Fxomt * New user account 20:58:10 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=92075&oldid=92028 * Fxomt * (+247) /* Introductions */ 21:26:51 [[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 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 (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 I wonder how much that would shrink if I replaced useless subterms by ⊥ 22:29:31 im having trouble opening those links 22:29:35 uhm 22:29:38 yeah you would 22:30:05 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 seriously cool visualization 22:32:08 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 https://int-e.eu/~bf3/tmp/alpha-b.html stands out in that the three remaining abstractions stem from different alphas 22:33:59 Hello salpynx 22:34:54 Hi! 22:36:58 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 salpynx: code looks like this: https://paste.debian.net/1227159/ 22:39:06 (which is improved from yesterday where I generated HTML with `sed` :P) 22:39:26 +1 for sed! 22:40:17 which would not have supported the highlighting through hovering on (the head of) subterms that the new version does :) 22:40:29 The first 768 bits of a empty hash are: 8d90a8ffcc33d31505cc15e2042c766e9bd965d4e51dce84fe0d871bd1d40ecbe4a2091aa2217ac92f9654b4b994ba69ba2630e260ddfd26efc7de04787984240e7e5b0d80c0ee7d616e479d6ebc3346b6efb6086e9bb0aa870de4ce8b97f019 22:40:46 -!- __monty__ has quit (Quit: leaving). 22:45:02 tromp: you might like the Read instance from that paste :) 22:45:35 (different design choice from yours: I use digits 0..9 and then add parentheses: (10), (11) etc.) 22:45:56 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 Not sure if it's the limitations of python, of there's something weird with the combinator. 22:48:11 Hmm. 22:50:39 I = ``α`α``α`ααα``α`ααα = A(A(A(A A)A))(A(A A)A) = α(α(α(α(α))(α)))(α(α(α))(α)) 22:51:05 the python notation is the worst, but it's what I'm executing 22:52:45 well Python is strict. 22:53:11 Note how there's a `0^... just before the last line, that gets erased in the final step? 22:53:20 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 if you try to evaluate that, it'll apply something to the argument, corresponding to TypeError: 'int' object is not callable 22:57:11 I was working around that by only using functions 22:57:22 this is the strangeness: 22:57:24 `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));I = α(α(α(α(α))(α)))(α(α(α))(α));I(I)" 22:57:25 there may be other problems with the translation, I'm not sure. 22:57:26 Traceback (most recent call last): \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ File "", line 1, in \ [Previous line repeated 996 more times] \ RecursionError: maximum recursion depth exceeded 22:57:41 vs. 22:57:43 `` python3 -c"α = lambda x: lambda y: lambda z: x(z)(y(lambda _: z));K = α(α)(α(α(α))(α)(α)(α))(α)(α(α));I = α(K)(α);print(I(I) == I)" 22:57:44 True 22:58:38 ... 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 `` 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 42 23:03:00 (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 `` 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 Traceback (most recent call last): \ File "", line 1, in \ NameError: name 'b' is not defined 23:04:06 `` 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 ​['a', 'b', 'c', 42] 23:04:34 and you can check that the lambdas don't come from the a(lpha) too. 23:05:12 in any case, the diagnosis is still too much strictness :) 23:14:53 how does Haskell cope with that I(I)? 23:15:55 What I have there is a symbolic evaluator that does leftmost outermost reduction. 23:17:06 You could do the same thing in Python and it would cope with it just as well. 23:19:23 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 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 yes 23:21:27 that 0 refers to the outermost lambda, so you will have put a 0: int there. 23:21:32 I noticed when I ran I(fn) where fn was something that printed to stdout, it got called 5 times (IIRC) 23:25:14 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 so it's just down to lazy evaluation sidestepping an infinite loop? ... and python falls into it for not being lazy? 23:30:51 That seems less mysterious, if that's the case. 23:31:38 where "lazy evaluation" is less about Haskell and more about explicit leftmost outermost reduction 23:32:27 (which is not exactly lazy evaluation; it loses sharing) 23:33:02 (but that's only relevant for performance, not for termination) 23:36:47 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).