←2019-02-17 2019-02-18 2019-02-19→ ↑2019 ↑all
00:00:02 -!- danieljabailey has quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in).
00:00:12 <zzo38> I am I think I understand JavaScript, I think
00:00:44 <ais523> b_jonas: I had to learn how JavaScript OO worked to write the The Waterfall Model interpreter
00:00:45 -!- Lord_of_Life_ has joined.
00:00:53 <b_jonas> ah
00:01:02 <b_jonas> why?
00:01:07 <ais523> it's much easier to understand when you realise that x.prototype does not, despite appearances, give you access to the prototype of x
00:01:11 <b_jonas> couldn't you just avoid the eso parts of javascript when you wrote code?
00:01:18 <ais523> I wanted to do it properly
00:01:24 <b_jonas> ...
00:01:27 <ais523> and it was the sort of project where OO was helpful anyway
00:01:28 <b_jonas> I mean
00:01:37 <b_jonas> I was sort of in the same situation about ruby
00:01:41 <b_jonas> I gave up trying to understand it now
00:01:50 <zzo38> x.prototype accesses the prototype of new objects constructed using the function x. To get the prototype of x itself, you must use Object.getPrototypeOf(x) instead.
00:01:54 <ais523> yes
00:02:00 <b_jonas> and ruby 1.8 has the advantage that it has a very easy to read only implementation
00:02:09 <b_jonas> but that language is crazy
00:02:22 <b_jonas> I can't tell if it's crazier than javascript or not, because I know too little about javascript
00:02:25 <b_jonas> but it's crazy enough
00:02:43 <ais523> JavaScript is more hurried than crazy
00:03:04 <b_jonas> and it's crazy because of the object model too, the basis it's built over, not just because of something in the library
00:03:04 <ais523> it was originally written in a ridiculously short space of time to meet a deaddline
00:03:11 <fizzie> For C: "An implementation may give zero -- a sign, or may leave [it] unsigned. Wherever such values are unsigned, any requirements -- to retrieve the sign shall produce an unspecified sign, and any requirement to set the sign shall be ignored." "On implementations that represent a signed zero but do not treat negative zero consistently in arithmetic operations, the `copysign` functions regard the sign of
00:03:17 <fizzie> zero as positive."
00:03:24 <ais523> JS's object model is unusual but not unforgivable, although it would do with better terminology
00:03:42 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
00:03:43 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
00:03:48 <ais523> I guess copysign has two purposes: to extract a sign, and to set a sign
00:03:48 <b_jonas> fizzie: sure, but these days we have ieee floats almost everywhere
00:03:53 <ais523> and they both got merged into a single function
00:03:58 <b_jonas> oh, I wanted to ask
00:04:20 <b_jonas> did smalltalk originally call methods "method", or did the "method" name got popularized later, like with java or something?
00:04:39 <b_jonas> I was just wondering because of the "subprogram, procedure, subroutine, function, method" synonym thing
00:05:07 <b_jonas> oh, I should be able to answer that myself
00:05:22 <b_jonas> I have the scanned original smalltalk book on my hard drive
00:05:29 <b_jonas> (got it from the internet)
00:05:35 <ais523> doesn't Smalltallk generally use the word "message"?
00:05:52 <ais523> I've been learning Smalltalk again recently for work, because I wanted a mathematical model of OO languages
00:06:13 <ais523> so I've been basically developing a semantics of Smalltalk, because in every case where Java doesn't work like Smalltalk, I wish (for the purpose of proving things about it) it did
00:06:36 <fizzie> I think it might also use the word "method" as well, in the sense that a method is the thing that is activated when an object gets a message.
00:06:48 <ais523> that said, I still think that merging the program and interpreter was an incredibly bad move and is the reason that Smalltalk never caught on
00:06:59 <zzo38> At least OASYS calls all of the functions "methods", although all of them (other than the init method) must be called on an object, but it doesn't care what class of the object; the same methods are used for all classes. So, it look like unusual that they call it "method" if it is the same for all objects, to me.
00:07:38 <fizzie> Objective-C got the "message" word from Smalltalk, I think.
00:07:42 <ais523> I also think that having no compile-time type checking is a mistake
00:07:45 <ais523> fizzie: well, it's the obvious word to use
00:08:01 <b_jonas> answer: apparently they're called both "method" and "message",
00:08:07 <zzo38> I think the prototype inheritance in JavaScript is good, even though, some people don't like it
00:08:11 <b_jonas> "method" on the side of the class that defines them, "message" when you call them
00:08:22 <b_jonas> sort of like how some people use "parameter" vs "argument"
00:08:55 <b_jonas> ais523: sure, but my question was more about the history, not what the terminology is now
00:09:13 <b_jonas> ais523: wait what?
00:09:23 <b_jonas> ais523: but you're not, like, making feather for work, are you?
00:09:31 <ais523> no, don't worry
00:09:36 <b_jonas> good]
00:09:50 <b_jonas> fizzie: that's correct, yes
00:09:58 <ais523> I've put up with the weirdnesses of Java for this long, the points over Smalltalk that make it worse than Feather don't really bother me in comparison
00:10:43 <b_jonas> ais523: merging the program and interpreter => do you mean merging the interpreter with the integrated development environment? because APL did that and got popular. admittedly that was in the dark ages.
00:11:10 <fizzie> The C standard uses the parameter/argument words that way, though also has "actual parameter" as a deprecated synonym for "argument", i.e., an "expression in the comma-separated list bounded by the parentheses in a function call expression" (or the equivalent for a function-like macro).
00:11:38 <ais523> b_jonas: no, in most Smalltalk interpretations, you start with a running interpreter/IDE that's basically set up to be a debugger on itself, and you write the program by editing it in-place
00:11:48 <fizzie> (Likewise, "formal argument" is mentioned as a deprecated synonym for "parameter", the other thing.)
00:11:52 <shachaf> Does C have a word for the K&R style parameter type declarations?
00:12:03 <shachaf> k&r style is tg
00:12:18 <b_jonas> ais523: right. but isn't that sort of an optional part of smalltalk, in that you can have a modern implementation that doesn't do that?
00:12:22 <ais523> in theory, if you stuck to writing things that were clearly separable from the existing interpreter, you coul distinguish them
00:12:37 <ais523> b_jonas: the designers of Smalltalk apparently don't think so; I hope they are incorrect, though
00:12:49 <b_jonas> I mean, if you do want to have an interactive debugger, then it would become part of the program, like it does with perl or lua or ruby,
00:12:59 <b_jonas> but still
00:13:18 <b_jonas> you should be able to choose to not have an interactive debugger at all
00:13:54 <fizzie> shachaf: The whole set of them is called "a declaration list", though that's obviously meaningful only if you already have a function definition as the context.
00:13:58 <b_jonas> I hope that kind of build in APL or smalltalk stopped spreading when the unix philosophy of files and toolboxes took over
00:14:16 <b_jonas> there's obviously some inertia, but still
00:14:28 <fizzie> "If the declarator includes an identifier list [i.e., the list of parameters without types], the types of the parameters shall be declared in a following declaration list."
00:15:17 <ais523> b_jonas: what actually happened, AFAICT, is that Smalltalk continued to be spread like that but ended up dying out as a result
00:15:36 <ais523> because people rightfully rejected the approach
00:16:08 <fizzie> There's one example in the C99 rationale of a function that can only be defined in the K&R style: `int f(arr, len) size_t len; int arr[len]; { ... }`
00:16:30 <b_jonas> ais523: ok, but in that case we have to consider why APL didn't die out, and perhaps also prolog
00:17:15 <b_jonas> heck, I think even lisp counts
00:17:17 <fizzie> You can't write `int f(int arr[len], size_t len) { ... }` because `len` isn't in scope for the variable-length array. Or... well, in *that* case it could be declared just as a pointer. So maybe it was `int (*arr)[len]` instead in the example.
00:17:20 <ais523> most major Prologs nowadays work by having a program that's used to initialise an interactive interpreter with definitions
00:17:23 <b_jonas> back then before unix and operating systems, every programming language was like that
00:17:44 <ais523> and even if you develop a Prolog program within the interpreter rather than outside, you can do a simple `listing.` and get an output showing you the program that you wrote
00:18:01 <ais523> fizzie: there's a gcc extension that lets you do that, I think
00:18:21 <ais523> maybe `int f(size_t len; int arr[len], size_t len) { … }`
00:18:26 <b_jonas> and it's not because APLs changed: J is still sort of old style in that the interpreter tries to be primarily an intercative development environment, though at least it reads and writes OS files, including scripts from them
00:19:01 <fizzie> Yeah, the example was: `void f(double a[*][*], int n); void f(a, n) int n; double a[n][n]; { /* ... */ }`
00:19:16 <b_jonas> heck, matlab and maple and mathematica also primarily want to work that way, and I think mathematica got popular late enough that it can't even use history as an excuse
00:19:34 <b_jonas> fizzie: ouch
00:20:00 <b_jonas> fizzie: there's actually a gcc extension for that sort of function
00:20:04 <b_jonas> or was
00:20:44 <fizzie> "There was considerable debate about whether to maintain the current lexical ordering rules for variable length array parameters in function definitions. -- The possibility of allowing the scope of parameter `n` to extend to the beginning of the parameter-type-list was explored (relaxed lexical ordering), which would allow the size of parameter `a` to be defined in terms of parameter `n`, and could help
00:20:50 <fizzie> convert a Fortran library routine into a C function. Such a change to the lexical ordering rules is not considered to be in the 'Spirit of C,' however. This is an unforeseen side effect of Standard C prototype syntax."
00:21:31 <fizzie> They've uppercased "Spirit" in the original, which makes me think of it as some sort of conscious personification thing.
00:21:31 <shachaf> i,i void f(int a[static 2], int b[a[0]][a[1]])
00:24:52 <shachaf> whoa, the thing I wrote is valid C
00:25:28 <shachaf> I guess it's valid even without the static.
00:25:55 <shachaf> I forgot you could have arbitrary expressions in there.
00:25:57 <fizzie> Do you mean "accepted by my compiler" valid, or proper valid? Because I don't think it is.
00:25:59 <ais523> isn't the i,i a syntax error?
00:26:16 <fizzie> Well, maybe it is.
00:26:16 <shachaf> i,i was metasyntax
00:26:22 <fizzie> Wonky, though.
00:26:32 <shachaf> fizzie: It's accepted by a compiler but I also think it's valid.
00:26:42 <shachaf> Why would it not be?
00:26:48 <fizzie> Yes, I didn't think far enough.
00:26:56 <b_jonas> ais523: so in that case, are you planning to implement a new OO language that takes the good ideas from smalltalk, but not the ditstribution model?
00:27:11 <b_jonas> also, some but not all of the forth interpreters are distributed in that bad way I think
00:27:18 <ais523> b_jonas: right now I can't do that for the same reason I don't work on ayacc
00:27:19 <fizzie> The `a[0]` part is just documentative, but sure.
00:27:27 <shachaf> You mean the a[1] part?
00:27:37 <fizzie> No, that part's actually meaningful.
00:27:43 <b_jonas> ais523: why? can't you just make such a language for work?
00:27:45 <shachaf> Do I have it backwards?
00:27:46 <fizzie> It's equivalent to `int (*b)[a[1]]`.
00:28:18 <b_jonas> I mean, you said you learned the semantics of smalltalk for work
00:28:36 <b_jonas> (also I can't type "smalltalk". my fingers keep typing "smallk" and then I have to backspace)
00:29:24 <b_jonas> if you ever get to do that, I hope it won't turn to ruby
00:29:55 <ais523> b_jonas: well, it's not something that I've been asked to do, but it's obviously connected, so work would end up owning the copyright to it despite likely not having much use for it
00:30:04 <ais523> so the resulting languages would be somewhat wasted, probably
00:30:07 <b_jonas> I see]
00:30:19 <ais523> (maybe not directly, I could probably buy the rights for it off them, but it'd be way more bother than it's worth)
00:30:34 <shachaf> fizzie: Oh, right.
00:30:58 <shachaf> fizzie: So all the sizes except the *first* one are used.
00:31:06 <b_jonas> interestingly, rust seems to reflect a few of the things that I don't like in ruby, like how the name resolution rules are sometimes really weird just to make the syntax seem a bit nicer for the common cases
00:31:11 <shachaf> For some reason I thought it was the last one.
00:31:12 <b_jonas> ruby is much worse though, mind you
00:31:22 <ais523> b_jonas: didn't Rust change the name resolution rules recently?
00:31:31 <ais523> although I'm not sure if you dislike the old ones or the new ones or both
00:31:31 <b_jonas> ais523: there was a little change, yes
00:31:46 <b_jonas> but the remark applies both before and after
00:44:25 -!- oerjan has joined.
00:50:13 <oerjan> `` allquotes | tail -2
00:50:13 <HackEso> 1330) <b_jonas> I don't care for the bf backend as long as it doesn't make the rest of ayacc harder to sue \ 1331) <Taneb> ...this is the first prime number finder I've ever written which ran out of memory before finding 3
00:50:40 <oerjan> oh it was removed again
00:59:13 -!- Phantom_Hoover has quit (Remote host closed the connection).
01:00:06 <shachaf> `5 w
01:00:13 <HackEso> 1/1:stume//A stume cowears and goatears you. That is the main reason why the often look so ackward. \ me//Me is a proud member of the tEaM. \ rum//The Rum Tum Tugger is a Curious Cat \ accusative//Only evil people use the accusative. \ swedish//Swedish is the language of fine cuisine.
01:00:37 <shachaf> `forget rum
01:00:39 <HackEso> Forget what?
01:00:49 <shachaf> HackEso: rum hth
01:05:24 -!- Remavas[AFK] has quit (Read error: Connection reset by peer).
01:05:57 -!- Remavas[AFK] has joined.
01:06:19 <b_jonas> oerjan: I removed the quote I added
01:06:38 <shachaf> `5
01:06:40 <HackEso> 1/2:422) <monqy> cigaretes and drunking "lame highs for lame people" <oerjan> yeah if it doesn't make you go crazy and shoot at people, it's not worth it. take it from a norwegian. \ 1109) zzo38 [~zzo38@24-207-49-17.eastlink.ca] has quit [Quit: I need the stats for the small leech, not the big one. So, if you write it on here while I am gone then when I return I will check.] \ 822) <kmc> my current laptop basically works though <kmc> it can even play 8
01:06:41 <shachaf> `n
01:06:42 <HackEso> 2/2:year old video games as long as it is not raining in the game \ 647) <MDude> A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. <MDude> That agrees with what I know from that Scoobie Doo movie with the wiccans in it. \ 240) <treederwright> enjoy being locked in your matrix of solidity
01:34:06 <b_jonas> oh, I remember this one http://math.bme.hu/~ambrus/pu/ccache.png
01:34:26 <b_jonas> that was a fun lesson about computer architecture
01:40:41 <shachaf> Can Prolog or some other logic language express recursion in terms of unification somehow?
01:41:55 <ais523> shachaf: I tried «A = f(A)» in GNU Prolog, it apparently constructed the resulting infinite term correctly but was unable to print it
01:43:17 <shachaf> ais523: I'm wondering about writing recursive rules without explicit recursion using this kind of trick.
01:43:42 <b_jonas> ais523: isn't there a specific library function that can print such things? hmm, let me check
01:44:00 <ais523> hmm, to do that you'd have to /assert/ such a term, let me try that
01:44:27 <ais523> apparently attempting to do so sent the Prolog interpreter into an infinite loop
01:45:49 <b_jonas> what?
01:45:54 <b_jonas> why would you have to assert such a term?
01:46:08 <b_jonas> can't you just A = f(A), write_foo(A)
01:46:26 <ais523> b_jonas: in order to do a recursive calculation
01:46:29 <b_jonas> there doesn't seem to be such a library function though
01:46:34 <b_jonas> at least in gnu prolog
01:46:42 <ais523> you can't use a non-recursive predicate to inspect more than a finite number of nesting levels of a term
01:46:58 <ais523> shachaf's looking for a way to lift the recursive term to a recursive computation
01:47:16 <ais523> and the only way I could think of to do that was to assert one, but GNU Prolog doesn't seem to like that.
01:47:21 <b_jonas> ah, I see
01:47:59 <b_jonas> ah, here it is
01:48:44 <b_jonas> in SWI prolog, http://www.swi-prolog.org/pldoc/man?section=termrw says that write_term(A, [cycles(true)]) should write it in a finite representation
01:49:27 <b_jonas> and that write_term(A, [max_depth(10)]) will print a truncated representation
01:49:58 <fizzie> Is there a simple word for "all except the first", e.g. in the context of iterations of a loop? I guess maybe "subsequent" sort of works.
01:50:47 <shachaf> fizzie: I think "subsequent" during any particular iteration would mean all the rest, but before the first iteration it could be ambiguous.
01:50:50 <ais523> "subsequent" works if you used "first" earlier
01:51:22 <shachaf> I'm curious about the context of this because I was trying to figure out a style of loop a while ago.
01:52:05 <b_jonas> ais523: wait, are you sure in that thing?
01:52:06 <b_jonas> hmm
01:52:54 <ais523> "A = A + 1, B is A." got me a segfault
01:53:08 <shachaf> tg
01:53:10 <ais523> which I guess isn't particularly surprising
01:53:12 <b_jonas> I don't think that should happen
01:53:18 <shachaf> You know you're doing something right when you segfault the interpreter.
01:53:21 <b_jonas> oh
01:53:25 <ais523> I think that is in fact a recursive calculation done entirely using unifications, though
01:53:26 <b_jonas> it's just an out of memory
01:53:28 <b_jonas> that should be fine
01:53:33 <ais523> probably a stack overflow
01:53:41 <b_jonas> yeah
01:54:32 <b_jonas> ais523: but it's possible to translate untyped lambda calculus with just common prolog stuff and copy_term, so can't you use that to write recusion using a Y combinator?
01:54:36 <shachaf> Unbounded recursion should probably be illegal.
01:54:43 <ais523> I guess that's cheating, though, because 'is' is recursive internally
01:55:13 <fizzie> shachaf: I have one of those range-based for loops, and I needed to do something at the start of all but the first iteration, so I was contemplating doing something like http://ix.io/1Bll/cpp for it.
01:55:15 <shachaf> <shachaf> This is why when I'm emperor I'll ban both Java and recursion <shachaf> So all stack traces will be short
01:55:16 <ais523> b_jonas: how do you translate \x.x(1)?
01:55:40 <shachaf> fizzie: Are you able to do it at all but the last iteration instead?
01:55:48 <ais523> fizzie: do you need a special case for when the range has zero elements? for that sort of thing, you normally do
01:55:51 <b_jonas> ais523: let me look up the docs of olvashato, that's where I figured out the translation (actually slightly before I made olvashato, but I used it there and documented it)
01:55:53 <shachaf> I guess I should say why I'm asking.
01:56:07 <shachaf> I think there's a very common pattern which is awkward to express in most languages.
01:56:23 <shachaf> Where you're iterating over an array, say, but you want to do something for each index and each element.
01:56:28 <fizzie> ais523: Yes, but the special case is entirely different, so I just have that as an if (thing.empty()) before.
01:56:36 <ais523> shachaf: the most common place this comes up for me is when you're trying to implement "join" (i.e. join one string using another string) with iterative code
01:56:46 <shachaf> An n-element array has n+1 indices, so it's awkward.
01:56:59 <ais523> you need to add the separator either before every element but the first, or after every element but the last
01:57:26 <shachaf> Hmm, that's a little different because you don't want to do either the first or the last. But it's related.
01:58:12 <shachaf> Here's a non-array: How would you write code to insert into a prefix tree?
01:58:15 <shachaf> example
01:58:49 <ais523> normally when working with trees I use recursion
01:59:01 <shachaf> Say you have struct Node { struct Node *next[256]; bool end; };, and you want to write insert: void insert_node(struct Node **n, const unsigned char *s);
01:59:11 <shachaf> Recursion runs into the same-ish issue.
01:59:23 <ais523> I actually wrote this code for NH4 a while back
01:59:26 <shachaf> It's tail recursion anyway so it's kind of silly.
01:59:45 <b_jonas> ais523: (\x.(x 1)) translates to fun(X, R, (copy_term(X, fun(1, R, B)), B))
01:59:59 <ais523> here we go: http://nethack4.org/latest/nethack4/libnethack_common/src/trietable.c
02:00:14 <b_jonas> ais523: see https://esolangs.org/wiki/Olvashat%C3%B3#Prolog_output
02:00:15 <shachaf> An empty tree is represented as a null pointer, by the way.
02:00:17 <ais523> there doesn't appear to be any special case
02:00:51 <ais523> or, hmm, I guess the "if (key == 0)" case is the special case you're thinking of?
02:01:00 <shachaf> Yes, I think so.
02:01:16 <shachaf> If you wrote it iteratively instead of recursively it would be clearer.
02:02:26 <shachaf> void insert_node(struct Node **n, const unsigned char *s) { for (; ; s++) { if (!*n) *n = new_node; if (!*s) break; n = &(*n)->next[*s]; } (*n)->end = true; }
02:03:08 <b_jonas> ais523: and http://math.bme.hu/~ambrus/pu/olvashato/t2n.olv compiled to http://math.bme.hu/~ambrus/pu/olvashato/t2n.pl is actually an example that does recursion that way: the implementation of the loop function doesn't name the loop function itself
02:03:17 <shachaf> You want to run the thing before the break n+1 times and the thing after the break n times.
02:03:34 <ais523> b_jonas: OK, so what you're doing is using a single predicate that holds the implementation of all the lambdas?
02:03:46 <b_jonas> ais523: no
02:04:01 <b_jonas> ais523: the implementation of the lambda is in the term that represents the lambda itself
02:04:06 <b_jonas> you can call it from any predicate
02:04:39 <shachaf> Here's a different example, prefix sum:
02:04:40 <shachaf> vec<int> prefix_sum(vec<int> a) { vec<int> b; int sum = 0; for (auto it = a.begin(); ; ++it) { b.push_back(sum); if (it == a.end()) break; sum += *it; } return b; }
02:04:41 <b_jonas> it's a non-ground term
02:04:56 <shachaf> This is a little too awkward for IRC one-liners, I think.
02:05:28 <ais523> b_jonas: oh, I see, you have unbound variables sitting by themselves in predicate implementations
02:05:35 <ais523> that's the step that I didn't realise was possible
02:05:42 <ais523> and I'm still not sure that's possible
02:05:45 <b_jonas> ais523: yes, and I never bind them, I only bind copies made with copy_term
02:06:07 <ais523> A = write(6), A.
02:06:08 <ais523> 6
02:06:10 <ais523> wow
02:06:27 <ais523> I guess it's logical that that works, but I didn't expect it to
02:06:38 <b_jonas> ais523: I am not quite sure, but I think historical prolog required you to write call(A) instead of A there
02:06:47 <b_jonas> but all present prolog implementations seem to allow just A
02:07:04 <b_jonas> ais523: try A = write(6), call(A) if you prefer
02:07:17 <ais523> yes, I'm happy when you include the eval statement
02:07:25 <ais523> once you have that I'm not surprised that lambda calculus exists
02:07:29 <ais523> it's this sort of "implicit eval" that bothers me
02:08:02 <shachaf> I'm trying to figure out the general connection between trace(d monoidal categories) and fixed points, is the context of this Prolog thing.
02:08:06 <b_jonas> ais523: yeah, but prolog has several other builtins that take code predicates
02:08:57 <ais523> now I'm wondering if maplist can be implemented without library functions
02:09:08 <ais523> I'm guessing no, you need at least copy_term (or something else that can be used to simulate it)
02:10:40 <b_jonas> eg. (A,B) and (A;B) and (A->B;C) and once(A) and apply(A,L) and \+A and findall(P,A,L) each try to call A at least once
02:11:29 <ais523> I think ',' is really fundamental, isn't it?
02:11:59 <ais523> ';' can be implemented using two definitions for the same predicate
02:12:05 <b_jonas> ais523: dunno, it might be because of its interaction with !, but without that I think it can be implemented
02:12:22 <b_jonas> I mean, you can implement a new function that behaves just like ,
02:12:27 <ais523> hmm, perhaps some sort of continuation passing style would be possible to be able to do without ',', but you'd then need to rewrite every predicate to take a continuation argument
02:12:33 <b_jonas> as in begin(A,B) :- A,B.
02:12:41 <ais523> b_jonas: yes, but that requires using ',' for the implementation
02:12:42 <b_jonas> then you can write begin(A,B) instead of (A,B) in programs
02:12:43 <shachaf> Are binary trees every a good idea, anyway?
02:12:53 <b_jonas> ais523: you can probably implement it using some other library function
02:12:53 <ais523> shachaf: I think they can be
02:13:10 <b_jonas> it would be an inefficient eso-implementation
02:13:16 <b_jonas> and it might break programs with !
02:13:19 <shachaf> I mean, if you care about performance.
02:13:24 <ais523> I got halfway through writing a generic tree library in Rust that can be used to implement arbitrary sorts of self-balancing (or not-so-self-balancing) trees
02:13:42 <b_jonas> ais523: ooh! I'm interested in that
02:13:47 <ais523> because I think some such structure is often going to be the best possibility for performance and a generic structure makes it easy to swap them out
02:13:54 <ais523> b_jonas: in that case, I'll let you know if I finish
02:14:02 <ais523> I can't even remember why I stopped halfway through
02:14:04 <shachaf> But you almost always want a bigger branching factor than 2, don't you?
02:14:20 <ais523> and only vaguely remember the original reason, which I think was to write a fast But Is It Art? interpreter
02:14:26 <ais523> shachaf: yes, 2 is probably too small
02:14:29 <b_jonas> ais523: will it have both non-keyed trees, haskell Seq style, and keyed trees, Map style?
02:15:03 -!- Remavas[AFK] has changed nick to Remavas.
02:15:13 <ais523> b_jonas: there's the notion of an "index" and elements in trees are always stored in index order, but it's possible that when you add a new element, all the existing indexes move to make room for it
02:15:29 <ais523> for a Map-style tree, the indexes are just the keys
02:15:39 <ais523> for a Seq-style tree, they could be, e.g., the equivalent of array indexes
02:16:02 <ais523> I think you need different interfaces for the two cases, although a lot of code can be shared
02:16:10 <shachaf> So comparison sorts may not be that great, because you usually have more information about your data than binary comparisons.
02:16:26 <shachaf> Is binary search similarly not that great? What are the alternatives?
02:17:15 <ais523> shachaf: things like Newton-Rahpson (I might have misspelled that)
02:18:10 <b_jonas> ais523: I want something more general than array indexes, but sure
02:18:11 <ais523> where you look at a small locality of the data, make a prediction about what function the data represents based on that, and then go directly to the entry that should contain the result if your prediction is correct
02:18:13 <b_jonas> that sounds good
02:18:18 <ais523> b_jonas: yes, more general
02:18:24 <shachaf> Hmm, I meant for discrete, not a function, but that's an interesting analogy.
02:18:42 <ais523> shachaf: I know, a discrete example would presumably use similar techniques though
02:19:05 <shachaf> I was thinking of things like radix sort, which is a different kind of structure.
02:19:11 <b_jonas> ais523: and will this support both trees with in-place mutation, and pure functional trees with cow nodes Haskell style?
02:19:12 <ais523> of course, your prediction normally isn't 100% correct but the idea is to get closer to your target than a binary search would, and also /realise/ you're closer to the target (so that you don't move massively far away with the next check)
02:19:19 <shachaf> What kind of differentiable structure can you put on typical data?
02:19:32 <ais523> b_jonas: definitely
02:19:35 <b_jonas> good
02:19:36 <shachaf> I mean, there's that "learned index structure" paper.
02:19:38 <ais523> getting working copy-on-write was part of my motivation for this
02:20:02 <b_jonas> ais523: will you be using some Haskell libraries as a reference to get the implementation right?
02:20:06 <b_jonas> and that book
02:20:21 <ais523> b_jonas: no, I'm using some academic papers, and a core structure that's hopefully simple enough that it's obviously correct
02:20:25 <b_jonas> the Okasaki book
02:20:42 <b_jonas> ais523: the Okasaki book is close enough to an academic paper, but sure
02:20:58 <b_jonas> I for one found that it's the one that explained how red-black trees work the best
02:21:12 <shachaf> are fully persistent data structures even good twh
02:21:54 <b_jonas> shachaf: for some things, yes.
02:22:06 <b_jonas> eg. you might want to store all intermediate states of a computer game
02:22:18 <shachaf> But if you want to store intermediate states you don't need full persistence.
02:22:34 <ais523> b_jonas: I'm planning to implement it as 2-3-4 rather than red-black because they're equivalent and 2-3-4 fits into the general structure better
02:22:35 <shachaf> You only need it if you want to be able to fork a past state, or something.
02:22:36 <b_jonas> you want to store them shared, rather than writing a full copy in each step
02:22:51 <ais523> it might end up slower, though, despite being identically shaped
02:22:59 <b_jonas> you want this if you want to step both backwards and forwards when reviewing the game
02:23:05 <b_jonas> if you only want to step forwards, then it's easier
02:23:11 <ais523> shachaf: for BIIA? I'll presumably be forking a lot
02:23:12 <shachaf> ais523: I expect 2-3-4 trees to be faster than red-black trees?
02:23:32 <shachaf> What is BIIA?
02:23:35 <b_jonas> ais523: um, is a 2-3-4 tree like a B tree?
02:23:45 <ais523> shachaf: https://esolangs.org/wiki/But_Is_It_Art%3F
02:24:04 <ais523> b_jonas: it's basically a tree where nodes are binary or have 3 or 4 children, nodes can change dynamically
02:24:11 <shachaf> b_jonas: If you just want fast snapshots you don't need to have a fully persistent structure.
02:24:15 <b_jonas> oh, so that's why you want this, backtracking for a BIIA implementation
02:24:17 <shachaf> You can just put a timestamp on each thing or something.
02:24:22 <b_jonas> though why you want a BIIA implementation is unclear to me
02:24:47 <ais523> b_jonas: so yes, it's literally a sort of B-tree
02:24:59 <ais523> also, why /wouldn't/ I want a BIIA? implementation?
02:25:17 <ais523> I mean, there's an existing one, but it's hard to be confident that it works
02:25:18 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:25:23 <b_jonas> ais523: ok, I do more or less understand how B-trees work, though there's quite some freedom in them, they can be implemented in different ways
02:25:44 <shachaf> Red-black trees are a binary encoding of 2-4 B-trees.
02:25:54 <ais523> <Wikipedia> The red–black tree is then structurally equivalent to a B-tree of order 4, with a minimum fill factor of 33% of values per cluster with a maximum capacity of 3 values.
02:26:03 <shachaf> Binary trees are scow. You gotta at least fill a cache line.
02:27:08 <ais523> well, if you have values on the nodes (which you should do, otherwise how else will you know which side of the tree to look in for the comparison), they might fill the cache line if the values are large enough
02:27:31 <shachaf> That's true, though often the values are just pointers.
02:28:50 <ais523> incidentally, I had a fun realisation: the basic structure of a generalised search tree is that each node contains some number of values for use as comparison pivots, plus some number of pointers to child nodes; and the set of comparison pivots is itself a structure you wish to search in
02:29:16 <ais523> so this being Rust, with zero-cost abstractions and all, you can simply use the search tree interface you're working on to be generic over how the set of pivots is implemented
02:29:46 <ais523> ofc it probably wouldn't in practice be another tree, but I see no reason to rule that possibility out; I'm putting the same interface on things like sorted vectors anyway
02:30:09 <shachaf> I had a similar (?) realization recently.
02:30:24 <shachaf> Each level of a B+ tree is an index for searching the next level.
02:30:48 <shachaf> In particular, if you have a sorted array, you can make a B+-style index for the first few levels, which are small.
02:32:43 <b_jonas> ais523: do you want a nice testcase for backtracking? https://www.komal.hu/forum?a=to&tid=76&st=50&dr=1&sp=77#17868 on the chessboard, you want to put as few walls, each between two side-adjacent squares, to make it so there's exactly one way to pave the board with four-square L-tetrominos
02:33:08 <ais523> that problem sounds painful to solve
02:33:10 <b_jonas> ais523: easy version is to prove that the solution with the four walls shown on that image is correct, harder version is to find that solution
02:33:22 <b_jonas> ais523: it sort of is, yes
02:33:31 <ais523> I can see how backtracking would help to verify that a potential answer was correct (if perhaps not minimal)
02:33:34 <b_jonas> I solved the easy version with prolog once
02:33:58 <ais523> ugh, I need to remember to not attempt to read Hungarian when I see it
02:34:08 <b_jonas> the person who found the solution said he wrote a program to test every four-wall solution
02:34:13 <ais523> although some of the words there appear to be loanwords so it's not totally fruitless
02:34:40 <b_jonas> you can read them, the only spoilers are that (1) there's a four wall solution, which I told you, and (2) the image showing that solution, which is an image
02:34:56 <ais523> normally I can get an idea of the sense by looking for words that are similar to words I already know
02:34:58 <b_jonas> well, there are also some worse solutions earlier, but I don't think they're not spoilers
02:35:17 <b_jonas> ais523: that works better in a well-written text than in an informal web forum
02:35:21 <ais523> b_jonas: no, not because of spoilers, just because Hungarian's vocabulary doesn't have much in common with that of the European languages I know
02:35:53 <ais523> so trying to read it won't lead to much understanding
02:36:19 <ais523> whereas if I see text in, say, Spanish or Italian, I can often make a decent guess at what it's saying despite not knowing the languages
02:36:22 <b_jonas> he says though that the program ran too slow to test every four-wall solution
02:36:33 <b_jonas> but he found a solution among the ones he tested
02:36:51 <ais523> it's surprising to me that you only need four
02:37:02 <b_jonas> yes, it was surprising to us too
02:37:07 <ais523> but I guess the walls are being brute-forced and backtracking is only being used for the wall placement
02:37:08 <b_jonas> well, to me at elast
02:37:14 <ais523> anyway, this seems like the sort of program on which you use a constraint solver
02:37:21 <ais523> rather than a backtracking algorithm
02:37:49 <ais523> that's how we solved Polarium over on tasvideos.org, in the end; simply convert it into a boolean satisfaction problem and run it through a SAT solver
02:38:04 <b_jonas> ais523: yes, the walls are brute-forced except you should use the symmetry of the board, and yes, I wrote it using a constraint solver, it seems to help, but it's probably still possible with a clever backtracking solver without constraint
02:38:15 <ais523> (I had the leading solution before that, based on first proving things about the problem, then using a backtracking algorithm through the possibilities that hadn't been proved impossible)
02:39:28 <b_jonas> polarium... that's not the Game Boy puzzle game with the rotating gates and with blocks of various shapes pushed into holes, right?
02:39:37 <b_jonas> I'll have to look up what it is
02:39:47 <ais523> b_jonas: it's a DS puzzle game
02:39:54 <b_jonas> ah, that one
02:40:19 <ais523> the rules are as follows: you have a board made of squares, most are white or black, although there's a grey border around the edges; you may treat grey tiles as white or black, whichever works for your solution
02:40:42 -!- Remavas has quit (Quit: Leaving).
02:40:57 <ais523> you must draw a path made of squares, starting and ending anywhere on the board, which only moves orthogonally from one square to the next, and which doesn't use the same square twice
02:41:19 <ais523> and for each horizontal line of squares, the path must either go through all the white squares on that line and no black squares, or else all the black squares on that line and no white squares
02:41:36 <b_jonas> hmm
02:43:01 <b_jonas> it's getting late though, so good night
02:43:15 -!- b_jonas has quit (Quit: leaving).
02:48:54 -!- ais523 has quit (Quit: quit).
02:58:49 <zzo38> I am playing a roguelike game called "We are Hejickle", for NES/Famicom
03:00:50 <zzo38> There are runes that you cannot step on, but that your opponents can step on. There are also statues that you can see past but that nobody can step on. You cannot move diagonally but other people can.
03:33:02 <imode> https://imode.tech/projects/modal.html
03:52:24 <shachaf> fizzie: Callbacks are annoying for several reasons. One of them is that you can't early-exit from them.
03:52:36 <shachaf> I guess I shouldn't fizzie: that, I just saw my tab with the Subsequent code.
03:53:19 <shachaf> I'm still looking for the programming language thing akin to a lambda/block but that can't be stored and supports more operations.
03:53:32 <shachaf> I kind of hope the answer isn't "macro".
04:01:11 -!- danieljabailey has joined.
04:25:08 <kmc> what do you mean by can't be stored? what sorts of operations?
04:30:31 -!- FreeFull has quit.
04:36:35 <shachaf> kmc: Early exit is the most obvious one.
04:37:01 <shachaf> You could still sort of implement that as setjmp/continuations/exceptions/whatever.
04:37:17 <shachaf> Possibly operations that don't make sense at runtime at all, like changing the things that are in scope for a block.
04:37:46 <kmc> what do you mean by the last one
04:39:32 <shachaf> The question is something like, if "if"/"while"/etc. were user-defined, such that you'd want them to generate the same code they do in C or whatever, what would the type of their arguments be?
04:39:44 <shachaf> Hmm, something like "using namespace", for instance.
04:40:10 <shachaf> "using(foo) { BODY }", where everything in BODY automatically does lookups in the namespace foo.
04:40:21 <shachaf> Also other things that affect what's in scope.
05:12:13 <zzo38> I would have also want that "if", "while", etc are implemented as macros actually; maybe even something else
05:12:51 <zzo38> Even if not entirely defined as a macros, supporting a block code too somehow
05:43:55 -!- arseniiv has joined.
05:48:23 <oerjan> hm those theorems for that single rotation CA actually do have simple proofs
05:49:22 <oerjan> (it wasn't clear from the page whether e'd proved them logically or just enumerated all possibiliies. well at least the spaceship + single cell one.)
05:51:16 <oerjan> `wisdom fu.*a
05:51:17 <HackEso> That's not wise.
05:51:23 <oerjan> `wisdom fu*a
05:51:23 <HackEso> fugal//Fugals are fictitious flower parts.
05:51:36 <oerjan> `wisdom fu*ia
05:51:37 <HackEso> That's not wise.
05:51:49 <oerjan> `wisdom fu*a$
05:51:50 <HackEso> That's not wise.
05:51:53 <oerjan> oh wait
05:51:57 <oerjan> *sigh*
05:52:23 <oerjan> maybe it should be regex
05:53:17 <shachaf> fizzie: can people send commits to fshg directly instead of using HackEso twh
05:53:32 <shachaf> I mean, it's a little contrary to the spirit of the thing.
06:44:04 -!- oerjan has quit (Quit: Nite).
07:16:59 -!- aloril has quit (Remote host closed the connection).
07:22:17 <zzo38> Some people like to put candles on the cake, but I prefer instead put the candles around it, and not making holes in it. But, many people like to make numbers, either put that many or use shapes of numbers. But, I thought another way can be, even if you have only straight candles, try to use roman numbers (although you might not know which way is forward, then, if placed on top of the cake instead of around)
07:22:26 <zzo38> (you will also need to get it to stand diagonally)
07:22:47 <zzo38> (or horizontally, if it is forty or more)
07:27:43 <zzo38> I thought of some kind of Magic: the Gathering: Counter target spell if it was not cast by an opponent.
07:29:52 <rain1> what about having 40 cakes
07:30:12 <kmc> it's my birthday this week
07:30:18 <kmc> can I have 31 cupcakes
07:32:00 <zzo38> If you have forty small cakes, or enough storage room, then perhaps it might do (especially if not everyone want the same cake, you might have more than one kind)
07:32:47 <shachaf> `? gregor
07:32:48 <HackEso> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
07:32:51 <kmc> I baked a chocolate cake on Saturday
07:32:56 <zzo38> Do you like "Manifest target spell" and/or "Counter target spell if it was not cast by an opponent"?
07:33:13 <kmc> actually I think I will eat a bit more right now
07:33:23 <kmc> what does it mean to manifest a spell
07:33:25 <shachaf> imo can i have some cake twh
07:33:36 <rain1> wow
07:34:13 <zzo38> kmc: Put it face-down in the battlefield. If it would be a creature when face-up, then it can be used like morph with their mana cost.
07:34:48 <kmc> shachaf: if you can get to SF before we eat it all
07:35:17 <kmc> I'm all about baking now
07:36:41 <shachaf> weren't you all about baking before
07:37:20 <kmc> but now I can do two kinds of baking at the same time
07:37:34 <shachaf> bake not lest ye be baked
07:38:24 <kmc> Cathy made the frosting on this cake
07:38:29 <kmc> and Alyssa helped us eat it
07:38:33 <kmc> so it was a team effort
08:00:53 -!- aloril has joined.
08:03:40 -!- aloril has quit (Remote host closed the connection).
08:11:20 -!- aloril has joined.
08:13:59 -!- AnotherTest has joined.
08:27:16 -!- aloril has quit (Remote host closed the connection).
08:49:57 -!- mniip has quit (Ping timeout: 633 seconds).
09:07:52 -!- aloril has joined.
09:08:32 -!- aloril has quit (Remote host closed the connection).
09:22:20 -!- b_jonas has joined.
09:23:26 <b_jonas> zzo38: roman numerals from straight candles => could work, but a drawback is that when you light the candles, the molten wax would definitely drop straight onto the cake.
09:24:28 <b_jonas> zzo38: as for that M:tG thing, the card Nix is somewhat close to that
09:27:43 <rain1> the obvious and standard way to make numbers out of candles is unary
09:28:00 <rain1> the problem with roman numerals is they aren't rotation invariant
09:28:20 <b_jonas> true
09:28:46 <rain1> you would want a rotation invariant number system, perhaps a core regular polygon in the middle (triangle = 3, square = 4, ..) then some outer attachments
09:29:58 <b_jonas> rain1: lottery balls and UNO cards are printed numbers in a rotation-invariant system, where the digit 6 is underlined
09:30:48 <rain1> it wuold be possible to use polygons as digits in a line, with the point upwards to indicate the direction
09:31:07 <rain1> so triangle triangle square might mean 334 and it could be done in base 7
09:31:49 <rain1> or base 5
09:34:49 <Taneb> Maybe if they're nested rather than arrayed in a line
09:46:27 -!- aloril has joined.
09:46:58 -!- aloril has quit (Remote host closed the connection).
09:49:20 <zzo38> b_jonas: I know of Nix, and I also invented Phyrexian Nix. However, what I mentioned above is a bit more general
09:52:47 -!- mniip has joined.
09:54:29 -!- aloril has joined.
09:56:11 -!- aloril has quit (Remote host closed the connection).
10:08:23 -!- aloril has joined.
10:12:31 -!- aloril has quit (Read error: Connection reset by peer).
10:15:09 -!- aloril has joined.
10:16:56 -!- aloril has quit (Remote host closed the connection).
10:39:40 -!- b_jonas has quit (Quit: leaving).
11:02:26 -!- imode has quit (Ping timeout: 255 seconds).
11:45:51 -!- wob_jonas has joined.
11:50:49 <wob_jonas> "forty" is the only English name for a number whose letters are sorted alphabetically.
12:02:07 -!- Lord_of_Life_ has joined.
12:04:32 -!- Lord_of_Life has quit (Ping timeout: 255 seconds).
12:04:32 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
12:17:29 -!- aloril has joined.
12:25:17 -!- AnotherTest has quit (Ping timeout: 246 seconds).
12:42:19 -!- xkapastel has joined.
12:46:43 -!- AnotherTest has joined.
13:00:25 <Taneb> wob_jonas: are there other languages with a unique number with the corresponding property?
13:01:57 <wob_jonas> Taneb: I don't know
13:02:40 <Taneb> Like "deux" in French
13:02:53 <Taneb> But "cinq" is also in alphabetical order
13:03:15 <int-e> wob_jonas: do you want to be a ghost biopsy adept?
13:03:20 <Taneb> So it's not unique
13:03:47 <wob_jonas> int-e: no, I don't think that'd be the right profession for me
13:04:15 <int-e> > map sort ["ghost","biopsy","adept"] -- it felt right though
13:04:16 <lambdabot> ["ghost","biopsy","adept"]
13:05:18 <int-e> German has three, as far as I can see. (eins, acht, elf)
13:05:25 <wob_jonas> oh, so that's why you used "adept"
13:06:00 <int-e> . o O ( almost below forty )
13:08:54 <int-e> I guess you could be a loopy hippy(sic!). "knotty" is nice too.
13:09:28 <wob_jonas> > map sort ["clobber", "disappear", "busted", "amylase"] -- let's just check that map sort works
13:09:30 <lambdabot> ["bbcelor","aadeipprs","bdestu","aaelmsy"]
13:14:01 <int-e> a dirty effort
13:14:26 <int-e> Oh well, that vocabulary doesn't look big enough for writing a novel :)
13:17:53 <int-e> `` ls /usr/share/dict
13:17:54 <HackEso> No output.
13:23:48 <wob_jonas> int-e: yeah, you can't use "the"
13:25:50 <Taneb> A billowy abbess bhors my accent
13:29:21 <wob_jonas> the dictionary says
13:29:23 <wob_jonas> be am been is an in do for him it not as at by got go his know or 'em all best my no now any first how most begin city lost lot ably act add ago air allow almost art bit boy buy cos cost door foot guy hit low accept bill box cell cry deep effort fill film fit floor fly hi hot loss
13:29:31 <Taneb> An almost empty bin
13:29:38 <wob_jonas> access adopt ah aah aim below bet blow cent cop copy deny dry egg empty fix flow hill hmm hm host nor TV ad ally beer beg bell belt bent boot boss bow chill chip chop dirt dirty forty ghost hip ill joy
13:29:49 <wob_jonas> accent annoy ass ay bee beef belly boost chin cow deem deer dim dip dot ego fist fry glory glow hint hop inn knot loop opt ace ant apt aw ax berry buzz cosy defy den eh envy ex flu fort fox hiss
13:30:04 <wob_jonas> abbey adept ail app beep beet bellow biopsy boo chilly clot coop cot DJ deft deity dent e.g. flop flux gin gloss glossy hippy hoop IQ ivy loot lorry moor mop mow MP oops pry abet abort abs affix aft airy allot alloy amp billow bin blot booty cello chi chimp coo co-opt coy CPU demo dew dill din eel elm err fin fir floppy GI hoot jot moot moss op ow
13:30:04 <wob_jonas> ox
13:30:25 <wob_jonas> and those lists aren't truncated, they just look like that because words starting with letters late in the alphabet are very rare in them
13:30:34 <Taneb> No ammo fills my chit
13:30:38 <wob_jonas> abbot abhor accost ado aegis afoot ammo beefy befit bio biz bop bossy bot boxy cert choppy crux filly fizz floss foxy fuzz gill gilt gist git goo gory hilly hilt HQ imp loo mossy nosy tux abuzz adder aglow alms arty bevy bitty boor Celt chino chintz chow cloy coot dewy dint dis ditty divvy emu knotty loopy lop moo
13:30:46 <wob_jonas> abbess achy billowy chit choosy clop dory dotty filmy fop goop lox mot mu sty adz beery chippy dippy eff emo gimp gimpy glop guv abbe bey deist dhow ditz finny gloppy bloop blowy
13:33:02 <wob_jonas> "buy art for low cost now"
13:36:21 <wob_jonas> should I add the list of such words up to TV to a wisdom? nah, probably no
13:36:21 <Taneb> aegilops
13:36:34 <wob_jonas> we already have wisdom/ance and wisdom/can't for such lists
13:36:49 <Taneb> "aegilops" would be a good name for an esolang
13:38:21 <wob_jonas> maybe we should figure out what the best collation order of the English alphabet is to get a nice vocabulary
13:39:29 <Taneb> There's 26! possible orderings
13:39:47 <Taneb> Assuming we want to do this letterwise
13:39:52 <Taneb> > product [1..26]
13:39:54 <lambdabot> 403291461126605635584000000
13:40:01 <Taneb> That's a fairly sizeable number
13:40:27 <wob_jonas> Taneb: sure
13:40:30 <Taneb> Although we can immediately rule out any word with a non-consecutibe repeated letter
13:43:23 <wob_jonas> Taneb: English mostly has short words, so those aren't too common:
13:43:25 <wob_jonas> were that did hath knowingly known these canning better liking oneness otherness there thinking thought timeless wellness which willful willfully because before downed even evenly giving here lifeless lifelike little lesser manliness meanness needed needless needlessly newness people stillness tellingly through useful usefully usefulness useless wh
13:43:25 <wob_jonas> ere again against although though always American anything away become became
13:44:04 <wob_jonas> plus some plurals and other infections
13:44:15 <wob_jonas> "that" sucks of course
13:45:56 <int-e> can't even the odds
14:20:00 <ProofTechnique> Make sure to get yclept in there
14:31:05 <int-e> ProofTechnique: unlikely to happen because 'y' is just too attractive to put near the end of the order.
14:32:12 <wob_jonas> int-e: that's not that clear. it depends on whether you want to use "you".
14:33:07 <wob_jonas> but yes, you can't have all three of "they", "you", and "those"
14:33:26 <int-e> thou shan't
14:52:03 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:06:26 <wob_jonas> Is there a tetris game for the Game Boy that shows the full 20 rows or more, either by showing more than one row in a tile, or by making you rotate the screen?
15:08:00 <wob_jonas> 8x7 pixel squares should be doable, I think. the graphics would be terrible, but still.
15:39:43 <wob_jonas> https://github.com/fis/esolangs/blob/master/esologs/writer.cc sockets of SOCK_SEQPACKET type, wow. that's something you don't see often.
15:42:46 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=59931&oldid=59658 * Helen * (+16) /* Bitwise Instructions */ Added stuff about functionality
16:05:50 <orin> is the distribution of phonemes in English less zipfy or more zipfy than the distribution of letters?
16:06:35 -!- sleepnap has joined.
16:08:15 <fizzie> I don't think the distribution of letters is particularly Zipfian.
16:08:22 <fizzie> (The distribution of *words* is.)
16:13:11 <fizzie> If I still had my university account, I'd crunch some phoneme frequencies out of one of our English ASR training sets.
16:15:43 -!- tromp has quit (Remote host closed the connection).
16:29:18 -!- AnotherTest has quit (Ping timeout: 250 seconds).
16:39:13 -!- heroux has quit (Ping timeout: 245 seconds).
16:46:54 -!- tromp has joined.
16:51:38 -!- tromp has quit (Ping timeout: 255 seconds).
16:54:16 -!- AnotherTest has joined.
16:57:46 -!- tromp has joined.
17:19:17 -!- tromp has quit (Remote host closed the connection).
17:23:29 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
17:45:50 -!- Sgeo_ has joined.
17:49:03 -!- Sgeo__ has joined.
17:49:14 -!- Sgeo has quit (Ping timeout: 255 seconds).
17:51:37 -!- Sgeo__ has quit (Read error: Connection reset by peer).
17:52:01 -!- Sgeo__ has joined.
17:52:32 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
17:56:28 -!- tromp has joined.
18:00:56 -!- tromp has quit (Ping timeout: 246 seconds).
18:02:24 -!- Sgeo_ has joined.
18:05:30 -!- Sgeo__ has quit (Ping timeout: 250 seconds).
18:20:36 -!- imode has joined.
18:27:53 -!- arseniiv has quit (Ping timeout: 246 seconds).
18:29:37 -!- sleepnap has quit (Ping timeout: 250 seconds).
18:41:10 -!- tromp has joined.
18:44:00 -!- sleepnap has joined.
18:52:05 -!- FreeFull has joined.
18:57:31 -!- b_jonas has joined.
19:24:53 <esowiki> [[Semordnilap]] N https://esolangs.org/w/index.php?oldid=59932 * Orby * (+2165) Created initial page
19:25:10 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59933&oldid=59932 * Orby * (-1) Removing extraneous whitespace
19:27:34 <esowiki> [[Semordnilap]] https://esolangs.org/w/index.php?diff=59934&oldid=59933 * Orby * (+459)
19:28:33 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59935&oldid=59934 * Orby * (+46) /* See also */
19:29:06 <esowiki> [[Semordnilap]] https://esolangs.org/w/index.php?diff=59936&oldid=59935 * Orby * (+0) /* Introduction */
19:31:52 <esowiki> [[User:Orby]] https://esolangs.org/w/index.php?diff=59937&oldid=51743 * Orby * (+152)
19:32:13 <esowiki> [[User:Orby]] M https://esolangs.org/w/index.php?diff=59938&oldid=59937 * Orby * (+11)
19:32:35 <esowiki> [[User:Orby]] https://esolangs.org/w/index.php?diff=59939&oldid=59938 * Orby * (-1)
19:51:33 -!- Phantom_Hoover has joined.
19:55:45 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59940&oldid=59936 * Orby * (+3)
19:57:59 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59941&oldid=59940 * Orby * (-20) /* See also */
19:59:07 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59942&oldid=59941 * Orby * (-4) /* Branching */
19:59:35 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59943&oldid=59942 * Orby * (+5) /* Branching */
20:01:50 -!- xkapastel has joined.
20:05:09 <b_jonas> ais523: re 2-3-4 tree, so you are using a low arity because you primarily care about persistant (cow) nodes? that makes sense, but for the non-persistent case a larger arity could be better
20:09:07 <esowiki> [[Joke language list]] M https://esolangs.org/w/index.php?diff=59944&oldid=59907 * Orby * (+18) /* Brainfuck derivatives */
20:10:45 -!- copumpkin[m] has quit (Quit: removing from IRC because user idle on matrix for 30+ days).
20:14:12 -!- grumble has quit (Quit: fire's).
20:17:27 -!- tromp has quit (Remote host closed the connection).
20:20:49 -!- grumble has joined.
20:28:19 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59945&oldid=59943 * Orby * (+71)
20:28:50 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59946&oldid=59945 * Orby * (+8) /* Specification */
20:36:18 -!- imode has quit (Ping timeout: 245 seconds).
20:42:09 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59947&oldid=59946 * Orby * (+52) /* Examples */
20:43:58 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59948&oldid=59947 * Orby * (+106) /* Specification */
20:45:31 <esowiki> [[Pizza Delivery]] https://esolangs.org/w/index.php?diff=59949&oldid=59926 * Cortex * (+0)
20:46:23 -!- orbitaldecay has joined.
20:46:35 <orbitaldecay> Greetings all!
20:48:16 <orbitaldecay> Is anyone interested in working on a collection of quines in esolangs whose commands are English words (e.g. Ook!) to submit for National Novel Generation Month. The code that generates the book would be the book itself :) I don't think it's been done.
20:49:50 <zzo38> I don't know, but, you can try, I suppose
20:50:22 <orbitaldecay> Yeah, I'm planning on doing it. Just wondering if anyone was interested in collaborating or contributing.
20:51:08 <orbitaldecay> 50,000 commands worth of quines is a lot of code for one person to write
20:53:35 <orbitaldecay> fyi most of the novels generated for national novel generation month are nonsensical, so I'm not worried about it actually being readable
20:53:53 <orbitaldecay> 50,000 words of readable quines is probably a lifetime project, not a one month project
20:53:54 <b_jonas> orbitaldecay: you could write just one quine with a 49000 word long novel as its payload
20:54:39 <orbitaldecay> b_jonas: yeah, that's the cop out I'll do if I don't have time to do more than one quine
20:55:47 <orbitaldecay> But it'd be cool to do a little book of poem / quines
20:56:58 <orbitaldecay> and highlight some different interesting esolangs
20:58:39 <b_jonas> orbitaldecay: also, there was a project somewhere repeated once each year for several years that's a special case of NaNoWriMo, where the goal is to write a program that writes an 50000 word novel
20:58:57 <orbitaldecay> yeah NaNoGenMo, national novel generation month
20:59:08 <esowiki> [[Talk:1st-Worst]] N https://esolangs.org/w/index.php?oldid=59950 * Cortex * (+162) /* . */ new section
20:59:08 <orbitaldecay> b_jonas: that's what I plan on submitting it to
20:59:25 <b_jonas> ah, good
21:00:11 <orbitaldecay> I'm kind of surprised nobody has done a book of quines in languages whose commands are natural language before for nanogenmo
21:00:39 <b_jonas> orbitaldecay: wait, how do you know? there were lots of programs submitted
21:00:50 <b_jonas> did you try to run each of them?
21:01:05 <orbitaldecay> I should say, "I'd be surprised"
21:01:39 <orbitaldecay> Someone could have accidentally generated a quine in some language I suppose
21:02:06 <orbitaldecay> but a cursory google search doesn't reveal anything
21:03:24 <b_jonas> [ in some languages, it is not too hard to write a quine
21:03:25 <j-bot> b_jonas: in some languages , it is not too hard to write a quine
21:03:48 <b_jonas> even our honorable and learned friend fungot could do so
21:03:49 <fungot> b_jonas: and the look and feel :) and which one doesn't?
21:04:25 <orbitaldecay> b_jonas: that's true, but in the spirit of nanogenmo the output should look something like readable english and not many languages look like readable english
21:04:53 <orbitaldecay> I'm going to start working on an esolangs list of languages whose source code looks like english
21:05:18 <orbitaldecay> as candidate languages for quines
21:05:27 <b_jonas> orbitaldecay: it's trickier than that. it's not just "whose source code looks like english"
21:05:37 <b_jonas> in some languages, you can write programs that look like english, and ones that don't
21:05:55 <b_jonas> there are some obfuscated programs in perl that try to look somewhat like english text
21:05:59 <b_jonas> though I don't know of any such quines
21:06:28 <b_jonas> and of course there are programs where most of the source code is english, but there's a small decoder around it
21:06:40 <b_jonas> such a program can be written in many languages that have easy string literals
21:06:48 <b_jonas> multi-line ones
21:07:20 <orbitaldecay> b_jonas: Good point, I hadn't thought of that. I'd like to restrict the characters used to make it more interesting. Like every string of letters should be a word and the only non-letter characters allowed should be common punctuation marks used in plausible ways.
21:07:48 <orbitaldecay> Ook! is perfectly in the spirit of what I mean
21:08:22 <b_jonas> orbitaldecay: in perl you can write programs with only letters and spaces. many people have done that, including me. again I don't know of such a quine, but it can probably be done.
21:08:28 <orbitaldecay> I also have been working on a language for the purpose called Semordnilap for the same purpose
21:08:42 <orbitaldecay> b_jonas: a perl quine that is only composed of english words would be mindblowingly amazing
21:09:04 <b_jonas> orbitaldecay: I didn't say that
21:09:13 <b_jonas> I said only letters and spaces
21:09:26 <b_jonas> only english words is much harder, because then you can't use "q" or "qq" or anything of that sort
21:09:28 <orbitaldecay> b_jonas: yes, I gather that using actual words would be another level of challenge
21:09:40 <b_jonas> let me point to some such obfus
21:10:53 <orbitaldecay> Cool cool
21:11:32 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59951&oldid=59948 * Orby * (+22) /* Introduction */
21:12:59 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59952&oldid=59951 * Orby * (-4) /* Branching */
21:14:35 <b_jonas> https://www.perlmonks.com/?node_id=290607 https://www.perlmonks.com/?node_id=338686 https://www.perlmonks.com/?node_id=453519 look in replies too
21:15:21 <b_jonas> https://www.perlmonks.com/?node_id=877696 is a steganography one, where I take a nearly arbitrary text, and hide unrelated text in it, plus add a small decoder. this won't lead to a quine since the hidden text is much shorter.
21:15:31 <b_jonas> well
21:15:39 <b_jonas> it could actually lead to a quine if you only hid the decoder in there
21:15:50 <b_jonas> and printed the funged text itself verbatim
21:16:23 <orbitaldecay> This is very cool. Doing a quine in this format seems like it would be quite challenging.
21:16:42 -!- tromp has joined.
21:17:06 <fizzie> There's the non-alphanumeric subset of JavaScript, but I don't think it's doable the other way around.
21:17:17 <fizzie> You could do a Lingua::Romana::Perligata quine maybe?
21:17:42 <orbitaldecay> fizzie: I'm not familiar with that, is that an esolang?
21:17:56 <b_jonas> orbitaldecay: the wiki has a page on it
21:17:56 <fizzie> No, it's a Perl module to write code in Latin-ish.
21:17:59 <fizzie> https://metacpan.org/pod/Lingua::Romana::Perligata
21:18:09 <b_jonas> https://esolangs.org/wiki/Perligata
21:18:14 <b_jonas> ok, it's a stub
21:18:19 -!- heroux has joined.
21:18:42 <orbitaldecay> That is very cool too. Thanks for the link.
21:18:46 <esowiki> [[Lingua::Romana::Perligata]] N https://esolangs.org/w/index.php?oldid=59953 * B jonas * (+23) Redirected page to [[Perligata]]
21:25:57 <fizzie> There's also the https://esolangs.org/wiki/Category:Pseudonatural category, but I doubt it's very complete.
21:26:59 <fizzie> I like ORK, though I doubt I'd manage to participate in anything.
21:30:54 -!- tromp has quit (Remote host closed the connection).
21:31:31 <orbitaldecay> fizzie: Awesome, pseudonatural is exactly what I was looking for. Thanks! ORK indeed looks awesome.
21:34:12 <orbitaldecay> ROFL, best hello world ever http://shakespearelang.sourceforge.net/report/shakespeare/#SECTION00091000000000000000
21:35:38 * kmc looks at the Thesaurus Perligatus
21:35:47 <kmc> STDIN vestibulo "an entrance"
21:35:47 <kmc> STDOUT egresso "an exit"
21:35:48 <kmc> STDERR oraculo "a place where doom is pronounced"
21:35:53 -!- tromp has joined.
21:36:24 <esowiki> [[Semordnilap]] https://esolangs.org/w/index.php?diff=59954&oldid=59952 * Orby * (+58)
21:37:13 <orbitaldecay> kmc: a place where doom is pronounced XD
21:52:57 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59955&oldid=59954 * Orby * (+28)
21:53:26 <esowiki> [[Ook!]] M https://esolangs.org/w/index.php?diff=59956&oldid=41892 * Orby * (+27)
22:06:57 <esowiki> [[German]] M https://esolangs.org/w/index.php?diff=59957&oldid=41722 * Orby * (+28)
22:09:02 <esowiki> [[Farm]] M https://esolangs.org/w/index.php?diff=59958&oldid=34532 * Orby * (+28)
22:11:33 -!- xkapastel has quit (Quit: Connection closed for inactivity).
22:11:42 <esowiki> [[Gorispace]] M https://esolangs.org/w/index.php?diff=59959&oldid=19062 * Orby * (+28)
22:14:18 <esowiki> [[COW]] M https://esolangs.org/w/index.php?diff=59960&oldid=51619 * Orby * (+27)
22:14:54 <b_jonas> orbitaldecay: just to be sure, you know Chef the esolang, right?
22:15:10 <b_jonas> you already mentioned Shakespeare, right?
22:15:11 <orbitaldecay> b_jonas: nope! checking it out now
22:15:42 <esowiki> [[Chef]] M https://esolangs.org/w/index.php?diff=59961&oldid=58292 * Orby * (+27)
22:16:33 <orbitaldecay> Awesome :)
22:16:53 <orbitaldecay> b_jonas: yep, I'm cataloging some of the better examples under the pseudonatural category
22:17:59 <fizzie> Also because of reasons(tm), you'll need to be logged in for the category page to get updated.
22:18:13 <fizzie> `thanks MediaWiki file cache
22:18:14 <HackEso> Thanks, MediaWiki file cache. ThediaWiki file cache.
22:18:51 <esowiki> [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59962&oldid=59955 * Orby * (+0) /* Examples */
22:19:04 <orbitaldecay> I wish the bot didn't annouce minor edits...
22:19:08 <b_jonas> orbitaldecay: as in http://www.d20srd.org/srd/epic/monsters/pseudonaturalCreature.htm ?
22:19:27 <orbitaldecay> b_jonas: as in https://esolangs.org/wiki/Category:Pseudonatural
22:19:43 <orbitaldecay> like, "resembling natural language"
22:20:02 <orbitaldecay> but nice d&d reference :)
22:20:42 <zzo38> orbitaldecay: Depending on your IRC client you may be able to suppress all mentions of edits (I did it)
22:20:59 <orbitaldecay> zzo38: I don't mind it, I just don't want to spam everyone else
22:21:24 <zzo38> Then everyone else can program such a feature in their IRC client and you do not have to do.
22:21:52 <orbitaldecay> Yeah, I guess that's always an option :)
22:22:54 <fizzie> It puts a "M" in there for minor edits, in case someone's interested in filtering those out specifically. I think generally people don't mind them, though I think some do ignore them.
22:23:28 <b_jonas> I don't believe in ignoring minor edits anyway. that attitude just leads to having to debug "but I didn't change anything" problems.
22:23:42 -!- Remavas has joined.
22:24:13 <zzo38> I do not hide minor edits (or any other edits) in the recent changes list in the wiki, only I hide it in the IRC
22:51:39 -!- Remavas has changed nick to Remavas[AFK].
23:19:55 -!- imode has joined.
23:30:50 <b_jonas> ```` quote; wisdom
23:30:50 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: ```: not found
23:30:50 <b_jonas> ```` quote; wisdom
23:30:51 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: ```: not found
23:30:54 <b_jonas> ``` quote; wisdom
23:30:54 <b_jonas> ``` quote; wisdom
23:30:55 <HackEso> 853) <zzo38> There is Haskell program "pandoc" to convert formats, so I make "panchess" which is the similar thing but for chess. \ it'//It's written with an apostrophe.
23:30:55 <HackEso> 1073) <Roujo> I AM AN INVADING NECROPOLIS... ALL BOW BEFORE MY... erm... WALLS?... NECROBUILDINGS? \ the question//The The Question is the fundamental mystery of #esoteric, and boily is its master.
23:31:21 <b_jonas> ``` wisdom; quote
23:31:22 <HackEso> progress//Progress has been made today. It was invented by Taneb. \ 785) <oklopol> my best guess is 4 years ago but possibly also yesterday
23:31:25 <b_jonas> ``` quote; quote
23:31:26 <HackEso> 594) <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by? \ 361) <oerjan> adding quotes by yourself is strictly prohibited and will lead to you being banned
23:32:31 <b_jonas> ``` starwars 2; scheme; random-card
23:32:32 <HackEso> Finn \ Mace Windu \ I Bask in Your Silent Awe \ Miasmic Mummy \ 1B \ Creature -- Zombie Jackal \ 2/2 \ When Miasmic Mummy enters the battlefield, each player discards a card. \ AKH-C
23:32:56 <b_jonas> `recipe
23:32:57 <HackEso> ix the eggs, filling all ingredients. Add the water and nuts, then add the \ water and salt in a large skillet; add the eggs, mix \ well and set aside. Remove the chilline for one out of the apple mashed. \ Sprinkle the parsley and flour and set aside. Fry the chops to a \ boil, and simmer for about 30 minutes, or until the mixture is \ coated and all the beef dispalles are done. \ \ 2. In a large bowl mix beans, and salt in skillet over medium hig
23:33:57 <b_jonas> Fry the chops to a boil? hmm.
23:34:05 <b_jonas> that is reasonably readable though
23:34:15 <b_jonas> it still is obsessed with skillets
23:36:03 -!- b_jonas has quit (Quit: leaving).
←2019-02-17 2019-02-18 2019-02-19→ ↑2019 ↑all