For what it's worth: it's _very_ rare for a type annotation to be required in Haskell. It's just considered best practice (supported by compiler warning options) to have them on all top-level declarations, for two reasons:
- it's a good extra layer of _human-readable_ documentation about basic behavior and requirements (as in this article); and
- it lets the compiler give better error messages.
The compiler is _always_ going to do its own inference, whether you give it a signature or not. If it infers a valid type _which isn't the one you thought you wrote_, and you didn't specify what the type _should_ be, that function/statement will compile -- you won't get an error until later, when you attempt to consume it and the types don't match. This can be harder to trace, especially if there's a bunch of polymorphic code in the middle where any type will pass. Supplying a manual annotation lets the compiler immediately say "hey, these don't match."
Frequencies are heavily regulated in the US as well. There are a handful of public bands, but anything else requires FCC licensing to use. Broadcast power is also restricted.
Of course, Germany could still be more restrictive, I don't know the law there! But there must be a fairly simple licensing path for some microwave bands, or nobody would be able to sell wireless routers. This is the same general class of equipment, so unless there's too much restriction on broadcast power to connect at kilometer+ ranges (with a focused directional antenna, rather than the broadcast antenna of a router!) there should be a way to make it work.
Not a physicist but I thought the Planck length specifically denies infinitesimality? And one of the proposed solutions to the black hole information problem is that due to local relativistic effects, they never actually reach singularity in finite time.
I haven't used any of these, but my understanding is that Agda and Coq are not Turing-complete, nor is Idris with the totality checker on. Never seen anyone dispute these being referred to as "languages."
> Programming is first and foremost, an exercise in frustration. It is exacting and unforgiving in a way that few human activities are. It's somewhat unnatural. In order to excel at it I believe you need to feel an intrinsic thrill when solving a problem that surpasses all the frustration leading up that point, and you need to seek this out over and over and over.
This is more than two tweets long. How is it supposed to become the viral quote it deserves to be?
I think optimally, if you like the basement and your business is growing out of it, you sell it to someone else who likes big, and find yourself a fresh basement.
> assume a definition of intelligence where the mean of blacks vs the mean of whites is more or less equal,
How is this any more reasonable an assumption? Don't get me wrong: I don't want to believe the alternative. But I can't just discount the possibility based on personal bias in absence of evidence, which seems to be what you're advocating. IQ not being an ideal model in no way implies that every conclusion derived from it is false; that's the fallacy fallacy. Do you have anything else to support an assertion of uniform mental capacity across the human species?
Thrilled to see another libertarian argument for universal income! I’ve been arguing this for a few years myself, and even ran some rough numbers to demonstrate feasibility in this blog post: http://squangen.com/?p=118
Astonished to find no David Brin on that site, or in this discussion. The man has seven Hugo Awards for a reason! Otherness (short story collection) and Earth were downright formative for me.
- it's a good extra layer of _human-readable_ documentation about basic behavior and requirements (as in this article); and
- it lets the compiler give better error messages.
The compiler is _always_ going to do its own inference, whether you give it a signature or not. If it infers a valid type _which isn't the one you thought you wrote_, and you didn't specify what the type _should_ be, that function/statement will compile -- you won't get an error until later, when you attempt to consume it and the types don't match. This can be harder to trace, especially if there's a bunch of polymorphic code in the middle where any type will pass. Supplying a manual annotation lets the compiler immediately say "hey, these don't match."