A proof assistant is what happens if you spend all your time developing a type checker for your language and forget that programs also need to be run.
(с) https://serokell.io/blog/why-dependent-haskell
(с) https://serokell.io/blog/why-dependent-haskell
Why Dependent Haskell is the Future of Software Development
Are dependent types the future of software development? Read more about our work on Dependent Haskell in this blog post.
“Create stack project config from cabal or hpack package specifications”?
I have no idea what this means. I came to Stack to avoid Cabal. Every interaction I've had with Cabal has been a combination of mystifying and frustrating. I don't ever want to hear the word "Cabal" again if I can avoid it. Don't make me understand the crappy tool you replace in order to use your new, better one!
Besides which, this explains nothing. What is a Stack project config? What is a Cabal/hpack specification? When and why would I want to turn one into the other, and how does stack go about doing it? If you claim to be friendly to new users, you must answer these questions.
(c) http://www.rntz.net/post/2018-05-18-why-i-am-not-a-fan-of-stack.html
I have no idea what this means. I came to Stack to avoid Cabal. Every interaction I've had with Cabal has been a combination of mystifying and frustrating. I don't ever want to hear the word "Cabal" again if I can avoid it. Don't make me understand the crappy tool you replace in order to use your new, better one!
Besides which, this explains nothing. What is a Stack project config? What is a Cabal/hpack specification? When and why would I want to turn one into the other, and how does stack go about doing it? If you claim to be friendly to new users, you must answer these questions.
(c) http://www.rntz.net/post/2018-05-18-why-i-am-not-a-fan-of-stack.html
www.rntz.net
Why I am not a fan of Cabal or Stack
It's 2018. We still have
(c) http://www.rntz.net/post/2018-05-18-why-i-am-not-a-fan-of-stack.html
cabal install but no cabal uninstall. This is not okay; it has never been okay; it will never be okay; no reasonable person would be okay with this; in no universe is this okay.(c) http://www.rntz.net/post/2018-05-18-why-i-am-not-a-fan-of-stack.html
www.rntz.net
Why I am not a fan of Cabal or Stack
Forwarded from HN Best Comments
Re: Tired of Stack Overflow
Children, SO is a blessing for humanity.
Their creators should be canonized. You don't remember the pre SO times. You couldn't find anything to fix your problems and must read the source code or pay zillions for some sh*tty support. In the pre-internet times, you just would hit a wall and have to quit. I really love Jeff and Joel.
neves, 4 hours ago
Children, SO is a blessing for humanity.
Their creators should be canonized. You don't remember the pre SO times. You couldn't find anything to fix your problems and must read the source code or pay zillions for some sh*tty support. In the pre-internet times, you just would hit a wall and have to quit. I really love Jeff and Joel.
neves, 4 hours ago
...it is not exactly the same as Alan Kay’s original definition of OOP, but it is far from the horrible incidents that permeate our field such as UML, abstract factory factories and broken subtyping.
(c) https://jaspervdj.be/posts/2018-03-08-handle-pattern.html
(c) https://jaspervdj.be/posts/2018-03-08-handle-pattern.html
jaspervdj.be
jaspervdj - Haskell Design Patterns: The Handle Pattern
A neat and simple way to build services in Haskell
...the database is never well-integrated into source Haskell. Our options are to let the database schema generate our types via Template Haskell, or to let our types generate the schema via Generics. It is too tedious to produce meaningful types for every query in our application, so we tie our Haskell representations directly to our database representations. But databases have laughably simple type systems in comparison, and so we’ve tied our own hands!
As bad as all of this is, it’s not the whole story of how databases break our compositionality. Because queries are ubiquitous and complex, the most reasonable place to put them is inline at the place we need their data. This is an understandable decision, but means that our business logic is now fundamentally tied to our choice of database technology.
(c) Sandy Maguire, https://www.patreon.com/designandinterpretation
As bad as all of this is, it’s not the whole story of how databases break our compositionality. Because queries are ubiquitous and complex, the most reasonable place to put them is inline at the place we need their data. This is an understandable decision, but means that our business logic is now fundamentally tied to our choice of database technology.
(c) Sandy Maguire, https://www.patreon.com/designandinterpretation
No wonder Haskell hasn’t taken over the world; as a community we need to stop writing C code that we can compile via GHC.
(c) Sandy Maguire
(c) Sandy Maguire
Category theorists think of algebra as part of category theory. Algebraists think of category theory as part of algebra. Logicians think they're both crazy.
(с) https://cstheory.stackexchange.com/a/10929 comments
(с) https://cstheory.stackexchange.com/a/10929 comments
Theoretical Computer Science Stack Exchange
Uses of algebraic structures in theoretical computer science
I'm a software practitioner and I'm writing a survey on algebraic structures for personal research and am trying to produce examples of how these structures are used in theoretical computer science...
Question: What is the origin of STL? Has STL been conceived to be what it is now, that is "the" C++ Standard Library, or does it come from some other project? Could you tell us a history of STL?
Answer: In 1976, still back in the USSR, I got a very serious case of food poisoning from eating raw fish. While in the hospital, in the state of delirium, I suddenly realized that the ability to add numbers in parallel depends on the fact that addition is associative. (So, putting it simply, STL is the result of a bacterial infection.) In other words, I realized that a parallel reduction algorithm is associated with a semigroup structure type.
(c) http://www.stlport.org/resources/StepanovUSA.html
Answer: In 1976, still back in the USSR, I got a very serious case of food poisoning from eating raw fish. While in the hospital, in the state of delirium, I suddenly realized that the ability to add numbers in parallel depends on the fact that addition is associative. (So, putting it simply, STL is the result of a bacterial infection.) In other words, I realized that a parallel reduction algorithm is associated with a semigroup structure type.
(c) http://www.stlport.org/resources/StepanovUSA.html
Every time I would look at an algorithm I would try to find a structure on which it is defined. So what I wanted to do was to describe algorithms generically. That's what I like to do. I can spend a month working on a well known algorithm trying to find its generic representation. So far, I have been singularly unsuccessful in explaining to people that this is an important activity.
(c) http://www.stlport.org/resources/StepanovUSA.html
(c) http://www.stlport.org/resources/StepanovUSA.html
I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people.
(c) http://www.stlport.org/resources/StepanovUSA.html
(c) http://www.stlport.org/resources/StepanovUSA.html
I miss files. I still create many of my own, but increasingly, that seems an anachronism, like using a quill rather than a pen. I miss the universality of files. The fact they can work anywhere, be moved around easily.
The file has been replaced with the platform, the service, the ecosystem. This is not to say that I’m proposing we lead an uprising against services. You can’t halt progress by clogging the internet pipes. I say this to mourn the loss of the innocence we had before capitalism inevitably invaded the internet.
(c) https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506
The file has been replaced with the platform, the service, the ecosystem. This is not to say that I’m proposing we lead an uprising against services. You can’t halt progress by clogging the internet pipes. I say this to mourn the loss of the innocence we had before capitalism inevitably invaded the internet.
(c) https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506
Medium
Computer Files Are Going Extinct
Technology services are changing our internet habits
Using the data types, slowly, through pain and suffering, we can indeed construct an expression...
(с) https://markkarpov.com/tutorial/th.html
(с) https://markkarpov.com/tutorial/th.html
Markkarpov
Template Haskell tutorial
The reason PostgreSQL is so flexible is actually quite interesting in a historical sense too. Many years ago, one of the most well-known PostgreSQL developers, Jan Wieck, who had written countless patches back in its early days, came up with the idea of using TCL as the server-side programming language. The trouble was simple--nobody wanted to use TCL and nobody wanted to have this stuff in the database engine. The solution to the problem was to make the language interface so flexible that basically any language can be integrated with PostgreSQL easily. Then, the
(c) Hans-Jürgen Schönig, Mastering PostgreSQL 11
CREATE LANGUAGE clause was born...(c) Hans-Jürgen Schönig, Mastering PostgreSQL 11
Boring is good. Boring means predictable. Boring means I don’t have to think hard when writing or reading it.
(c) https://hackernoon.com/type-class-patterns-and-anti-patterns-efd045c5af66
(c) https://hackernoon.com/type-class-patterns-and-anti-patterns-efd045c5af66
Hacker Noon
Type Class Patterns and Anti-patterns
In a prior post I wrote about how type class instance selection worked. To help get a sense of good type class design, I want to walk…
Here's the question: how much does all this pedantic hiding, annotating, and making sure you don't double-cross yourself by using a "for internal use only" method actually improve your software?
...
Even if they're secured with the private incantation, nothing is stopping you from editing the file, deleting that word, and going for it. And if this is your own code that you're doing this with, then this scenario is teetering on the brink of madness.
What all of these fine-grained controls have done is to put the focus on software engineering in the small. The satisfaction of building so many tiny, faux-secure fortresses by getting publics and protecteds in the right places and adding immutability keywords before every parameter and local variable. But you've still got a sea of modules and classes and is anything actually simpler or more reliable because some methods are behind the private firewall?
(с) https://prog21.dadgum.com/206.html
...
Even if they're secured with the private incantation, nothing is stopping you from editing the file, deleting that word, and going for it. And if this is your own code that you're doing this with, then this scenario is teetering on the brink of madness.
What all of these fine-grained controls have done is to put the focus on software engineering in the small. The satisfaction of building so many tiny, faux-secure fortresses by getting publics and protecteds in the right places and adding immutability keywords before every parameter and local variable. But you've still got a sea of modules and classes and is anything actually simpler or more reliable because some methods are behind the private firewall?
(с) https://prog21.dadgum.com/206.html
Is that the intent of the hardcore interview process? To find people who are pure programming athletes, who amaze passersby with non-recursive quicksorts written on a subway platform whiteboard, and aren't distracted by non-coding thoughts? It's kinda cool in a way--that level of training is impressive--but I'm unconvinced that such a technically homogeneous team is the way to go.
(с) https://prog21.dadgum.com/208.html
(с) https://prog21.dadgum.com/208.html
I’ve met full professors who, in a rational world, would fail an interview for apprentice dog-catcher. I’ve met fewer, but still a significant amount, who in an ideal world I would be allowed to punch very hard in the face. Idiots, sexual predators, functional imbeciles and smug, awful, petty miserable people.
...without the need for anyone to be a sociopath, there’s a center to this problem which is just cultural and doesn’t require anyone to be committed to Broadmoor — it’s that academic researchers are often old people with job security who exclusively employ young people who just happen to be crucially reliant on them, and who have little job security.
No sociopathy required, just normal people with a LOT of power.
...
No good deed goes unpunished, and your decision to try to improve the world and devote your life to your innate human curiosity and the betterment of humanity is odds-on to turn out horribly. We picked a fairly miserable point in history to do this.
Good luck. It sucks, but it’s the only science we got.
(c) https://medium.com/age-of-awareness/12-thing-you-should-know-before-you-start-a-phd-9c064a979e8
...without the need for anyone to be a sociopath, there’s a center to this problem which is just cultural and doesn’t require anyone to be committed to Broadmoor — it’s that academic researchers are often old people with job security who exclusively employ young people who just happen to be crucially reliant on them, and who have little job security.
No sociopathy required, just normal people with a LOT of power.
...
No good deed goes unpunished, and your decision to try to improve the world and devote your life to your innate human curiosity and the betterment of humanity is odds-on to turn out horribly. We picked a fairly miserable point in history to do this.
Good luck. It sucks, but it’s the only science we got.
(c) https://medium.com/age-of-awareness/12-thing-you-should-know-before-you-start-a-phd-9c064a979e8
Medium
12 Things You Should Know Before You Start A PhD
So you’re going to do a PhD and be a great big cleverpants.
May all of your tests be pleasant and your software correct.
(с) https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html
(с) https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html
www.parsonsmatt.org
Three Layer Haskell Cake
The question of “How do I design my application in Haskell?” comes up a lot.There’s a bunch of perspectives and choices, so it makes sense that it’s difficul...
Remember, this is Haskell: we'd rather face compile time rather than runtime pain.
(c) Michael Snoyman, https://www.fpcomplete.com/blog/2017/06/readert-design-pattern
(c) Michael Snoyman, https://www.fpcomplete.com/blog/2017/06/readert-design-pattern
FP Complete
The ReaderT Design Pattern
Haskell isn't usually a language known for C++-style design patterns. Here's one counter-example, showing how to structure your applications.
Every time you use unsafePerformIO, a kitten dies.
(c) Michael Snoyman
(c) Michael Snoyman