Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
Peaker
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
27 ms
·
241.
▲
by
Peaker
12y ago
You're unlikely to know there's a problem and do so. Rust is reminding you of this fact, which is very nice.
242.
▲
by
Peaker
12y ago
IME, us "masochists" suffer much less in the end. We "suffer" a few seconds here and there when we get a compiler warning, forcing us to think edge cases through. Then, later, we suffer much less through runtime debuggin
243.
▲
by
Peaker
12y ago
I don't know much Rust. But your comment just made me appreciate Rust a lot more! To me, this signals that they value long-term safety over short-term convenience. Any other choice, IMO and IME, is short-sighted.
244.
▲
by
Peaker
12y ago
Not being Turing Complete makes it less than the lambda calculus, which is still consistent with "purely functional". Purely functional is about expressive power you can't have, not power you can. So take the lambda calculus
245.
▲
by
Peaker
12y ago
I think it's more likely they don't thoroughly audit every piece of crapware they allow to install.
246.
▲
by
Peaker
12y ago
Removing the tail caused them to be less effective at evading bats. Maybe the tails have some other function crucial for their generic function like flight control, and losing that is responsible for evading bats less effectively? If the ar
247.
▲
by
Peaker
12y ago
The Lamdu project I'm working on is in Haskell. Our build system for a large C project at work is written in Haskell. Various other tools we use (cgrep, resolve-trivial-conflicts, etc) are in Haskell.
248.
▲
by
Peaker
12y ago
Isn't that coinductive recursion? "corecursion" is usually a recursion that goes via multiple definitions.
249.
▲
by
Peaker
12y ago
According to the author of Inferno, TypeScript copies all the "bugs" and error-prone behaviors of JS, and is also a superset, not a subset. Inferno being a subset lets you use all your JS tooling directly with Inferno code.
250.
▲
by
Peaker
12y ago
If you care about the learning curve: Take a look at https://github.com/sinelaw/inferno It aims to add a type system to a subset of Javascript. It's not quite ready yet, but it already shows quite some promise. Th
251.
▲
by
Peaker
12y ago
More likely that we just wouldn't be here...
252.
▲
by
Peaker
12y ago
Data.Functor.void you mean? :)
253.
▲
by
Peaker
12y ago
If you enable -Wall, Haskell forces you to use "_ <-" for any action that has a stateful result. But the "let" vs no "let" is a pretty strong hint anyway :)
254.
▲
by
Peaker
12y ago
The "Academic" language and "Category Theory" strawmen is getting tiring... Many of us who use Haskell do so (without an academic degree or almost any CT knowledge, by the way) because it offers the best bang for our buc
255.
▲
by
Peaker
12y ago
https://github.com/yairchu/red-black-tree Has implementations of some binary search trees with GADTs to guarantee, at compile-time, that most of the tree's invariants always hold.
256.
▲
by
Peaker
12y ago
Do you have a link to Guido saying that?
257.
▲
by
Peaker
12y ago
Sounds like material good enough to start a boycott movement?
258.
▲
by
Peaker
12y ago
> as the OO-ness has been tacked onto Python afterwards This is a myth, if I recall correctly. Python had the OO-ness from the very beginning. It might seem "tacked-on" if you dislike Guido's style of OO, though.
259.
▲
by
Peaker
12y ago
Well, Haskell does force you to go and update your types about your effects, and fix the use sites to do proper lifting. I don't feel this costs much, though, so even in quick&dirty mode, I feel that Haskell is quite productive eno
260.
▲
by
Peaker
12y ago
I think you should spend some time familiarizing yourself with actual statically typed languages before expressing an extremely ill-informed opinion as fact.
261.
▲
by
Peaker
12y ago
GHC type errors are far from ideal. But if you give too few or too many arguments, you usually do get an error like: "Perhaps `foo` is applied to too [many|few] arguments?"
262.
▲
by
Peaker
12y ago
He's talking about the concept of currying, not left-associativity.
263.
▲
by
Peaker
12y ago
If your language is versatile enough, has adaptable syntax, and powerful at DSLs, it can adapt to future requirements quite well. Haskell is great at concurrency and parallelism not because the language was designed around those at all - bu
264.
▲
by
Peaker
12y ago
Haskell doesn't ban imperative programming, it simply distinguishes it in the types.
265.
▲
by
Peaker
12y ago
Proper sum types aren't enough to replace exceptions. Imagine every IO action having its own error type in a sum type. How do you compose them? Composing the different error types wouldn't unify. The best attempt I've seen in
266.
▲
by
Peaker
12y ago
The composition operator ◦ there is only conceptually correct up to Applicative instances. Monad Transformers rely on very specifically tailored composition, and not a generic Type-Compose. Otherwise we could just type-compose Writer, Stat
267.
▲
by
Peaker
12y ago
Identical up to one algorithm taking a few seconds, and another taking as long as the universe has been alive :)
268.
▲
by
Peaker
12y ago
Agda mixfix supports things like: [ foo ] bar ! ! baz etc. It also supports precedence parsing. I don't Smalltalk can do all of these. Smalltalk, unlike Agda, can probably omit the spacing around operators, though, whi
269.
▲
by
Peaker
12y ago
Well, in C, the type operators are: Ptr(Type) -- deref type Array(Count, Type) -- elem type Func(ParamList, Type) -- return type Since the "Type" param is always there. C declaration syntax is like a linear compos
270.
▲
by
Peaker
12y ago
The left-to-right reading is the main advantage. In C, of the 3 type operators you compose to declare the type (arrays, functions, pointers), 2 are postfix (arrays and functions) and one is prefix (pointers). This causes a mixture of direct
More ›