00:17:35 <esolangs> [[Talk:Binary lambda calculus]] https://esolangs.org/w/index.php?diff=119874&oldid=119869 * Squidmanescape * (+1633) /* Tentative Explanation */
00:40:41 -!- JAA has quit (Ping timeout: 268 seconds).
00:41:20 -!- JAA has joined.
02:07:39 -!- Sgeo has joined.
02:20:00 -!- Guest50 has joined.
02:20:25 -!- Guest50 has quit (Client Quit).
02:20:53 -!- solmanac has joined.
02:24:55 <solmanac> Thinking about implementing something like bit bit jump in ttl chips
02:28:23 -!- solmanac has quit (Quit: Client closed).
03:10:05 -!- solmanac has joined.
03:18:06 -!- solmanac has quit (Quit: Ping timeout (120 seconds)).
04:15:00 -!- ais523 has quit (Quit: quit).
04:22:20 <Sgeo> https://www.reddit.com/r/WordAvalanches/comments/184kfrl/hey_what_type_of_logic_gate_can_be_used_alone_to/
04:23:11 <zzo38> I had considered something similar than "something like bit bit jump in ttl chips" in the past, too
07:06:59 -!- Swyrl has quit (Read error: Connection reset by peer).
07:07:00 -!- shikhin has quit (Quit: Quittin'.).
07:07:10 -!- shikhin has joined.
07:07:11 -!- Swyrl has joined.
07:07:22 -!- FestiveDragon has quit (Quit: ZNC - https://znc.in).
07:07:39 -!- A_Dragon has joined.
07:07:51 -!- lambdabot has quit (Ping timeout: 260 seconds).
07:10:35 -!- lambdabot has joined.
07:54:45 -!- tromp has joined.
08:46:11 -!- __monty__ has joined.
09:11:32 -!- Koen has joined.
09:14:54 -!- cpressey has joined.
09:18:17 -!- Sgeo has quit (Read error: Connection reset by peer).
09:24:06 <cpressey> b_jonas: for clarity: the code that the macro expands to is here: https://codeberg.org/catseye/define-opaque/src/branch/develop-0.2/eg/stack-expanded.scm
09:24:06 <cpressey> It doesn't rely on `eq?`, and it only uses `equal?` to compare symbols.
09:24:07 <cpressey> I would find it very difficult to believe that in the untyped lambda calculus, you can't compare two symbols for equality.
09:25:34 <b_jonas> cpressey: you can't ensure that you only get a symbol rather than an arbitrary function
09:26:52 <b_jonas> that said, you may have a point
09:27:36 <b_jonas> so what you're doing there is make a closure that responds to only certain methods rather than expose its whole inside
09:27:42 <b_jonas> that part might actually work in lambda calculus
09:27:54 <b_jonas> I was thinking of a different goal with data hiding that is harder
09:41:44 <cpressey> OK, yes, "compare for equality modulo bottom" should be acceptable here; if the user passes in a symbol that isn't defined in the structure, that's an error; also an error if they pass in a non-symbol; and if they pass in some kind of nonterminating function there, that's just another flavour of error
10:10:29 -!- Lord_of_Life_ has joined.
10:10:57 -!- Lord_of_Life has quit (Ping timeout: 260 seconds).
10:13:28 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
10:17:45 -!- Guest80 has joined.
10:19:01 -!- Guest80 has quit (Client Quit).
10:21:31 <b_jonas> cpressey: ok, but you have to be careful. suppose you're representing one symbol as (\x\y.x) and another symbol as (\x\y.y), the user could pass in something that does terminate but does something with both x and y that confuses your method dispatcher if you write it wrong
10:21:40 <b_jonas> I think you might actually be able to write it correctly in this case, but still
10:24:01 <b_jonas> or suppose you expect the user to pass in push_symbol = (\x\y.x) or pop_symbol = (\x\y.y) and then you do (somesymbol push_function pop_function data) but they actually pass in (\x\y.evil_function)\
10:24:17 <b_jonas> so you can mess up if you aren't careful
10:29:12 <b_jonas> I think that means you can only do this in lazy lambda calculus, not unlambda style strict lambda calculus
10:29:57 <b_jonas> because you have to do like (somesymbol (push_function data) (pop_function data)) and there (pop_function data) may be non-terminating
10:30:26 <b_jonas> obviously you can avoid that in the simple case of a stack push/pop by making pop terminate even for an empty list, but I mean in the general case
10:41:56 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
10:49:08 <cpressey> Thanks for thinking about it, but I don't we're thinking about the same concerns here.
10:49:09 <cpressey> You can use this under strict evaluation just as well as you can use anything else under strict evaluation -- it's not expected to magically be resistant to someone passing in value whose evaluation doesn't terminate.
10:49:09 <cpressey> The only "evil" here is if the user can supply some input that can change the internal state to some state that the operations don't expect it to be in.
10:49:10 <cpressey> So if there is a hole I'd expect it to be in the ability to pass in parameters. But, it seems like you could replace any operation with a parameter, with a number of parameterless operations, e.g. ZERO, INC, DEC, PUSH to replace a single operation that pushes an int.
10:51:07 -!- tromp has joined.
11:47:17 -!- FreeFull has quit (Ping timeout: 256 seconds).
11:51:11 <cpressey> Yeah I don't know. I need to play with a LC interpreter to get a better feel for it. But it might be that the function representing the opaque data structure has no choice but to trust the functions that are passed into it. i.e. it asks them to evaluate functions that it gives them. That won't work.
11:53:25 <cpressey> If untyped LC can't implement this, that's not the end of the world -- I mean, TMs can't implement it either. And neither can term rewriting. But LC feels like it should stand a better chance :)
12:02:30 <b_jonas> yeah, you can just choose a different language, one that is more prepared for this sort of thing
12:03:26 <b_jonas> running untrusted code safely just isn't the goal of lambda calculus
12:04:09 <tromp> typed lC let's you rule out untrusted code
12:04:51 <b_jonas> tromp: yes, that's how Haskell's IO is supposed to work
12:05:33 <cpressey> My goal is to find the simplest language in which you can build opaque data structures
12:05:35 <b_jonas> your safe code is running but can't have side effects, it just returns an IO value that tells the IO manager what side ffect you want
12:06:29 <cpressey> In untyped LC, if the caller passes you a "boolean" x, can you not just "clean" the boolean by saying: IF X T F
12:07:04 <tromp> that does nothing when x = K (K evil)
12:07:07 <cpressey> IF x T F ... should always evaluate to either T, or F, or won't terminate
12:08:27 <b_jonas> cpressey: I don't think that helps if you're still in lambda calculus
12:09:02 <b_jonas> you have a value that you think might be T and F, the only way you can use it (if you want to distinguish T from F) is to call it
12:09:05 <tromp> IF (K(K evil)) T F = evil
12:10:34 <b_jonas> in the usual representation, true is just (\x\y.y) and false is (\x\y.x) and if is just identity
12:10:51 <b_jonas> they don't actually laundher the booleans, they just pass them unchanged
12:11:25 <b_jonas> there are other representations of booleans, but they aren't better
12:11:37 <cpressey> OK. So to turn the question around, is it possible to devise an encoding in which IF x T F can only ever evaluate to T or F or fail to terminate?
12:12:09 <b_jonas> not in untyped lambda calculus that is
12:12:27 <b_jonas> you may be able to in some larger languages
12:13:23 <cpressey> Well, yes, obviously it's possible to define a language that guarantees that. The question for me right now is, what is the essense of that guarantee
12:13:34 <cpressey> and it looks like I won't find that essence in untyped lambda calculus :)
12:14:11 <b_jonas> a necesary requirement is that you can do something with values other than call them as a function
12:14:19 <b_jonas> in untyped lambda calculus you can't
12:14:25 <b_jonas> nor in unlambda or underload
12:15:58 <b_jonas> this is not a sufficient requirement of course
12:16:18 <b_jonas> like in undereload you can actually do one more thing with values besides call them as a function: you can print them
12:16:26 <b_jonas> but that just isn't useful
12:16:58 <b_jonas> dc is close to that kind of silliness with strings too
12:18:01 <b_jonas> you can eval a string, or you can take its length, or you can print it, but you can't break it to characters and get the ascii value of each character
12:23:36 <cpressey> "My goal is to find the simplest language" <-- of course "simplest" is somewhat subjective. Just trying to help frame the problem. I'm actually thinking of the Actor model right now. Actors are opaque wrt each other.
12:29:52 <cpressey> (Interestingly, historically Scheme developed as an attempt to better understand the Actor model; but from what I remember reading about it, I don't think "opacity of data structures" played a major part in it)
12:32:12 <cpressey> But, yes. The thing that defeats it in untyped LC, is that "all data is code". If you have "some data isn't code", that's one way to build around it. (Whereas in a Turing machine, "no data is code"... at least, not until you build a UTM.)
12:59:44 <esolangs> [[Extension]] https://esolangs.org/w/index.php?diff=119875&oldid=109561 * ChuckEsoteric08 * (-3)
13:20:41 -!- solmanac has joined.
13:21:06 -!- solmanac has quit (Client Quit).
13:33:22 -!- cpressey has quit (Ping timeout: 250 seconds).
13:38:46 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
13:52:10 -!- tromp has joined.
14:50:12 -!- A_Dragon has changed nick to Festive_Derg.
15:33:27 -!- shikhin has changed hostmask to ~shikhin@offtopia/offtopian.
15:34:28 -!- shikhin has quit (Quit: Quittin'.).
15:35:56 -!- shikhin has joined.
15:37:06 -!- shikhin has changed hostmask to ~shikhin@offtopia/offtopian.
15:52:28 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119876&oldid=119866 * Quito0567alt * (+21)
15:52:56 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119877&oldid=119876 * Quito0567alt * (+36)
15:53:04 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119878&oldid=119877 * Quito0567alt * (-2)
15:53:16 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119879&oldid=119878 * Quito0567alt * (+0)
16:17:19 -!- kwii has joined.
16:51:32 <Koen> b_jonas: is it okay if I take our discussion from the other day about pattern-matching on arbitrary expressions, and try to use it to write an answer to the stackexchange question?
16:53:07 <b_jonas> feel free to write an answer
16:53:55 <b_jonas> I don't think I have a good enough complete answer and I don't want to figure it out so I won't write one
16:54:26 <b_jonas> I don't know enough about the computability part to know if you can make some sense of this
16:58:35 <Koen> well, it shouldn't be too hard to write a language interpreter that runs a solver on expressions and tries to turn "case y of expr(x) = ..." into "if y in image(expr) then let x = expr^-1(y) ..."
16:59:40 <Koen> you just run a paradox if you assume that the solver can deal with all expressions, including expressions that rely on the solver
17:07:42 <esolangs> [[JamogusLamogusAmogus]] N https://esolangs.org/w/index.php?oldid=119880 * NameGoesThere * (+439) Created page with "JamogusLamogusAmogus (refer to it as "Jlamogus" in formal situations) is a very "sussy" esoteric interpreted programming language made in python. JamogusLamogusAmogus uses the incredibly unique file extension of "". List of JamogusLamogusAmogus' funct
17:19:13 <b_jonas> Koen: yes, but (1) you have to be careful to evaluate the expression in parallel (triangle style) for all possible values of the variable
17:19:31 <Koen> not sure what that means
17:19:50 <b_jonas> and (2) you need to be able to generate all possible values of the variable in sequence, even when there are infintely many of them and it may be a function type
17:20:27 <b_jonas> say you're trying a match like like let [f x] = y
17:20:37 <b_jonas> f may be a complicated function, right?
17:21:00 <b_jonas> so the way you do that is try various values of x by calling the function and see when the output matches y
17:21:22 <b_jonas> but the problem is, sometimes f doesn't terminate
17:21:24 <Koen> oh, I would hope the solver is smarter than just try things randomly
17:22:07 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119881&oldid=119880 * NameGoesThere * (+729) added more stuff idk
17:22:24 <tromp> https://en.wikipedia.org/wiki/Dovetailing_(computer_science)
17:22:54 <b_jonas> is that what it's called? okay
17:25:54 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119882&oldid=119881 * NameGoesThere * (+3890) added hello world and how to run
17:28:44 <tromp> related: https://hackage.haskell.org/package/control-monad-omega-0.3.2/docs/Control-Monad-Omega.html
17:28:46 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119883&oldid=119882 * NameGoesThere * (+38)
17:30:15 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119884&oldid=119883 * NameGoesThere * (-18) /* Jlamogus.py: */
17:31:09 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119885&oldid=119884 * NameGoesThere * (+1) /* Jlamogus.py: */
17:31:29 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119886&oldid=119885 * NameGoesThere * (+1) /* Jlamogus.py: */
17:32:01 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119887&oldid=119886 * NameGoesThere * (+0) /* Jlamogus.py: */
17:33:50 <esolangs> [[JamogusLamogusAmogus]] M https://esolangs.org/w/index.php?diff=119888&oldid=119887 * NameGoesThere * (+4) /* Hello World in JamogusLamogusAmogus: */
17:34:09 <esolangs> [[JamogusLamogusAmogus]] M https://esolangs.org/w/index.php?diff=119889&oldid=119888 * NameGoesThere * (+7) /* Running "." files: */
17:44:30 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:50:35 -!- ais523 has joined.
18:07:24 <Koen> okay, I posted an answer https://langdev.stackexchange.com/questions/3194/are-there-haskell-like-languages-where-equations-allow-for-arbitrary-left-hand-s/3249#3249
18:08:44 <Koen> feel free to criticise. Also I acknowledged your help at the end and made it "community wiki" so feel free to edit directly if you want to (even to remove your name if you want anonymity)
18:11:57 -!- tromp has joined.
18:26:29 -!- Guest38 has joined.
18:27:43 <Guest38> Any server/channel to investigate human design?
18:28:13 <ais523> what do you mean by human design?
18:28:29 <Guest38> sorry for the translations, I'm using google
18:29:15 <Guest38> is my summary of human design
18:29:20 <ais523> I'm still not sure what you mean, but suspect that this is the wrong channel to ask in
18:30:28 <Guest38> I am looking for a server/channel focused on esotericism
18:31:28 <Guest38> 75 users for the site, that seems like a lot to me
18:32:06 <ais523> oh, this channel is about esoteric programming languages, but this question comes up occasionally
18:32:11 <HackEso> This channel is about programming -- for the other kind of esoterica, try #esoteric on EFnet or DALnet.
18:32:32 <ais523> there, there's a couple of channels you might want to try instead
18:32:52 <ais523> I'm not sure how active they are nowadays though
18:33:10 <Guest38> Thank you very much, programmers!
18:33:54 -!- Guest38 has left.
18:36:00 <b_jonas> I have no idea if those channels that that thing redirects to are actually still alive
18:36:29 <b_jonas> ``` hg log --removed -T "{rev}|{date|shortdate}|{desc}\n" /hackenv/wisdom/esoteric
18:36:32 <HackEso> 9071|2016-09-25|<fizzie> revert 942e964c81c1 \ 9070|2016-09-25|<evilipse> ` chmod 777 / -R \ 5897|2015-08-13|<int-e> revert accbc9c5c7ec \ 5895|2015-08-12|<ais523> echo wisdom/* | shuf | head -n 10 | xargs rm \ 5442|2015-06-07|<oerjan> ` sed -i \'s/on .*/on EFnet or DALnet./\' wisdom/esoteric \ 3343|2013-07-31|<Bike> revert \ 3342|2013-07-31|<FreeFull> for x in wisdom/*; do rev "$x" > "$x"a; mv "$x"a "$x"; done \ 1716|2013-01-24|<Gregor> hg diff -r1703:170
18:36:34 <ais523> nor do I – I think last time we checked one of them was kind-of limping along
18:37:12 <b_jonas> that's not that old, given that #esolangs is 20 years old
18:39:16 <ais523> well, #esoteric is that old, #esolangs is much newer because Libera hasn't been around that much, but it's the same channel in spirit
18:39:37 <ais523> – apparently to the extent that people can mistake the topic even after we changed the channel name to be more precise
18:39:41 <b_jonas> ``` hg log --removed -T "{rev}|{date|shortdate}|{desc}\n" -r 378 /hackenv/wisdom/welcome
18:39:43 <HackEso> 378|2012-05-06|<elliott> learn Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
18:39:59 <b_jonas> so the mention of Dalnet there was added in 2012
18:44:22 <fizzie> netsplit.de doesn't find an #esoteric in either DALnet or EFnet; though there is #luciferianism in EFnet that has the word in its topic, but that sounds more specific.
18:44:46 <fizzie> > 38 users - 42 minutes ago - current topic: ðð¥☀️w/ #satanism |Damn 'God'. Hail Lucifer!| www.mathematicon.com fox.com/lucifer gnosis.org #atheism #esoteric #gnosis #pagan #spiritual
18:44:47 <lambdabot> <hint>:1:45: error: lexical error at character '\159'
19:12:32 -!- ais523 has quit (Quit: quit).
19:25:54 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=119890&oldid=119843 * NameGoesThere * (+27) Added JamogusLamogusAmogus
19:27:40 <esolangs> [[User:NameGoesThere]] N https://esolangs.org/w/index.php?oldid=119891 * NameGoesThere * (+70) Created page with "Hello this is my page ok bye. I made this - *[[JamogusLamogusAmogus]]"
19:27:55 <esolangs> [[User:NameGoesThere]] M https://esolangs.org/w/index.php?diff=119892&oldid=119891 * NameGoesThere * (-1)
19:35:04 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:37:37 -!- tromp has joined.
19:48:28 -!- kwii has quit (Ping timeout: 255 seconds).
20:02:34 <esolangs> [[.mOdMoDwOrM]] https://esolangs.org/w/index.php?diff=119893&oldid=89807 * Squidmanescape * (+1771) /* Turing completeness */
20:07:54 <esolangs> [[JamogusLamogusAmogus]] M https://esolangs.org/w/index.php?diff=119894&oldid=119889 * NameGoesThere * (-32) /* Hello World x10 in JamogusLamogusAmogus: */
20:22:52 <esolangs> [[User talk:NameGoesThere]] N https://esolangs.org/w/index.php?oldid=119895 * NameGoesThere * (+39) Created page with "This is another one of my pages ok bye."
20:41:57 -!- kwii has joined.
20:44:07 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119896&oldid=119894 * NameGoesThere * (+25)
20:45:28 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119897&oldid=119896 * NameGoesThere * (+143) /* Hello World (x10) */
20:45:48 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=119898&oldid=119897 * NameGoesThere * (-143) /* Hello World (x10) */
20:56:13 -!- Koen has quit (Quit: Leaving...).
21:39:26 -!- iovoid has quit (Quit: iovoid has quit!).
21:39:26 -!- Bowserinator_ has quit (Quit: Blame iczero something happened).
21:41:07 -!- kwii has quit (Remote host closed the connection).
22:20:06 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119899&oldid=119879 * Quito0567alt * (-585)
22:20:27 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119900&oldid=119899 * Quito0567alt * (-15)
22:21:47 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119901&oldid=119900 * Quito0567alt * (+4)
22:23:01 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119902&oldid=119901 * Quito0567alt * (-3)
22:23:20 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119903&oldid=119902 * Quito0567alt * (+4)
22:23:46 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119904&oldid=119903 * Quito0567alt * (+0) /* Nov. 25 */
22:24:42 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119905&oldid=119904 * Quito0567alt * (+1)
22:25:11 <esolangs> [[Truth-machine]] https://esolangs.org/w/index.php?diff=119906&oldid=119411 * Quito0567alt * (+1) /* GotoScript */
22:27:49 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119907&oldid=119905 * Quito0567alt * (+2)
22:28:50 <esolangs> [[GotoScript]] https://esolangs.org/w/index.php?diff=119908&oldid=119907 * Quito0567alt * (+16)
22:32:36 -!- kspalaiologos has quit (Quit: Leaving).
22:37:06 -!- Sgeo has joined.
22:48:47 -!- iovoid has joined.
22:49:53 -!- Bowserinator has joined.
22:59:00 -!- __monty__ has quit (Quit: leaving).
23:33:20 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).