Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
willtim
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
98 ms
·
841.
▲
by
willtim
9y ago
Try something simple like i3
842.
▲
by
willtim
9y ago
I agree that his advice will be difficult to follow in less expressive languages. > So a library to organise the code which interacts with other libraries? Sounds an awful lot like a framework to me? The domain/purpose does not al
843.
▲
by
willtim
9y ago
> points he makes really don't translate to the software engineering world His advice is in the context of functional programming languages. F#, Scala and even Haskell and OCaml are now very much part of the software engineering w
844.
▲
by
willtim
9y ago
I would argue that Async in F# is just a library. Async tasks are essentially just functions that are composed using the more general "workflow" syntax. The final composite Async must be explicitly run with a choice of scheduler.
845.
▲
by
willtim
9y ago
I think the Elm folks are playing a waiting game. There are alternatives to type-classes such as the proposed modular implicits for OCaml.
846.
▲
by
willtim
9y ago
> Moreover, if you invoke these functions multiple times they will produce different results No this isn't true! Again, you clearly do not yet understand Monads. Please read Phil Wadler's paper. What you have successfully dem
847.
▲
by
willtim
9y ago
These functions do not perform IO, they return IO actions that can be further composed. They are invoked from other functions that also return IO actions, again no IO is actually performed until the top-level final composite action is run b
848.
▲
by
willtim
9y ago
Haskell is used to wire-up the IO actions, they are then delivered to the runtime via the main definition. The runtime performs the IO actions.
849.
▲
by
willtim
9y ago
> As soon as you have side-effects (an IO is a side-effect) you can through your assumptions about "strict conformation to definition" out of the window Again, you are unfortunately quite wrong. You do not understand the IO M
850.
▲
by
willtim
9y ago
Now you have the condescending tone! However, it appears you don't understand the IO monad. Programming using the IO monad is pure functional programming with full referential transparency. Please read Phil Wadler's paper, you w
851.
▲
by
willtim
9y ago
Agreed in general, but equality is so fundamental that I could forgive any built-in support. Even Haskell has "deriving Eq" built-in for example.
852.
▲
by
willtim
9y ago
Only Haskell strictly conforms to that definition. None of your other examples do.
853.
▲
by
willtim
9y ago
This is not really a definition of a Monad. For example, there's no mention of the Monad laws. Monads are a very general and powerful abstraction that are not adequately described by your example. My advice to anyone is to read Phil Wa
854.
▲
by
willtim
9y ago
You are misquoting me. I said steering others away from the original source of work to an interior source (incomplete at best) is anti-intellectualism. I do not mean to be condescending, but I feel very strongly about this.
855.
▲
by
willtim
9y ago
You certainly would need a PhD to fully understand Monads from that small JavaScript snippet. The Haskell link you gave gives Phil Wadler's original paper as the first link. It is easy to read, explains everything beautifully and full
856.
▲
by
willtim
9y ago
What definition of FP are you using? Because if it's just first-class functions, even Visual Basic has this now.
857.
▲
by
willtim
9y ago
It we would be easy to add simple built-in constraints for things like equality, without jumping all the way to full-blown type classes. This would be a very minimal change to the type checker and should not require a rewrite.
858.
▲
by
willtim
9y ago
Good points. I also swap Ctrl and Alt on both sides, using my thumbs for Ctrl. Using the opposite hand to press the modifier is analogous to how a touch typist uses the shift keys. For desktop use, I now use a Kinesis keyboard, again with s
859.
▲
by
willtim
9y ago
Great summary. I'd like to add the nix package manager to your list. It allows non-destructive updates, rollbacks, parallel installs of different app/library versions, development environments and much more.
860.
▲
by
willtim
9y ago
Sleep and hibernate have never broken for me on various ThinkPads, what hardware and distro are you using? These days tlp gives power management on Linux a good set of defaults. Powertop tweaking should not be necessary as long as you use a
861.
▲
by
willtim
9y ago
This is an impressive list of new features! Well done to all involved!
862.
▲
by
willtim
9y ago
Actually most of us do not have a choice, OOP languages, tools and frameworks are usually forced upon us. At least OOP languages are finally adopting functional features, but if one really wants to favour immutability and composition (moder
863.
▲
by
willtim
9y ago
Contrary to popular belief, OOP doesn't really encapsulate state, it just hides it. Encapsulated state should mean state that does not contribute to the global state space of the system. The danger of OOP is that one ends up with a com
864.
▲
by
willtim
9y ago
Well in this instance Functional programming languages allow one to easily embrace the relational paradigm and avoid all the complexity from an ORM. Note that it has never been "proved" that OOP is more productive than anything el
865.
▲
by
willtim
9y ago
Ah overloaded field access, that explains the type signature. I implemented a very similar extensible record/variant system for a product definition language at Barclays. I hope we see a lot more structural typing in industry going for
866.
▲
by
willtim
9y ago
Are you able to comment on your implementation of row types? You give the following type for a field selector: > :t .foo (a.foo::b) => (a) -> b These give constraints with arbitrary types embedded in them. Most examples in the lite
867.
▲
by
willtim
9y ago
I have programmed some Q professionally. It provides a lot of syntactic sugar, does not support operator precedence and there is a culture of avoiding whitespace. These can make it hard to read sometimes.
868.
▲
by
willtim
9y ago
What exactly do you mean by "build quality"? An aluminium case? Sure it gives a premium feel, but it's also heavy, dents and attenuates radio, so not really an obvious choice before Apple popularised it. Recently Apple have a
869.
▲
by
willtim
9y ago
They look readable to me, certainly much more so than K or Q.
870.
▲
by
willtim
9y ago
This looks like a typed take on KDB/Q, something that is long overdue! The key to making this work is structural typing of rows (row polymorphism / extensible records). I'd be interested to see more details on how they tackle
More ›