[HN Gopher] The Evolution of a Haskell Programmer (2001)
       ___________________________________________________________________
        
       The Evolution of a Haskell Programmer (2001)
        
       Author : agomez314
       Score  : 131 points
       Date   : 2024-03-04 12:12 UTC (2 days ago)
        
 (HTM) web link (pages.cpsc.ucalgary.ca)
 (TXT) w3m dump (pages.cpsc.ucalgary.ca)
        
       | VMG wrote:
       | https://archive.is/CbAXN for those that get a cert error
        
       | tromp wrote:
       | Church Numeral oriented Haskell Programmer:
       | three = \f x -> f (f (f x))         fac = \n f -> n (\f n -> n (f
       | (\f x -> n f (f x)))) (\x -> f) (\x -> x)         main = print $
       | fac three (+ 1) 0
        
       | tankfeeder wrote:
       | Evolution of Picolisp coder.
       | [https://git.envs.net/mpech/tankf33der/raw/branch/master/vers...]
        
         | 7thaccount wrote:
         | How often do you code in pico lisp? I think it's a neat
         | project, but haven't really found a use yet.
        
       | Vosporos wrote:
       | "fac n = product [1..n]" is still something I use at times. It's
       | a beautiful line of code.
        
         | quchen wrote:
         | Plus it fuses the list creation and consumption, there is no
         | list in the compiled program.
        
       | Tabular-Iceberg wrote:
       | The invalid certificate and the oddball text encoding is
       | illustrative of the Haskell programmer's inability to cope with
       | practical computing problems.
        
         | lukan wrote:
         | It is from 2001. And maybe not maintained anymore. Probably
         | also a possible explanation.
        
           | Tabular-Iceberg wrote:
           | The meme that Haskellers never accomplish anything practical
           | is probably even older, maybe as old as the language itself.
        
             | lynx23 wrote:
             | The meme likely comes from a time when monads (and
             | therefore IO) were not invented yet.
        
               | bazoom42 wrote:
               | Yeah, after monads were invented Haskell have conquered
               | the world through its reputation as a practical "get
               | things done" language.
        
               | Symmetry wrote:
               | As "A Brief, Incomplete, and Mostly Wrong History of
               | Programming Languages" put it:
               | 
               |  _1990 - A committee formed by Simon Peyton-Jones, Paul
               | Hudak, Philip Wadler, Ashton Kutcher, and People for the
               | Ethical Treatment of Animals creates Haskell, a pure,
               | non-strict, functional language. Haskell gets some
               | resistance due to the complexity of using monads to
               | control side effects. Wadler tries to appease critics by
               | explaining that "a monad is a monoid in the category of
               | endofunctors, what's the problem?"_
               | 
               | https://james-iry.blogspot.com/2009/05/brief-incomplete-
               | and-...
        
               | the_af wrote:
               | It's a funny joke (I love that post), but it's mostly for
               | people looking from outside in. It says nothing about
               | actually doing IO with Haskell using monads, which is
               | practical and done, and not particularly difficult.
               | 
               | We shouldn't mistake memes for actual insight.
        
               | tempodox wrote:
               | > and not particularly difficult.
               | 
               | Wait until you want debug output in a deeply nested
               | function that isn't already in the IO monad.
        
               | jaspervdj wrote:
               | You can use trace for that which is part of the base
               | library:
               | 
               | https://hackage.haskell.org/package/base-4.19.1.0/docs/De
               | bug...
        
               | pyrale wrote:
               | Unrelated, but many thanks for organizing Zurihac year
               | after year.
        
               | the_af wrote:
               | Debugging output, or just plain debugging, is often
               | difficult regardless of the programming language. I
               | wouldn't say this sets Haskell apart.
        
             | pyrale wrote:
             | The point is that encoding was not a problem just for ivory
             | tower practicians back then. Python is an exemple of
             | definitely-not-an-ivory-tower language that struggled with
             | the same issues.
             | 
             | Also the practical joke is largely independant from
             | haskell. It's pretty much an example of shuhari principles
             | applied.
        
             | 7thaccount wrote:
             | The main language creator himself famously called Haskell
             | "useless". It was tongue in cheek of course.
        
               | kqr wrote:
               | Also with a very specific meaning that often gets lost.
               | It was specifically about Haskell before there was an IO
               | type. Without I/O operations, any language is "useless".
               | 
               | (Further context: in the discussion Haskell is described
               | as starting out useless and carefully approaching useful.
               | Other languages start with the footguns and then retrofit
               | useful limitations from the other end!)
        
         | jasode wrote:
         | _> The invalid certificate [...] is illustrative of the Haskell
         | programmer's inability _
         | 
         | Why would one assume the invalid certificate is caused by that
         | particular professor instead of the IT department's staff at
         | the University of Calgary?
        
           | boxed wrote:
           | It's a joke.
        
         | kreetx wrote:
         | My experience is that this _may_ be illustrative of academic
         | programmers. People working in industry are expected to produce
         | _something_ , regardless of the language. This is why I'd
         | recommend academics to spend a bit of time in the industry,
         | regardless of it feeling awkward/inconvenient, of not being
         | given time to go deep in any specific subject.
        
           | pyrale wrote:
           | > People working in industry are expected to produce
           | something,
           | 
           | Yeah, academics are only interested in producing silly papers
           | to justify expensive trips to exotic conference locations.
           | 
           | Meanwhile, industry produces important and useful stuff like
           | Scrum(tm) Poker-planning estimates and Jira(r)-powered
           | burndown charts to track completion of their Confluence(c)
           | fully-documented user-stories.
        
             | whiterknight wrote:
             | Both are indeed ridiculous organizations. Best not to find
             | yourself a true believer on either side.
        
             | Kototama wrote:
             | Don't forget LEGO(r) Serious Play(r).
        
               | pyrale wrote:
               | Shit, TIL. I can now become a Certified Lego(r) Serious
               | Play(r) facilitator [1], with a certificate delivered by
               | none other than:
               | 
               | > The Authority on Professional LEGO Serious Play.
               | 
               | [1]: https://www.serious.global/
        
             | kreetx wrote:
             | Sure, bigger companies have "molded" corners like that,
             | too. But plenty of companies are small, where there there
             | isn't much space in getting nothing practical done.
        
         | kccqzy wrote:
         | The article predates the popularity of UTF-8 encoding on the
         | World Wide Web.
        
       | osclarto wrote:
       | I'm glad I don't work with any post-doc Haskell programmers
        
         | vrnvu wrote:
         | They don't _work_ either :P
        
           | fuzztester wrote:
           | They _do_ work.
           | 
           | They post docs.
        
       | ykonstant wrote:
       | I have a similar list of FizzBuzzes in Lean from when I started
       | programming in that language:
       | 
       | https://drive.google.com/file/d/1lPnQiik5cAx0X2E3GNbw_Oaug87...
       | 
       | I wrote more, but it got too silly.
        
       | quickthrower2 wrote:
       | There is a Y Combinator in there!
        
       | GuB-42 wrote:
       | As a C programmer, I think it is missing something like
       | -- works for all 32-bit integers       fac n = [1,1,2,6,24,120,72
       | 0,5040,40320,362880,3628800,39916800,479001600]!!n
        
         | tromp wrote:
         | It does have the non-truncated equivalent "Memoizing Haskell
         | programmer"'s
         | 
         | fac n = (scanl (*) 1 [1..]) !! n
        
       | jayceedenton wrote:
       | My first thought was, "Needs more monads".
       | 
       | Sure enough, in the commentary:
       | 
       | > Monads are woefully un-represented here; I would be grateful if
       | someone could contribute a few (progressive) examples in the
       | spirit of the development above.
        
       | jayceedenton wrote:
       | > fac n = product [1..n]
       | 
       | This is a beautiful line of code.
       | 
       | In all seriousness, I'd probably prefer to find the Junior or
       | "Another junior" version if I was browsing a project.
        
       ___________________________________________________________________
       (page generated 2024-03-06 23:02 UTC)