481 karma · joined July 25, 2019
EDIT: From docker stats, I can see the container using about 2.5MB RAM, which is more in line with what I had in mind. It might scale up a bit if you start having 100K users, though :D (but it's really not meant for this and the frontend will crash your browser way before because there's no pagination)
EDIT: Now that I think about it, you could have a partially dynamic query that's still statically checked: new WHERE conditions don't change the structure of the query, so as long as they're valid (which can be statically checked) they can be added to the query without changing the type. Same for e.g. ORDER BY or LIMIT. That would make the combinatorial explosion much more manageable, and it would actually represent different code paths (requesting a different set of fields).
It kinda reminds me of the rust doc and doctests (snippets in the docs that are valid rust and are run as part of the tests), but across several files/repositories. They can be used to show a pattern, although usually a local one.
I had an MVP release last month, and working on compatibility with more services, password reset and so on.
However, given the low popularity of Bison, and that it's mainly used for its old features, I'm not sure that has ever been used in the wild...
So you get a giant c/c++ file with a parser implementation made of M4 definitions, C preprocessor definitions, includes of generated (lookup tables) or user-written (custom parsing actions) files, and it's absolute hell to debug :D
Seriously, where does the name of the law come from?
I get the appeal for a small program that fits in your head, but for anything more complex I don't want the code to take care of everything in a single module/file.
This library is trying to make it easy to experiment with different backends (different maps, lists and so on). The fastest version is based on abseil's node_hash_set, inspired by Java's LinkedHashMap.
Similar to C++'s std::shared_ptr
(($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
Good luck understanding that!I chose to start with the more "esoteric" languages to keep the ones I was more familiar with for when the problems are more complex :)
https://github.com/nitnelave/advent_of_code_2019/tree/master...
I'm doing the advent of code in a different language every day, and since the day 4 was about some constraint resolution, Prolog was the perfect tool there.
Although the language itself doesn't guarantee that the value is not used again after a move, good static analyzers will provide a warning in that case, so it can still be safely used.
Feel free to AMA!