[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)