(Disclaimer: I have no opinion on partner one-on-ones.)
63 karma · joined March 31, 2017
(Disclaimer: I have no opinion on partner one-on-ones.)
A classic example is that you can specify the 2-vectors on the unit circle as "{ (x,y) : x,y in R | x^2 + y^2 = 1 }" (read as "the set of real 2-tuples, where their norm is equal to 1".) This is not possible in most languages; the closest you can get in most languages is "{ (x,y) : x,y in R }".
My personal pet peeve with dependent types and proof-driven programming in general is the wealth of options in formulating propositions. I've seen at least five different ways of defining equivalency.
For example, let's compare with Python: In Python, you can return multiple arguments as a tuple; it's not possible to have an optional return value without a lot of painful type matching and unpacking. In Lua you can:
local result, errmsg = do_stuff()
if not result then
error("Error in do_stuff:"..errmsg)
end
print(result + 5)
If you don't want the error message, just remove ", errmsg", and it will work as expected. This is incredibly flexible, which is exactly what I want in my dynamic languages. In Python, you would get an type error when attempting to add together a tuple and an integer.The whole idea with tail call elimination is that a stack trace shouldn't be able to see the frames for the tail calls, because the tail call reuses the frame. To add support for tracking the tail call stack frames, you would need to modify the compiler to output code that specifically keeps track of "elided tail call frames", and you would need to update the stack trace traversal code to be able to recognize the extra debug information.
Sure, it's something you could build into a new toolchain, but adding something like this to the JVM would be harder due to the constraints already placed on the JVM. Furthermore I don't know of such support in any toolchains, not even for Lua or Scheme, both of which guarantee tail call optimization. (If anybody has an example, please share!)
Note that "a + b = c" implies "b = c - a", and given our assumption that "a = b = c", we can rewrite as "a = a - a = 0". This obviously results in "a = b = c = 0".
EDIT: Modifying the proof above, it becomes apparent that this is a property of groups (most number systems are groups): Again "a + b = c", iff "a + a = a" iff "a + a + (-a) = a + (-a)" which is "a = e".
Note that addition over IEEE754 floats do not constitute a group, (in part) because "inf + inf == inf" evaluates to true.
- Monthly: Incentives variable, but generally low quality results (for slot machine psychology.)
- For each match/hookup/"real" relationship: Incentives results that produce relationships that last exactly long enough to be considered a match/hookup/"real" relationship.
- One-time upfront: Incentivize finding the best available candidate ASAP in order to save server costs.
- Monthly, cost propositional to success rate: Optimizing for some specific length of relationship that someone calculated to be optimal.
There are most likely other funding possibilities, and I've most likely misunderstood some rule of economics. Note that none of these optimize specifically for happiness in relationships, only for longevity.
This poses some difficult questions for science, given that most science up to now has been about predicting something, trying it and checking whether theory and practice matches.
This is as culturally daft as asking "why is Ireland such a problem for Brexit? Just build a wall!"
Even if a user or $/yr minimum is implemented in law, then what happens as distributed and federated technology becomes more common? What does Mastadon or Scuttlebutt count as?
Unrelated, I've encountered energy bars with an insect: Standard energy bars, but extra expensive and with minuscule amounts of insect. Selling cheap eco-friendly insects as an expensive "cool" gimmick is a cruel sort of irony.
If your aim is data representation, why not go for JSON, Lua table-notation or S-expressions? These do not need different syntax for sections, lists or field sets, but have very clear syntax for a few primary data structures, which you can them compose however you want.
This is not as hard as one might imagine; the first assignment for a compiler course I took, was to write a interpreter for a simple imperative language, running in SML, a mostly functional language. The rest of the course was to write a compiler for another imperative language, again in SML. As soon as you know the "tricks" (some might call them patterns, if we were talking OOP), writing imperative code in functional languages is relatively easy.
The course followed "Modern Compiler Implementation in ML", if anyone is interested.
To upgrade from gmail, you don't even to jump directly to self-hosting. There are pay-to-use email-providers, who treat you like the customer, not the product. Similar services exist for video, etc.
Languages are like tools. If you need a saw, use a saw, instead of complaining about the knife you are using.
Hell, it even allows you to do this:
> somefunc "1string" "2string" "3string" > somefunc {} {} {}
But it's also a result of the reactionary culture of those sites. People want to be offended. They think that because the comment is on the internet, that it's final, and intended as is. But it rarely is.
I'm curious why he didn't go down the whitelisting path in the first place. Basic maths don't require that many functions anyway, so he could've started with a small list, and expanded it as people asked for more. Alternatively he could have allowed for custom whitelists.