00:00:02 -!- danieljabailey has quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in). 00:00:12 I am I think I understand JavaScript, I think 00:00:44 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 ah 00:01:02 why? 00:01:07 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 couldn't you just avoid the eso parts of javascript when you wrote code? 00:01:18 I wanted to do it properly 00:01:24 ... 00:01:27 and it was the sort of project where OO was helpful anyway 00:01:28 I mean 00:01:37 I was sort of in the same situation about ruby 00:01:41 I gave up trying to understand it now 00:01:50 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 yes 00:02:00 and ruby 1.8 has the advantage that it has a very easy to read only implementation 00:02:09 but that language is crazy 00:02:22 I can't tell if it's crazier than javascript or not, because I know too little about javascript 00:02:25 but it's crazy enough 00:02:43 JavaScript is more hurried than crazy 00:03:04 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 it was originally written in a ridiculously short space of time to meet a deaddline 00:03:11 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 zero as positive." 00:03:24 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 I guess copysign has two purposes: to extract a sign, and to set a sign 00:03:48 fizzie: sure, but these days we have ieee floats almost everywhere 00:03:53 and they both got merged into a single function 00:03:58 oh, I wanted to ask 00:04:20 did smalltalk originally call methods "method", or did the "method" name got popularized later, like with java or something? 00:04:39 I was just wondering because of the "subprogram, procedure, subroutine, function, method" synonym thing 00:05:07 oh, I should be able to answer that myself 00:05:22 I have the scanned original smalltalk book on my hard drive 00:05:29 (got it from the internet) 00:05:35 doesn't Smalltallk generally use the word "message"? 00:05:52 I've been learning Smalltalk again recently for work, because I wanted a mathematical model of OO languages 00:06:13 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 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 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 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 Objective-C got the "message" word from Smalltalk, I think. 00:07:42 I also think that having no compile-time type checking is a mistake 00:07:45 fizzie: well, it's the obvious word to use 00:08:01 answer: apparently they're called both "method" and "message", 00:08:07 I think the prototype inheritance in JavaScript is good, even though, some people don't like it 00:08:11 "method" on the side of the class that defines them, "message" when you call them 00:08:22 sort of like how some people use "parameter" vs "argument" 00:08:55 ais523: sure, but my question was more about the history, not what the terminology is now 00:09:13 ais523: wait what? 00:09:23 ais523: but you're not, like, making feather for work, are you? 00:09:31 no, don't worry 00:09:36 good] 00:09:50 fizzie: that's correct, yes 00:09:58 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 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 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 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 (Likewise, "formal argument" is mentioned as a deprecated synonym for "parameter", the other thing.) 00:11:52 Does C have a word for the K&R style parameter type declarations? 00:12:03 k&r style is tg 00:12:18 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 in theory, if you stuck to writing things that were clearly separable from the existing interpreter, you coul distinguish them 00:12:37 b_jonas: the designers of Smalltalk apparently don't think so; I hope they are incorrect, though 00:12:49 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 but still 00:13:18 you should be able to choose to not have an interactive debugger at all 00:13:54 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 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 there's obviously some inertia, but still 00:14:28 "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 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 because people rightfully rejected the approach 00:16:08 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 ais523: ok, but in that case we have to consider why APL didn't die out, and perhaps also prolog 00:17:15 heck, I think even lisp counts 00:17:17 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 most major Prologs nowadays work by having a program that's used to initialise an interactive interpreter with definitions 00:17:23 back then before unix and operating systems, every programming language was like that 00:17:44 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 fizzie: there's a gcc extension that lets you do that, I think 00:18:21 maybe `int f(size_t len; int arr[len], size_t len) { … }` 00:18:26 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 Yeah, the example was: `void f(double a[*][*], int n); void f(a, n) int n; double a[n][n]; { /* ... */ }` 00:19:16 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 fizzie: ouch 00:20:00 fizzie: there's actually a gcc extension for that sort of function 00:20:04 or was 00:20:44 "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 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 They've uppercased "Spirit" in the original, which makes me think of it as some sort of conscious personification thing. 00:21:31 i,i void f(int a[static 2], int b[a[0]][a[1]]) 00:24:52 whoa, the thing I wrote is valid C 00:25:28 I guess it's valid even without the static. 00:25:55 I forgot you could have arbitrary expressions in there. 00:25:57 Do you mean "accepted by my compiler" valid, or proper valid? Because I don't think it is. 00:25:59 isn't the i,i a syntax error? 00:26:16 Well, maybe it is. 00:26:16 i,i was metasyntax 00:26:22 Wonky, though. 00:26:32 fizzie: It's accepted by a compiler but I also think it's valid. 00:26:42 Why would it not be? 00:26:48 Yes, I didn't think far enough. 00:26:56 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 also, some but not all of the forth interpreters are distributed in that bad way I think 00:27:18 b_jonas: right now I can't do that for the same reason I don't work on ayacc 00:27:19 The `a[0]` part is just documentative, but sure. 00:27:27 You mean the a[1] part? 00:27:37 No, that part's actually meaningful. 00:27:43 ais523: why? can't you just make such a language for work? 00:27:45 Do I have it backwards? 00:27:46 It's equivalent to `int (*b)[a[1]]`. 00:28:18 I mean, you said you learned the semantics of smalltalk for work 00:28:36 (also I can't type "smalltalk". my fingers keep typing "smallk" and then I have to backspace) 00:29:24 if you ever get to do that, I hope it won't turn to ruby 00:29:55 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 so the resulting languages would be somewhat wasted, probably 00:30:07 I see] 00:30:19 (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 fizzie: Oh, right. 00:30:58 fizzie: So all the sizes except the *first* one are used. 00:31:06 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 For some reason I thought it was the last one. 00:31:12 ruby is much worse though, mind you 00:31:22 b_jonas: didn't Rust change the name resolution rules recently? 00:31:31 although I'm not sure if you dislike the old ones or the new ones or both 00:31:31 ais523: there was a little change, yes 00:31:46 but the remark applies both before and after 00:44:25 -!- oerjan has joined. 00:50:13 `` allquotes | tail -2 00:50:13 1330) I don't care for the bf backend as long as it doesn't make the rest of ayacc harder to sue \ 1331) ...this is the first prime number finder I've ever written which ran out of memory before finding 3 00:50:40 oh it was removed again 00:59:13 -!- Phantom_Hoover has quit (Remote host closed the connection). 01:00:06 `5 w 01:00:13 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 `forget rum 01:00:39 Forget what? 01:00:49 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 oerjan: I removed the quote I added 01:06:38 `5 01:06:40 1/2:422) cigaretes and drunking "lame highs for lame people" 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) my current laptop basically works though it can even play 8 01:06:41 `n 01:06:42 2/2:year old video games as long as it is not raining in the game \ 647) A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. \ 240) enjoy being locked in your matrix of solidity 01:34:06 oh, I remember this one http://math.bme.hu/~ambrus/pu/ccache.png 01:34:26 that was a fun lesson about computer architecture 01:40:41 Can Prolog or some other logic language express recursion in terms of unification somehow? 01:41:55 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 ais523: I'm wondering about writing recursive rules without explicit recursion using this kind of trick. 01:43:42 ais523: isn't there a specific library function that can print such things? hmm, let me check 01:44:00 hmm, to do that you'd have to /assert/ such a term, let me try that 01:44:27 apparently attempting to do so sent the Prolog interpreter into an infinite loop 01:45:49 what? 01:45:54 why would you have to assert such a term? 01:46:08 can't you just A = f(A), write_foo(A) 01:46:26 b_jonas: in order to do a recursive calculation 01:46:29 there doesn't seem to be such a library function though 01:46:34 at least in gnu prolog 01:46:42 you can't use a non-recursive predicate to inspect more than a finite number of nesting levels of a term 01:46:58 shachaf's looking for a way to lift the recursive term to a recursive computation 01:47:16 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 ah, I see 01:47:59 ah, here it is 01:48:44 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 and that write_term(A, [max_depth(10)]) will print a truncated representation 01:49:58 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 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 "subsequent" works if you used "first" earlier 01:51:22 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 ais523: wait, are you sure in that thing? 01:52:06 hmm 01:52:54 "A = A + 1, B is A." got me a segfault 01:53:08 tg 01:53:10 which I guess isn't particularly surprising 01:53:12 I don't think that should happen 01:53:18 You know you're doing something right when you segfault the interpreter. 01:53:21 oh 01:53:25 I think that is in fact a recursive calculation done entirely using unifications, though 01:53:26 it's just an out of memory 01:53:28 that should be fine 01:53:33 probably a stack overflow 01:53:41 yeah 01:54:32 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 Unbounded recursion should probably be illegal. 01:54:43 I guess that's cheating, though, because 'is' is recursive internally 01:55:13 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 This is why when I'm emperor I'll ban both Java and recursion So all stack traces will be short 01:55:16 b_jonas: how do you translate \x.x(1)? 01:55:40 fizzie: Are you able to do it at all but the last iteration instead? 01:55:48 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 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 I guess I should say why I'm asking. 01:56:07 I think there's a very common pattern which is awkward to express in most languages. 01:56:23 Where you're iterating over an array, say, but you want to do something for each index and each element. 01:56:28 ais523: Yes, but the special case is entirely different, so I just have that as an if (thing.empty()) before. 01:56:36 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 An n-element array has n+1 indices, so it's awkward. 01:56:59 you need to add the separator either before every element but the first, or after every element but the last 01:57:26 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 Here's a non-array: How would you write code to insert into a prefix tree? 01:58:15 example 01:58:49 normally when working with trees I use recursion 01:59:01 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 Recursion runs into the same-ish issue. 01:59:23 I actually wrote this code for NH4 a while back 01:59:26 It's tail recursion anyway so it's kind of silly. 01:59:45 ais523: (\x.(x 1)) translates to fun(X, R, (copy_term(X, fun(1, R, B)), B)) 01:59:59 here we go: http://nethack4.org/latest/nethack4/libnethack_common/src/trietable.c 02:00:14 ais523: see https://esolangs.org/wiki/Olvashat%C3%B3#Prolog_output 02:00:15 An empty tree is represented as a null pointer, by the way. 02:00:17 there doesn't appear to be any special case 02:00:51 or, hmm, I guess the "if (key == 0)" case is the special case you're thinking of? 02:01:00 Yes, I think so. 02:01:16 If you wrote it iteratively instead of recursively it would be clearer. 02:02:26 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 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 You want to run the thing before the break n+1 times and the thing after the break n times. 02:03:34 b_jonas: OK, so what you're doing is using a single predicate that holds the implementation of all the lambdas? 02:03:46 ais523: no 02:04:01 ais523: the implementation of the lambda is in the term that represents the lambda itself 02:04:06 you can call it from any predicate 02:04:39 Here's a different example, prefix sum: 02:04:40 vec prefix_sum(vec a) { vec 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 it's a non-ground term 02:04:56 This is a little too awkward for IRC one-liners, I think. 02:05:28 b_jonas: oh, I see, you have unbound variables sitting by themselves in predicate implementations 02:05:35 that's the step that I didn't realise was possible 02:05:42 and I'm still not sure that's possible 02:05:45 ais523: yes, and I never bind them, I only bind copies made with copy_term 02:06:07 A = write(6), A. 02:06:08 6 02:06:10 wow 02:06:27 I guess it's logical that that works, but I didn't expect it to 02:06:38 ais523: I am not quite sure, but I think historical prolog required you to write call(A) instead of A there 02:06:47 but all present prolog implementations seem to allow just A 02:07:04 ais523: try A = write(6), call(A) if you prefer 02:07:17 yes, I'm happy when you include the eval statement 02:07:25 once you have that I'm not surprised that lambda calculus exists 02:07:29 it's this sort of "implicit eval" that bothers me 02:08:02 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 ais523: yeah, but prolog has several other builtins that take code predicates 02:08:57 now I'm wondering if maplist can be implemented without library functions 02:09:08 I'm guessing no, you need at least copy_term (or something else that can be used to simulate it) 02:10:40 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 I think ',' is really fundamental, isn't it? 02:11:59 ';' can be implemented using two definitions for the same predicate 02:12:05 ais523: dunno, it might be because of its interaction with !, but without that I think it can be implemented 02:12:22 I mean, you can implement a new function that behaves just like , 02:12:27 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 as in begin(A,B) :- A,B. 02:12:41 b_jonas: yes, but that requires using ',' for the implementation 02:12:42 then you can write begin(A,B) instead of (A,B) in programs 02:12:43 Are binary trees every a good idea, anyway? 02:12:53 ais523: you can probably implement it using some other library function 02:12:53 shachaf: I think they can be 02:13:10 it would be an inefficient eso-implementation 02:13:16 and it might break programs with ! 02:13:19 I mean, if you care about performance. 02:13:24 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 ais523: ooh! I'm interested in that 02:13:47 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 b_jonas: in that case, I'll let you know if I finish 02:14:02 I can't even remember why I stopped halfway through 02:14:04 But you almost always want a bigger branching factor than 2, don't you? 02:14:20 and only vaguely remember the original reason, which I think was to write a fast But Is It Art? interpreter 02:14:26 shachaf: yes, 2 is probably too small 02:14:29 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 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 for a Map-style tree, the indexes are just the keys 02:15:39 for a Seq-style tree, they could be, e.g., the equivalent of array indexes 02:16:02 I think you need different interfaces for the two cases, although a lot of code can be shared 02:16:10 So comparison sorts may not be that great, because you usually have more information about your data than binary comparisons. 02:16:26 Is binary search similarly not that great? What are the alternatives? 02:17:15 shachaf: things like Newton-Rahpson (I might have misspelled that) 02:18:10 ais523: I want something more general than array indexes, but sure 02:18:11 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 that sounds good 02:18:18 b_jonas: yes, more general 02:18:24 Hmm, I meant for discrete, not a function, but that's an interesting analogy. 02:18:42 shachaf: I know, a discrete example would presumably use similar techniques though 02:19:05 I was thinking of things like radix sort, which is a different kind of structure. 02:19:11 ais523: and will this support both trees with in-place mutation, and pure functional trees with cow nodes Haskell style? 02:19:12 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 What kind of differentiable structure can you put on typical data? 02:19:32 b_jonas: definitely 02:19:35 good 02:19:36 I mean, there's that "learned index structure" paper. 02:19:38 getting working copy-on-write was part of my motivation for this 02:20:02 ais523: will you be using some Haskell libraries as a reference to get the implementation right? 02:20:06 and that book 02:20:21 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 the Okasaki book 02:20:42 ais523: the Okasaki book is close enough to an academic paper, but sure 02:20:58 I for one found that it's the one that explained how red-black trees work the best 02:21:12 are fully persistent data structures even good twh 02:21:54 shachaf: for some things, yes. 02:22:06 eg. you might want to store all intermediate states of a computer game 02:22:18 But if you want to store intermediate states you don't need full persistence. 02:22:34 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 You only need it if you want to be able to fork a past state, or something. 02:22:36 you want to store them shared, rather than writing a full copy in each step 02:22:51 it might end up slower, though, despite being identically shaped 02:22:59 you want this if you want to step both backwards and forwards when reviewing the game 02:23:05 if you only want to step forwards, then it's easier 02:23:11 shachaf: for BIIA? I'll presumably be forking a lot 02:23:12 ais523: I expect 2-3-4 trees to be faster than red-black trees? 02:23:32 What is BIIA? 02:23:35 ais523: um, is a 2-3-4 tree like a B tree? 02:23:45 shachaf: https://esolangs.org/wiki/But_Is_It_Art%3F 02:24:04 b_jonas: it's basically a tree where nodes are binary or have 3 or 4 children, nodes can change dynamically 02:24:11 b_jonas: If you just want fast snapshots you don't need to have a fully persistent structure. 02:24:15 oh, so that's why you want this, backtracking for a BIIA implementation 02:24:17 You can just put a timestamp on each thing or something. 02:24:22 though why you want a BIIA implementation is unclear to me 02:24:47 b_jonas: so yes, it's literally a sort of B-tree 02:24:59 also, why /wouldn't/ I want a BIIA? implementation? 02:25:17 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 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 Red-black trees are a binary encoding of 2-4 B-trees. 02:25:54 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 Binary trees are scow. You gotta at least fill a cache line. 02:27:08 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 That's true, though often the values are just pointers. 02:28:50 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 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 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 I had a similar (?) realization recently. 02:30:24 Each level of a B+ tree is an index for searching the next level. 02:30:48 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 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 that problem sounds painful to solve 02:33:10 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 ais523: it sort of is, yes 02:33:31 I can see how backtracking would help to verify that a potential answer was correct (if perhaps not minimal) 02:33:34 I solved the easy version with prolog once 02:33:58 ugh, I need to remember to not attempt to read Hungarian when I see it 02:34:08 the person who found the solution said he wrote a program to test every four-wall solution 02:34:13 although some of the words there appear to be loanwords so it's not totally fruitless 02:34:40 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 normally I can get an idea of the sense by looking for words that are similar to words I already know 02:34:58 well, there are also some worse solutions earlier, but I don't think they're not spoilers 02:35:17 ais523: that works better in a well-written text than in an informal web forum 02:35:21 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 so trying to read it won't lead to much understanding 02:36:19 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 he says though that the program ran too slow to test every four-wall solution 02:36:33 but he found a solution among the ones he tested 02:36:51 it's surprising to me that you only need four 02:37:02 yes, it was surprising to us too 02:37:07 but I guess the walls are being brute-forced and backtracking is only being used for the wall placement 02:37:08 well, to me at elast 02:37:14 anyway, this seems like the sort of program on which you use a constraint solver 02:37:21 rather than a backtracking algorithm 02:37:49 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 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 (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 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 I'll have to look up what it is 02:39:47 b_jonas: it's a DS puzzle game 02:39:54 ah, that one 02:40:19 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 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 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 hmm 02:43:01 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 I am playing a roguelike game called "We are Hejickle", for NES/Famicom 03:00:50 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 https://imode.tech/projects/modal.html 03:52:24 fizzie: Callbacks are annoying for several reasons. One of them is that you can't early-exit from them. 03:52:36 I guess I shouldn't fizzie: that, I just saw my tab with the Subsequent code. 03:53:19 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 I kind of hope the answer isn't "macro". 04:01:11 -!- danieljabailey has joined. 04:25:08 what do you mean by can't be stored? what sorts of operations? 04:30:31 -!- FreeFull has quit. 04:36:35 kmc: Early exit is the most obvious one. 04:37:01 You could still sort of implement that as setjmp/continuations/exceptions/whatever. 04:37:17 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 what do you mean by the last one 04:39:32 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 Hmm, something like "using namespace", for instance. 04:40:10 "using(foo) { BODY }", where everything in BODY automatically does lookups in the namespace foo. 04:40:21 Also other things that affect what's in scope. 05:12:13 I would have also want that "if", "while", etc are implemented as macros actually; maybe even something else 05:12:51 Even if not entirely defined as a macros, supporting a block code too somehow 05:43:55 -!- arseniiv has joined. 05:48:23 hm those theorems for that single rotation CA actually do have simple proofs 05:49:22 (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 `wisdom fu.*a 05:51:17 That's not wise. 05:51:23 `wisdom fu*a 05:51:23 ​fugal//Fugals are fictitious flower parts. 05:51:36 `wisdom fu*ia 05:51:37 That's not wise. 05:51:49 `wisdom fu*a$ 05:51:50 That's not wise. 05:51:53 oh wait 05:51:57 *sigh* 05:52:23 maybe it should be regex 05:53:17 fizzie: can people send commits to fshg directly instead of using HackEso twh 05:53:32 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 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 (you will also need to get it to stand diagonally) 07:22:47 (or horizontally, if it is forty or more) 07:27:43 I thought of some kind of Magic: the Gathering: Counter target spell if it was not cast by an opponent. 07:29:52 what about having 40 cakes 07:30:12 it's my birthday this week 07:30:18 can I have 31 cupcakes 07:32:00 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 `? gregor 07:32:48 Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 07:32:51 I baked a chocolate cake on Saturday 07:32:56 Do you like "Manifest target spell" and/or "Counter target spell if it was not cast by an opponent"? 07:33:13 actually I think I will eat a bit more right now 07:33:23 what does it mean to manifest a spell 07:33:25 imo can i have some cake twh 07:33:36 wow 07:34:13 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 shachaf: if you can get to SF before we eat it all 07:35:17 I'm all about baking now 07:36:41 weren't you all about baking before 07:37:20 but now I can do two kinds of baking at the same time 07:37:34 bake not lest ye be baked 07:38:24 Cathy made the frosting on this cake 07:38:29 and Alyssa helped us eat it 07:38:33 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 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 zzo38: as for that M:tG thing, the card Nix is somewhat close to that 09:27:43 the obvious and standard way to make numbers out of candles is unary 09:28:00 the problem with roman numerals is they aren't rotation invariant 09:28:20 true 09:28:46 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 rain1: lottery balls and UNO cards are printed numbers in a rotation-invariant system, where the digit 6 is underlined 09:30:48 it wuold be possible to use polygons as digits in a line, with the point upwards to indicate the direction 09:31:07 so triangle triangle square might mean 334 and it could be done in base 7 09:31:49 or base 5 09:34:49 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 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 "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 wob_jonas: are there other languages with a unique number with the corresponding property? 13:01:57 Taneb: I don't know 13:02:40 Like "deux" in French 13:02:53 But "cinq" is also in alphabetical order 13:03:15 wob_jonas: do you want to be a ghost biopsy adept? 13:03:20 So it's not unique 13:03:47 int-e: no, I don't think that'd be the right profession for me 13:04:15 > map sort ["ghost","biopsy","adept"] -- it felt right though 13:04:16 ["ghost","biopsy","adept"] 13:05:18 German has three, as far as I can see. (eins, acht, elf) 13:05:25 oh, so that's why you used "adept" 13:06:00 . o O ( almost below forty ) 13:08:54 I guess you could be a loopy hippy(sic!). "knotty" is nice too. 13:09:28 > map sort ["clobber", "disappear", "busted", "amylase"] -- let's just check that map sort works 13:09:30 ["bbcelor","aadeipprs","bdestu","aaelmsy"] 13:14:01 a dirty effort 13:14:26 Oh well, that vocabulary doesn't look big enough for writing a novel :) 13:17:53 `` ls /usr/share/dict 13:17:54 No output. 13:23:48 int-e: yeah, you can't use "the" 13:25:50 A billowy abbess bhors my accent 13:29:21 the dictionary says 13:29:23 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 An almost empty bin 13:29:38 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 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 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 ox 13:30:25 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 No ammo fills my chit 13:30:38 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 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 "buy art for low cost now" 13:36:21 should I add the list of such words up to TV to a wisdom? nah, probably no 13:36:21 aegilops 13:36:34 we already have wisdom/ance and wisdom/can't for such lists 13:36:49 "aegilops" would be a good name for an esolang 13:38:21 maybe we should figure out what the best collation order of the English alphabet is to get a nice vocabulary 13:39:29 There's 26! possible orderings 13:39:47 Assuming we want to do this letterwise 13:39:52 > product [1..26] 13:39:54 403291461126605635584000000 13:40:01 That's a fairly sizeable number 13:40:27 Taneb: sure 13:40:30 Although we can immediately rule out any word with a non-consecutibe repeated letter 13:43:23 Taneb: English mostly has short words, so those aren't too common: 13:43:25 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 ere again against although though always American anything away become became 13:44:04 plus some plurals and other infections 13:44:15 "that" sucks of course 13:45:56 can't even the odds 14:20:00 Make sure to get yclept in there 14:31:05 ProofTechnique: unlikely to happen because 'y' is just too attractive to put near the end of the order. 14:32:12 int-e: that's not that clear. it depends on whether you want to use "you". 14:33:07 but yes, you can't have all three of "they", "you", and "those" 14:33:26 thou shan't 14:52:03 -!- xkapastel has quit (Quit: Connection closed for inactivity). 15:06:26 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 8x7 pixel squares should be doable, I think. the graphics would be terrible, but still. 15:39:43 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 [[Bitch]] https://esolangs.org/w/index.php?diff=59931&oldid=59658 * Helen * (+16) /* Bitwise Instructions */ Added stuff about functionality 16:05:50 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 I don't think the distribution of letters is particularly Zipfian. 16:08:22 (The distribution of *words* is.) 16:13:11 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 [[Semordnilap]] N https://esolangs.org/w/index.php?oldid=59932 * Orby * (+2165) Created initial page 19:25:10 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59933&oldid=59932 * Orby * (-1) Removing extraneous whitespace 19:27:34 [[Semordnilap]] https://esolangs.org/w/index.php?diff=59934&oldid=59933 * Orby * (+459) 19:28:33 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59935&oldid=59934 * Orby * (+46) /* See also */ 19:29:06 [[Semordnilap]] https://esolangs.org/w/index.php?diff=59936&oldid=59935 * Orby * (+0) /* Introduction */ 19:31:52 [[User:Orby]] https://esolangs.org/w/index.php?diff=59937&oldid=51743 * Orby * (+152) 19:32:13 [[User:Orby]] M https://esolangs.org/w/index.php?diff=59938&oldid=59937 * Orby * (+11) 19:32:35 [[User:Orby]] https://esolangs.org/w/index.php?diff=59939&oldid=59938 * Orby * (-1) 19:51:33 -!- Phantom_Hoover has joined. 19:55:45 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59940&oldid=59936 * Orby * (+3) 19:57:59 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59941&oldid=59940 * Orby * (-20) /* See also */ 19:59:07 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59942&oldid=59941 * Orby * (-4) /* Branching */ 19:59:35 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59943&oldid=59942 * Orby * (+5) /* Branching */ 20:01:50 -!- xkapastel has joined. 20:05:09 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 [[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 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59945&oldid=59943 * Orby * (+71) 20:28:50 [[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 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59947&oldid=59946 * Orby * (+52) /* Examples */ 20:43:58 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59948&oldid=59947 * Orby * (+106) /* Specification */ 20:45:31 [[Pizza Delivery]] https://esolangs.org/w/index.php?diff=59949&oldid=59926 * Cortex * (+0) 20:46:23 -!- orbitaldecay has joined. 20:46:35 Greetings all! 20:48:16 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 I don't know, but, you can try, I suppose 20:50:22 Yeah, I'm planning on doing it. Just wondering if anyone was interested in collaborating or contributing. 20:51:08 50,000 commands worth of quines is a lot of code for one person to write 20:53:35 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 50,000 words of readable quines is probably a lifetime project, not a one month project 20:53:54 orbitaldecay: you could write just one quine with a 49000 word long novel as its payload 20:54:39 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 But it'd be cool to do a little book of poem / quines 20:56:58 and highlight some different interesting esolangs 20:58:39 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 yeah NaNoGenMo, national novel generation month 20:59:08 [[Talk:1st-Worst]] N https://esolangs.org/w/index.php?oldid=59950 * Cortex * (+162) /* . */ new section 20:59:08 b_jonas: that's what I plan on submitting it to 20:59:25 ah, good 21:00:11 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 orbitaldecay: wait, how do you know? there were lots of programs submitted 21:00:50 did you try to run each of them? 21:01:05 I should say, "I'd be surprised" 21:01:39 Someone could have accidentally generated a quine in some language I suppose 21:02:06 but a cursory google search doesn't reveal anything 21:03:24 [ in some languages, it is not too hard to write a quine 21:03:25 b_jonas: in some languages , it is not too hard to write a quine 21:03:48 even our honorable and learned friend fungot could do so 21:03:49 b_jonas: and the look and feel :) and which one doesn't? 21:04:25 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 I'm going to start working on an esolangs list of languages whose source code looks like english 21:05:18 as candidate languages for quines 21:05:27 orbitaldecay: it's trickier than that. it's not just "whose source code looks like english" 21:05:37 in some languages, you can write programs that look like english, and ones that don't 21:05:55 there are some obfuscated programs in perl that try to look somewhat like english text 21:05:59 though I don't know of any such quines 21:06:28 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 such a program can be written in many languages that have easy string literals 21:06:48 multi-line ones 21:07:20 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 Ook! is perfectly in the spirit of what I mean 21:08:22 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 I also have been working on a language for the purpose called Semordnilap for the same purpose 21:08:42 b_jonas: a perl quine that is only composed of english words would be mindblowingly amazing 21:09:04 orbitaldecay: I didn't say that 21:09:13 I said only letters and spaces 21:09:26 only english words is much harder, because then you can't use "q" or "qq" or anything of that sort 21:09:28 b_jonas: yes, I gather that using actual words would be another level of challenge 21:09:40 let me point to some such obfus 21:10:53 Cool cool 21:11:32 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59951&oldid=59948 * Orby * (+22) /* Introduction */ 21:12:59 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59952&oldid=59951 * Orby * (-4) /* Branching */ 21:14:35 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 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 well 21:15:39 it could actually lead to a quine if you only hid the decoder in there 21:15:50 and printed the funged text itself verbatim 21:16:23 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 There's the non-alphanumeric subset of JavaScript, but I don't think it's doable the other way around. 21:17:17 You could do a Lingua::Romana::Perligata quine maybe? 21:17:42 fizzie: I'm not familiar with that, is that an esolang? 21:17:56 orbitaldecay: the wiki has a page on it 21:17:56 No, it's a Perl module to write code in Latin-ish. 21:17:59 https://metacpan.org/pod/Lingua::Romana::Perligata 21:18:09 https://esolangs.org/wiki/Perligata 21:18:14 ok, it's a stub 21:18:19 -!- heroux has joined. 21:18:42 That is very cool too. Thanks for the link. 21:18:46 [[Lingua::Romana::Perligata]] N https://esolangs.org/w/index.php?oldid=59953 * B jonas * (+23) Redirected page to [[Perligata]] 21:25:57 There's also the https://esolangs.org/wiki/Category:Pseudonatural category, but I doubt it's very complete. 21:26:59 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 fizzie: Awesome, pseudonatural is exactly what I was looking for. Thanks! ORK indeed looks awesome. 21:34:12 ROFL, best hello world ever http://shakespearelang.sourceforge.net/report/shakespeare/#SECTION00091000000000000000 21:35:38 * kmc looks at the Thesaurus Perligatus 21:35:47 STDIN vestibulo "an entrance" 21:35:47 STDOUT egresso "an exit" 21:35:48 STDERR oraculo "a place where doom is pronounced" 21:35:53 -!- tromp has joined. 21:36:24 [[Semordnilap]] https://esolangs.org/w/index.php?diff=59954&oldid=59952 * Orby * (+58) 21:37:13 kmc: a place where doom is pronounced XD 21:52:57 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59955&oldid=59954 * Orby * (+28) 21:53:26 [[Ook!]] M https://esolangs.org/w/index.php?diff=59956&oldid=41892 * Orby * (+27) 22:06:57 [[German]] M https://esolangs.org/w/index.php?diff=59957&oldid=41722 * Orby * (+28) 22:09:02 [[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 [[Gorispace]] M https://esolangs.org/w/index.php?diff=59959&oldid=19062 * Orby * (+28) 22:14:18 [[COW]] M https://esolangs.org/w/index.php?diff=59960&oldid=51619 * Orby * (+27) 22:14:54 orbitaldecay: just to be sure, you know Chef the esolang, right? 22:15:10 you already mentioned Shakespeare, right? 22:15:11 b_jonas: nope! checking it out now 22:15:42 [[Chef]] M https://esolangs.org/w/index.php?diff=59961&oldid=58292 * Orby * (+27) 22:16:33 Awesome :) 22:16:53 b_jonas: yep, I'm cataloging some of the better examples under the pseudonatural category 22:17:59 Also because of reasons(tm), you'll need to be logged in for the category page to get updated. 22:18:13 `thanks MediaWiki file cache 22:18:14 Thanks, MediaWiki file cache. ThediaWiki file cache. 22:18:51 [[Semordnilap]] M https://esolangs.org/w/index.php?diff=59962&oldid=59955 * Orby * (+0) /* Examples */ 22:19:04 I wish the bot didn't annouce minor edits... 22:19:08 orbitaldecay: as in http://www.d20srd.org/srd/epic/monsters/pseudonaturalCreature.htm ? 22:19:27 b_jonas: as in https://esolangs.org/wiki/Category:Pseudonatural 22:19:43 like, "resembling natural language" 22:20:02 but nice d&d reference :) 22:20:42 orbitaldecay: Depending on your IRC client you may be able to suppress all mentions of edits (I did it) 22:20:59 zzo38: I don't mind it, I just don't want to spam everyone else 22:21:24 Then everyone else can program such a feature in their IRC client and you do not have to do. 22:21:52 Yeah, I guess that's always an option :) 22:22:54 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 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 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 ```` quote; wisdom 23:30:50 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: ```: not found 23:30:50 ```` quote; wisdom 23:30:51 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: ```: not found 23:30:54 ``` quote; wisdom 23:30:54 ``` quote; wisdom 23:30:55 853) 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 1073) 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 ``` wisdom; quote 23:31:22 ​progress//Progress has been made today. It was invented by Taneb. \ 785) my best guess is 4 years ago but possibly also yesterday 23:31:25 ``` quote; quote 23:31:26 594) 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) adding quotes by yourself is strictly prohibited and will lead to you being banned 23:32:31 ``` starwars 2; scheme; random-card 23:32:32 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 `recipe 23:32:57 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 Fry the chops to a boil? hmm. 23:34:05 that is reasonably readable though 23:34:15 it still is obsessed with skillets 23:36:03 -!- b_jonas has quit (Quit: leaving).