On 11/21/14 12:17 AM, Paulo Pinto wrote:
On Friday, 21 November 2014 at 02:56:09 UTC, Andrei Alexandrescu wrote:
On 11/20/14 5:09 PM, Walter Bright wrote:
On 11/20/2014 3:10 PM, "Ola Fosheim Grøstad"
<ola.fosheim.grostad+dl...@gmail.com>" wrote:
On Thursday, 20 November 2014 at 22:47:27 UTC, Walter Bright wrote:
On 11/20/2014 1:55 PM, deadalnix wrote:
All of this is beautiful until you try to implement a quicksort
in, haskell.

[…]

Monads!

I think Deadalnix meant that you cannot do in-place quicksort easily
in Haskell.

That's correct.

Non-mutating quicksort is easy, no need for monads:

quicksort []     = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
    where
        lesser  = filter (< p) xs
        greater = filter (>= p) xs

https://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell

Except that isn't really quicksort. Monads are the workaround functional
languages use to deal with things that need mutation.

As I like to say, this troika has inflicted a lot of damage on both FP
and those beginning to learn it:

* Linear-space factorial
* Doubly exponential Fibonacci
* (Non)Quicksort

These losers appear with depressing frequency in FP introductory texts.


Andrei

Just like the OOP introductory books that still insist in talking about
Cars and Vehicles, Managers and Employees, Animals and Bees, always
using inheritance as code reuse.

The first public example found by google (oop introduction) lists a class Student as the first example of a class:

http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#Object

and IOException inheriting Exception as the first example of inheritance:

http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#Inheritance

First example for overriding is Complex.ToString:

http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#Overloading

Barely talking about is-a and has-a, and all the issues about fragile
base classes.

Even to the extent those old texts have persisted, they are "only" poor style. In contrast, the three FP example I mentioned are computationally bankrupt. There is really no excuse for teaching them.


Andrei

Reply via email to