Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
willtim
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
101 ms
·
811.
▲
by
willtim
9y ago
Those are good points, but really not an argument against FP. String could have originally been an abstract data type in Haskell. There are of course disadvantages to the Java string approach, in that there is potentially a lot of code dup
812.
▲
by
willtim
9y ago
There is no language definition or implementation called "LISP". Both Scheme and OCaml lexically capture variables by value, as if they have been passed in as arguments. This is not how it works in e.g. Python.
813.
▲
by
willtim
9y ago
> That's kind of the definition of encapsulation. State encapsulation, at least in FP, means that the state is not visible externally. For example a pure function that uses mutable state in its implementation. Such state does not
814.
▲
by
willtim
9y ago
Functional programming languages do not capture mutable state in closures.
815.
▲
by
willtim
9y ago
Passing a common struct into one or more procedures is absolutely not what is commonly understood as object-oriented programming. This is what people did (and are still doing) long before OOP existed. I also do it all the time in Haskell. S
816.
▲
by
willtim
9y ago
The fundamental feature that makes such an example easy is first-class functions. You are simply using objects to encode this and not making any use of their identify and mutable state.
817.
▲
by
willtim
9y ago
In what way is the Linux kernel or my router firmware object-oriented? Linus Torvalds has even gone on record to express his distaste for C++ and OOP.
818.
▲
by
willtim
9y ago
Any global state is potentially visible externally in terms of the behaviour of your system. Yes pure functions can be complex, but their behaviour is entirely reproducible and testable. For state not to be visible externally, i.e. true sta
819.
▲
by
willtim
9y ago
I've now expanded on that statement. In my experience, working using OOP in large multi-million line codebases, the state issues have proven very true.
820.
▲
by
willtim
9y ago
Every object in OOP is potentially stateful, some are made stateless and immutable but most are not, you need to read the docs. If I build a composite object Z from objects X and Y, the set of possible states Z has is a product of the set o
821.
▲
by
willtim
9y ago
OOP does not offer true state encapsulation, it just hides it. Objects are always potentially stateful when reasoned about externally. This means that all objects in your system could potentially contribute to the global state space, result
822.
▲
by
willtim
9y ago
Agree that Java and C++ are poor examples. However, OOP fundamentally results in a combinatorial explosion of state, which makes programs difficult to reason about. This can be useful in some niche applications but does not make a good gene
823.
▲
by
willtim
9y ago
The inventor of the start menu and taskbar disagrees with you: https://www.windowscentral.com/creator-first-start-menu-thin...
824.
▲
by
willtim
9y ago
OS/2 did not have the Start menu. Here is Microsoft's "TaskBar with Start Menu" patent: http://www.google.co.uk/patents/US5920316
825.
▲
by
willtim
9y ago
If you mean "normal" as similar to Windows 95, then there was a very good reason to experiment with alternatives: the US patent system.
826.
▲
by
willtim
9y ago
Sure 'evil' is hyperbole, but he gives many examples in the posted video of control, security and privacy issues. Essentially with proprietary software, there is a fundamental conflict of interest between the proprietor and user.
827.
▲
by
willtim
9y ago
It might be personal taste, but I'd prefer a language incorporating innovations from the 1980's onwards. I doubt that will be fixed in the next release.
828.
▲
by
willtim
9y ago
How about Algo-68?
829.
▲
by
willtim
9y ago
This looks great. And being written in OCaml, it probably has less bugs than the official clients do.
830.
▲
by
willtim
9y ago
At least Lenovo provide a choice. If you want a mobile Xeon workstation with 64GB ram, they sell it.
831.
▲
by
willtim
9y ago
Those buttons are for the nipple not the trackpad. The trackpad otherwise is like an Apple trackpad.
832.
▲
by
willtim
9y ago
TLS depends on crypto and the mirage team implemented it using OCaml. It supports low-level intrinsics for timing attack resistance. See: https://github.com/mirleft/ocaml-nocrypto
833.
▲
by
willtim
9y ago
How is the deployment of a high-level runtime different from libc? Both can be statically-linked if required.
834.
▲
by
willtim
9y ago
It's called abstraction. It's a good thing when trying to build correct software.
835.
▲
by
willtim
9y ago
One approach would be do design an embedded DSL for implementing cryto algorithms. And then a compiler for this DSL into C or LLVM. In fact, I believe something along the lines of this has already been done: https://cryptol.net
836.
▲
by
willtim
9y ago
OCaml was used recently by the MirageOS folks to implement a better TLS than OpenSSL.
837.
▲
by
willtim
9y ago
Portability is not black or white. Macros are essentially selecting different code depending on the platform. A good high-level language would not need to do this.
838.
▲
by
willtim
9y ago
> You provided absolutely no context to go with what was quoted Not explicitly, but I never said configuring or using i3 was simple. It is a very valid point, but is does not refute the fact that i3 is itself simple. > You made no
839.
▲
by
willtim
9y ago
You are quoting me out of context. I originally said i3 is simple in a reply to a post complaining about KDE and GNOME, both of which are hugely complex installations of numerous libraries and services. So complex in fact, that they cannot
840.
▲
by
willtim
9y ago
For the pieces you mention, I use tlp, connman and xrandr. Yes they have a small learning curve and I wouldn't recommend them to everyone, but they are stable and not likely to change (whereas Apple/Microsoft/Redhat are const
More ›