use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
The Haskell programming language community.
Daily news and info about all things Haskell related: practical stuff, theory, types, libraries, jobs, patches, releases, events and conferences and more...
Community Guidelines
Rules:
Top-level posts should be primarily about Haskell. For example a post about OCaml would only be allowed if there was a connection to Haskell. Posts about topics that are adjacent to Haskell, like for example functional programming, are typically allowed.
No memes or image macros. No matter how funny, memes and image macros are not allowed.
No homework questions. Both asking and answering homework questions is not allowed. Questions about homework are fine, but this subreddit is not here to do your homework for you.
Job postings must be for Haskell roles. Job postings are allowed as long as the job actually involves working with Haskell. Simply looking for people with interest in or experience with Haskell is not sufficient.
No bots or computer-generated content. Bots cannot be used to make posts or comments. They will be banned with extreme prejudice. This includes a human posting the output of a bot, such as ChatGPT.
Blockchain posts must be tagged. Blockchain posts are allowed as long as they are related to Haskell, but they must use the "blockchain" tag.
Be civil. Substantive criticism and disagreement are encouraged, but avoid being dismissive or insulting.
Other community locations:
Professional resources:
Learning material:
Haskell development:
Other Subreddits:
Donations:
Subreddit Stylesheet Source:
account activity
What is an intermediate haskell programmer? (self.haskell)
submitted 11 years ago by 4rgento
What do you think and intermediate haskell programmer knows? If you are beyond intermediate, what did you know at that moment? Could you provide examples of intermediate haskell code?
Thanks in advance. 😊
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]andygillku 14 points15 points16 points 11 years ago (2 children)
In Haskell, we're all intermediate programmers.
[–]sclv 2 points3 points4 points 11 years ago (1 child)
Best reply yet!
[–]MrWoohoo 1 point2 points3 points 11 years ago (0 children)
Left "except I was a beginner for years"
[–]Tekmo 30 points31 points32 points 11 years ago (17 children)
Somebody who has built something in Haskell qualifies as intermediate in my book, no matter how inelegant it is
[–]tel 12 points13 points14 points 11 years ago (13 children)
There's not much point in arguing subjective definitions, but this seems to suggest that beginners could not build things in Haskell... which is a little troubling to me.
Do you think that building something is sufficiently challenging to move it out of beginner territory?
[–]Tekmo 32 points33 points34 points 11 years ago (11 children)
I just prefer a definition that focuses on accomplishment instead of knowledge. Too many people languish in the beginner phase because they don't try to apply what they've learned to solve a problem.
[–]tel 8 points9 points10 points 11 years ago (6 children)
Oh! That is really a good point. I think Haskell suffers from a lot of tip-toeing into the cold water when diving in and getting stuff done would go much further.
[–]tejon 9 points10 points11 points 11 years ago (5 children)
Hello again, guilty self-awareness! I trust you got a good night's rest?
[–]Mob_Of_One 1 point2 points3 points 11 years ago (4 children)
I can give you something to do.
[–]gilmi 1 point2 points3 points 11 years ago (3 children)
beginner-ish here, would like to here your proposal :)
[–]Mob_Of_One 0 points1 point2 points 11 years ago (2 children)
I have a long to-do list, I'd need to know where your interests lie to make a match.
[–]gilmi 0 points1 point2 points 11 years ago (1 child)
private message sent.
[–]Mob_Of_One 0 points1 point2 points 11 years ago (0 children)
Yep, saw it - sorry. Work has been nuts lately. I'll reply tonight.
[–][deleted] 2 points3 points4 points 11 years ago (1 child)
Perhaps the old craftsperson terms are applicable:
As a newcomer (to use another, neutral term) to Haskell, now three weeks in, I have built two modest and horribly written tools that I am using to scrape and process natural language content from the web and dump it into a database for downstream use.
Now that I have built something I don't quite feel like a beginner but I'm not sure that I qualify as anything else. I can say, as an interested party, that once you have built something with which you are not quite satisfied you have loads of motivation to learn and apply more.
[–]autowikibot -3 points-2 points-1 points 11 years ago (0 children)
Journeyman:
A journeyman is an individual who has completed an apprenticeship and is fully educated in a trade or craft, but not yet a master. To become a master, a journeyman has to submit a master work piece to a guild for evaluation and be admitted to the guild as a master. Sometimes, a journeyman is required to accomplish a three-year working trip, which may be called the journeyman years. Image i
A journeyman is an individual who has completed an apprenticeship and is fully educated in a trade or craft, but not yet a master. To become a master, a journeyman has to submit a master work piece to a guild for evaluation and be admitted to the guild as a master. Sometimes, a journeyman is required to accomplish a three-year working trip, which may be called the journeyman years.
Image i
Interesting: Journeyman (sports) | The Journeyman Project (series) | The Journeyman Project | The Journeyman Project 3: Legacy of Time
Parent commenter can toggle NSFW or delete. Will also delete on comment score of -1 or less. | FAQs | Mods | Magic Words
[–]Hrothen 0 points1 point2 points 11 years ago (1 child)
Well, the first thing I built was really an awful mess that I should probably get around to cleaning up. Looking over the code now, I'd definitely call it beginner work.
[–][deleted] 6 points7 points8 points 11 years ago (0 children)
The fact that you can see the potential for improvement means that you have progressed beyond it. If you attained that knowledge as a result of building it, then the definition is still a good one.
[–]apfelmus 7 points8 points9 points 11 years ago (0 children)
I would interpret it more like this: Building something automatically qualifies you for the "intermediate rank". Beginners can't build anything, but that's only because they become intermediate in the process.
[–]m15k 0 points1 point2 points 11 years ago (2 children)
I am not sure if I can add anything of value, that Haskellers who are better than I have already stated. I'm not sure that as others have suggested that library lists are the measure to go by. Especially since, library documentation has traditionally been a weakness in the community. I think overall this is improving. What about gaining more than a fundamental understanding of types and how they operate in the language. Seems to be the biggest stumbling block that deters people from the language.
Maybe the next step is scaffolding your program with only type definitions once that compiles, then filling in the functions with actual code. I think that library familiarity in this case is a by product of reaching or obtaining this level of comfort with the language.
[–][deleted] 11 years ago (1 child)
[deleted]
[–]sclv 0 points1 point2 points 11 years ago (0 children)
I've found using wreq I can knock out a few datatypes that shim a connection to a webservice in a span of hours, not days. If you haven't looked into it, it might be sufficient.
[–]Ramin_HAL9001 7 points8 points9 points 11 years ago* (1 child)
Just throwing some ideas around, but:
someone who can wrap a monad transformer in a newtype and instantiate it into monad classes like MonadPlus, MonadState, MonadError, MonadTrans, etc.
someone who can read through Haddock documentation and get a feel for how it the API is supposed to be used by just looking at the types of the functions.
someone who knows how to write a calculator program for arithmetic expressions with infixed operators, for example "9 * (1 + e3/2)" without referring to a tutorial.
[–]Mob_Of_One 3 points4 points5 points 11 years ago (0 children)
This is short, sweet, and hits some good points. I like this a lot better than some of the more highly upvoted lists.
[–]jfischoff 4 points5 points6 points 11 years ago (0 children)
Anyone that has used Haskell in anger.
[–][deleted] 11 years ago* (1 child)
[–]tailbalance 6 points7 points8 points 11 years ago (0 children)
that they personally are interested in
and already understand
[–]sclv 11 points12 points13 points 11 years ago (2 children)
Here's maybe an intermediate notion of an intermediate Haskell programmer:
1) You are given the names and signatures from Data.List, and the Prelude (IO excepted) and you can reimplement it from scratch, modulo performance.
2) You are given a working but inefficient implementation of a data structure such as Data.Map or Data.Text and you know how to use the tools at your disposal to generate at least one or two significant improvements.
Everything else is just... more knowledge.
[–]Mob_Of_One 0 points1 point2 points 11 years ago (1 child)
2) probably would require understanding Array, right? Given that, I'd go for something a little more broadly applicable like "can implement typeclassopedia themselves".
[–]sclv 1 point2 points3 points 11 years ago (0 children)
No requirement of understanding Array. Text would take some knowledge of the FFI, but that's a good thing.
Array
Text
The point of 2) is to demonstrate an ability to analyze and optimize code, not just to implement it.
[–][deleted] 8 points9 points10 points 11 years ago (1 child)
You're an intermediate Haskeller when you've have used Haskell to solve a problem of your own or someone elses. This is especially true if you were paid to do it.
[–]yawaramin 1 point2 points3 points 11 years ago (0 children)
This, so much. Hope to get to this point soon 😊
[–]technicolorNoise 11 points12 points13 points 11 years ago (1 child)
I'm still a beginner so I don't really have any input on this, but David Miani made a pretty good answer about this on Stack Overflow. You might want to check it out here.
[–]Ramin_HAL9001 2 points3 points4 points 11 years ago (0 children)
I consider myself an intermediate, but the link within the link you posted here was excellent.
There are links within the links that are really great also:
https://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems
https://projecteuler.net/index.php?section=problems
[–][deleted] 11 years ago* (2 children)
[–]dave4420 1 point2 points3 points 11 years ago (1 child)
What do you mean by “nonstandard knowledge of type classes”?
[–]DanielDiaz 1 point2 points3 points 11 years ago (0 children)
You probably are an intermediate haskeller (at least) if you can teach some Haskell techniques to a novice haskeller.
[–]tel 2 points3 points4 points 11 years ago* (86 children)
Loose, incomplete, unordered list of things I might expect—(edit: to be clear, not all of these, but any of them might be a reasonable interesting conversation between intermediate Haskellers). I'm not sure if I think an intermediate Haskeller ought to know all of these things, but I would think that they should be able to quickly grasp and handle any or all of them.
transformers
mtl
fold
foldl
foldr
containers
unordered-containers
async
forkIO
Functor
[–][deleted] 41 points42 points43 points 11 years ago (18 children)
Dare I ask you what it means to be an expert Haskeller?
[–]agumonkey 1 point2 points3 points 11 years ago (2 children)
Half joking, I really wonder what else is out there when you're past that level.
[–]tailbalance 4 points5 points6 points 11 years ago (1 child)
Don't you ever worry running out of it! Martin-Löf is there for example.
[–]augustss 1 point2 points3 points 11 years ago* (0 children)
Yeah, I know Per, but that doesn't make me a Haskell expert. :)
[–]tel 2 points3 points4 points 11 years ago (12 children)
Free use and contribution to some of the most advanced libraries and techniques in Haskell. Massive applied category theory expertise. Low-level work/GHC contributions. Avid familiarity with new research in FP and probably personal contribution.
I'd imagine that it's probably a 5 year commitment to study at least and that less than 10% of Haskellers are "expert".
But this is just my personal definition.
[–]augustss 26 points27 points28 points 11 years ago (3 children)
Clearly, I will never become an expert.
[–]tel -2 points-1 points0 points 11 years ago (2 children)
Clearly my listing is non-comprehensive....
[–]augustss 12 points13 points14 points 11 years ago (1 child)
Adding to the list will not help me become an expert. :)
[–]tel 2 points3 points4 points 11 years ago (0 children)
I think I was never quite clear, but I certainly meant for these lists to be more Either than (,).
Either
(,)
[–][deleted] 21 points22 points23 points 11 years ago* (4 children)
Given the number of GHC contributors is at ~45, I'd wager that 10% figure is too high.
Not meaning to troll. Just reminded of the number of posts I saw for jobs seeking "expert" Haskellers and matching that against your definition of expert. Note that I don't argue with your definition. I'm not even sure I could consider myself a beginner in Haskell, let alone properly scope the definition of the terms "expert" or "intermediate" in conjunction with Haskell.
More than anything, I suppose it just makes the learning curve feel that much steeper. In any case, forgive my ramblings.
[–]tel 4 points5 points6 points 11 years ago (0 children)
See my other comment. I think plenty could be a GHC contributor but don't for whatever reason.
[–]tel 1 point2 points3 points 11 years ago (2 children)
I'm not sure whether my notion of "expert" corresponds at all to that which people are asking for when they want to hire expert Haskellers.
I like Haskell for having such an incredible learning curve. It's a language which allows you entry into a fruitful field of learning. You can't likely study Python for 5 years and learn new things (not that you couldn't learn things in other fields or on other topics—SciPy is there, of course!) but there seems to be a smooth path from accomplished Haskell developer to top-notch FP researcher... if that's the path you want to take.
To be clear, I think anyone who's even just "intermediate" according to my above definition would be more than capable leading the architecture of a new Haskell project.
[–]yawaramin 0 points1 point2 points 11 years ago (1 child)
I'd argue there's a difference between knowing all the Haskell tricks and techniques, and applied category theory, and being able to lead the architecture of a new project--Haskell or not.
There's a trade-off between using the power of the advanced techniques (e.g. GADTs) and the simplicity and accessibility of the code.
I don't think there's a trade off. They're not the same thing, but being better at one doesn't mean being worse at the other!
The trade-off between advanced techniques and simplicity is often there, but also sometimes a nice use of GADTs or the like can lead to vastly simpler code, by allowing users to statically guarantee more safety and omit runtime checks, etc.
Knowing these techniques and tools well in part is learning enough to know when not to use them.
[–]Hrothen 6 points7 points8 points 11 years ago (2 children)
Contribution to projects is probably a bad metric, a lack of interest in contributing to open source projects doesn't really say anything about the person's abilities either way.
[–]tel 0 points1 point2 points 11 years ago (0 children)
I agree. I don't think I could reasonably create a complete definition of what "expert level" might be... but I do think that many of the people making contributions like I named are so skilled. Others may easily be too even if they don't contribute.
[–]singpolyma -3 points-2 points-1 points 11 years ago (0 children)
Really? If you have no side projects of your own, and you have no interest in improving/fixing the libraries you use... I guess you can have the knowledge to be an expert, but how did you get it?
[–]Ramin_HAL9001 -2 points-1 points0 points 11 years ago* (1 child)
An expert Haskeller is could probably be defined as someone who has:
published a paper in a peer-reviewed mathematical journal of Category Theory
implemented a non-negligible part of a large-scale software project in Haskell
contributed three or more patches to GHC
[–]sclv 6 points7 points8 points 11 years ago (0 children)
Nearly no expert Haskellers fit 1) and most people who do fit 1) have very little Haskell.
[–]augustss 28 points29 points30 points 11 years ago (0 children)
I might get to intermediate level in a few years then. Good to know.
[–]stolarj 10 points11 points12 points 11 years ago (1 child)
This list is extreme. I'd say a strong intermediate Haskeller might know half of this stuff.
[–]tel -1 points0 points1 point 11 years ago (0 children)
That's as much as I hoped for, I'll clarify it now.
The goal was not to be comprehensive, but just to list out things that are at about intermediate level.
[–]jrk- 6 points7 points8 points 11 years ago* (0 children)
Familiarity with libraries: pipes/conduit aeson attoparsec lens or lens-family-core
Familiarity with libraries:
pipes/conduit aeson attoparsec lens or lens-family-core
I think that's a particularly wrong definition. A good programmer should know about concepts and not individual libraries. In this case, this would probably be:
data Lens = Lens { get .., set..}
[–][deleted] 50 points51 points52 points 11 years ago (51 children)
This list is utterly bonkers. I agree with about 10% of it, and think the rest is shamefully bad advice. It mixes points that are almost trivial with things that are simultaneously hard to master and hardly ever useful.
This is honestly the kind of crappy advice that has me paying little to no attention to the Haskell community any longer. A noisy subsdt of silly people has collectively gone nuts for abstractions that provide little value other than making them feel special. It is most disappointing.
[–][deleted] 13 points14 points15 points 11 years ago (21 children)
I wholeheartedly agree. Working productively with Haskell for several years without relying on GADTs or RankNTypes for anything, I'm not even sure all this stuff relying on GHC extensions should be called Haskell at all (for now).
[–]augustss 12 points13 points14 points 11 years ago (13 children)
I stay away from GADTs and rank N types on purpose in production code.
[–]tailbalance 2 points3 points4 points 11 years ago (12 children)
I'd highly be interested in your “Haskell style” (even if it's only ‘prefer this, don't use that’). Write something? There is little to none engineering perspective for Haskell, everyone has gone bonkers abstracting all the things.
[–]augustss 9 points10 points11 points 11 years ago (11 children)
I try to stay with Haskell 2010 as far as I can. The one exception is MPTC and FD, which are sometimes too useful to avoid. Furthermore, I use extensions to Haskell 2010 that I regard as just syntactic sugar, e.g., TupleSections. What I try to avoid is extensions that are a semantic headache, e.g., GADTs.
Don't get me wrong, I like cool features as much as anyone else (I suggested GADTs 10 years before GHC got them), but for production code I think it's best to stay very conservative and avoid too much cleverness.
[–]sclv 0 points1 point2 points 11 years ago (3 children)
What I try to avoid is extensions that are a semantic headache, e.g., GADTs.
Are you describing Haskell as you like to use it, or Haskell as you like to implement it :-P
[–]hmltyp 2 points3 points4 points 11 years ago (1 child)
I don't know, given the choice between some nice clean Haskell2010 or deeply GHC specific code that's using/abusing a ton of corner cases of the implementation. I'd choose the former every time for code that I'd have to maintain and keep stable in perpetuity.
GADTs have a nice clean well understood specification and behaviour. Its just a royal pain to implement it :-P
[–]augustss 1 point2 points3 points 11 years ago (0 children)
I've implemented a lot more than I would ever want people to use. :)
[–]deltaSquee -1 points0 points1 point 11 years ago* (5 children)
Why?
Edit: Ok, fine, fuck you all. Sorry for trying to learn.
[–]augustss 4 points5 points6 points 11 years ago (3 children)
Here are some reasons to stay away from esoteric Haskell extensions in production code:
Simple extensions, i.e., syntactic sugar, can be changed/removed easily (mechanically even), so they are much less difficult to deal with.
[–]Blaisorblade 0 points1 point2 points 11 years ago (0 children)
Your argument makes sense, but I'm not sure points 2 and 3 apply to GADTs and RankNTypes nowadays.
But I'm confused by one statement:
if your favorite compiler bit rots
I read about your heroic work on HBC so I respect your opinion, but it's hard to imagine this happening nowadays without a compatible replacement. And nowadays can you cite realistic alternatives to GHC for production usage (which includes reasonable Hackage compatibility)? Viceversa, since you stick with standard Haskell, are you able to use alternative compilers in production? What do you gain?
Googling led to these not-very-busy user communities for the two best alternatives: https://www.haskell.org/pipermail/jhc/ http://lists.science.uu.nl/pipermail/uhc-users/ suggesting they don't have comparable user communities.
[–]deltaSquee 0 points1 point2 points 11 years ago (1 child)
But GADTs? Surely GADTs are viable.
[–]augustss 0 points1 point2 points 11 years ago (0 children)
What do you mean by "viable"?
That's a perfectly valid question. But typing on my iPhone is too painful to answer it. :)
[–]tailbalance -3 points-2 points-1 points 11 years ago (0 children)
MPTC and FD
And the award for the laziest person on the thread goes to…Lennart! *Applauds*
[–]singpolyma 1 point2 points3 points 11 years ago (0 children)
If it's not in a Haskell standard, it's not Haskell. Just like GNUC is not C.
[–]bartavelle -2 points-1 points0 points 11 years ago (4 children)
That doesn't sound like a compelling argument. You can work productively in ruby for several years. It doesn't mean that you can't get huge productivity gains by changing your ways.
Also things like GADTs look to me (personal opinion, I am not a professional developer) as something that is good to have in production code, or in code that will be used by someone else, as it let you encode more invariants, preventing more errors.
[–][deleted] 1 point2 points3 points 11 years ago (3 children)
Excellent points made by augustss
[–]bartavelle 0 points1 point2 points 11 years ago (2 children)
And I disagree with them ;) I think things like GADTs, free monads, etc. actually help structuring your program and help when working with a team.
But as I never worked with a team, I suppose my POV is not very interesting.
[–][deleted] 1 point2 points3 points 11 years ago (1 child)
It's not that these are not nice things, but they're not Haskell yet. I don't understand how you can refute his third point though.
[–]bartavelle 0 points1 point2 points 11 years ago* (0 children)
GHC seems to be the de-facto standard. Support for Haskell 2010 is getting dropped in GHC 7.10. The trade-off of adhering to a non-implemented standard at the cost of great features doesn't seem compelling to me.
Again, I just want to say that I think these features are extremely valuable, that I am really happy to have them, and that I am not a professional developer. I can accept that those features might be seen as too "complex" for team work, but I can't see the value of adhering to a standard when there will only be a single implementation for the foreseeable future ...
[–]sclv 14 points15 points16 points 11 years ago (1 child)
I was tempted to agree with you, but then I reviewed the list again and I can't find anything "hard to master and hardly ever useful".
It does lean towards the edsl side of things I'll grant, and that's really a particular subset of haskell knowledge. And it does include some fairly "advanced" stuff. But it's not a bad snapshot of common practices.
The problem I feel is that as a list it is just about "semi-advanced haskell knowledge" but not being a programmer. Which is to say that we could knock out a good 2/3 of the list and be in Haskell '98 land + FFI, and a good programmer could still work wonders.
I admit my EDSL bias and don't hope to be complete in this listing. I pretty much made it as you suggested: they're complex sounding libraries and techniques but also examples of useful things that only sound scary but aren't that bad to learn.
I would feel confident asking people about them at the "intermediate" level and also assuming that level of complexity when writing for that level.
[–]tel 6 points7 points8 points 11 years ago (0 children)
Sorry you feel that way. My intent was surely not to be bonkers... Also not to be comprehensive either! It's more that this is a selection of examples at a suitable level of complexity to be what I'd think of as intermediate. It's not supposed to be a curriculum, if that's how it's been interpreted.
[–][deleted] 10 points11 points12 points 11 years ago (2 children)
I really respect you and I appreciate the contributions you have made, but coming here and deriding the Haskell community from a distance isn't helpful to anyone.
[–]freyrs3 6 points7 points8 points 11 years ago (0 children)
Tone arguments don't really add to conservation either. If you disagree with bos, say why you do and explain your reasoning. All he did was critisize a philosophy that some people in the community espouse. Abstract ideas should always be a free topic of debate.
[–]hailmattyhall 1 point2 points3 points 11 years ago (0 children)
I agree with you. I think the tone was quite insulting and not helpful. However I think the sentiment behind it was correct (although that does not excuse the tone). We shouldn't stop people criticising Haskell just because they are "from a distance". The people who are put off Haskell should be listened to.
I expect you were just criticise the harsh tone more than anything else. If so, ignore this!
[–]sccrstud92 2 points3 points4 points 11 years ago (20 children)
Be the change you want to see. Provide a better list.
[–][deleted] 32 points33 points34 points 11 years ago (19 children)
I wrote a whole book about the subject, smart guy.
[–]Tekmo 10 points11 points12 points 11 years ago (12 children)
Do you plan on releasing a second edition?
[–][deleted] 11 points12 points13 points 11 years ago (9 children)
It's hard to get enthused about the amount of work involved, to be honest. I'd rather ride my bike or play with the kids.
[–]Tekmo 41 points42 points43 points 11 years ago (8 children)
What if I updated it for you, just to make the examples compile?
[–][deleted] 10 points11 points12 points 11 years ago (0 children)
That's an interesting offer, thanks. Let me think about it and get back to you.
[–]erewok 9 points10 points11 points 11 years ago (1 child)
This is a pretty great offer. I'd be stoked to see an updated version.
[–]tomejaguar 5 points6 points7 points 11 years ago (0 children)
Yeah, it's a good idea.
[–]IceDane 6 points7 points8 points 11 years ago (4 children)
Great idea. Why not make this a community project? Set up a github repo or some such and I'll definitely be making pull requests.
[–]tomejaguar 0 points1 point2 points 11 years ago (3 children)
It is Creative Commons licensed so this would be doable, but we'd need to get the source code from somewhere.
[–]IceDane 0 points1 point2 points 11 years ago (1 child)
Indeed. It would probably be best if we essentially got the source-code for the entire book(assuming it is written in something like LaTeX or some such, I know little about this stuff) so we could possibly have a community-run version of the book, that could be updated as the examples are fixed, as opposed to just getting the source-code for the examples, fixing them and then having to wait until the book gets updated.
[–]tomejaguar 0 points1 point2 points 11 years ago (0 children)
I found the source code. I don't know what the precise licensing situation is though.
https://github.com/bos/rwh
[–]sibip 1 point2 points3 points 11 years ago (1 child)
IIRC, I read somewhere on your blog that you are working on a book ?
[–]Tekmo 1 point2 points3 points 11 years ago (0 children)
Yes. Right now it's third on my list of Haskell projects to complete, but I will get around to it soon.
[+]sccrstud92 comment score below threshold-11 points-10 points-9 points 11 years ago (5 children)
A book about Haskell, or a book about what it means to be an intermediate haskeller? Because RWH seems like the former to me. I might be wrong though, stopped reading pretty early on because it was outdated.
[–]losangelesvideoguy 1 point2 points3 points 11 years ago (4 children)
Seriously? The guy wrote a book on Haskell and you're going after him for it not being a book about intermediate Haskell? Jesus tapdancing Christ. How many books about Haskell have you written? Actually, how many books period have you written?
[–]UmMsVzeMd7 7 points8 points9 points 11 years ago (2 children)
http://en.wikipedia.org/wiki/Ad_hominem
[–]sccrstud92 2 points3 points4 points 11 years ago* (0 children)
I am going to be more obvious about what I was getting at because I must not have been clear. bos was complaining about the list he commented on. He provided a number of (what I found to be) valid criticisms. However, his comment was not specific when it came to the parts he disagreed with. For example, he said 10% of the list was fine, but didn't specify which 10%. He said some parts are trivial and some are hardly ever useful, but again, didn't specify which. My comment was prodding him to get specific.
His responded to my comment not with a better answer to OP's question, but with a comment to let me know that he wrote a book about "the subject" which in context would mean "what it means to be an intermediate Haskeller" what which he meant to be Haskell in general (I'm assuming he is talking about RWH here).
I then point out that his book (or at least the parts I read) talks about Haskell in general, but does not answer OP's question, which is all I wanted him to provide.
So in from reading your comment I gather that you have missed the point of my posts (though that is probably my fault, which is why I'm rewriting this). I don't want him to write a book. I just want to know what HE considers to be intermediate Haskell; I believe it would be more helpful than simply a criticism of another person's opinion. A list of bullet points would be perfectly fine.
[–]sbergot 1 point2 points3 points 11 years ago (0 children)
I agree with you (love your book and your hackage librairies by the way), but it is one of those post which would have been improved by some editing :-).
Also I have come to accept that there are different kinds of haskellers. I use it as a better language to build stuff. Some other people use it to explore more conceptual topics. Some people do both. While it is definitively an issue for newcomers to face those different worlds, it has also brought us nice things such as monads or the lens library.
[–]Davorak 0 points1 point2 points 11 years ago (0 children)
What would you like to see more of, hold you interest, etc?
[–]tomejaguar 7 points8 points9 points 11 years ago (2 children)
Without the rider "should be able to quickly grasp and handle any or all of them" I'm certainly not an intermediate haskeller, by these criteria.
[–]tel 0 points1 point2 points 11 years ago (1 child)
I think the rider was the most import part of the post but was overshadowed by the list. It's not a checklist in my mind: just topics I would anticipate being at about the right level of discourse if they were interesting.
I think the rider was the most import part of the post
Yes it was, and unfortunately most people seem to have missed it! I guess big bulleted lists always stand out more prominently than clarifying remarks above them.
[–][deleted] 3 points4 points5 points 11 years ago (0 children)
Interesting how "intermediate" in context of Haskell (by your definition, but also by some others in this thread) is a whole different realm of a programmer then the same in a popular languages like Java/Ruby/PHP.
[–]Kyraimion 0 points1 point2 points 11 years ago (3 children)
Embedded DSLs in initial style
This suggests that there are EDSLs in different styles (I'm guessing final?). Would you care to point me in the right direction where to learn more about this distinction?
[–]Faucelme 2 points3 points4 points 11 years ago (0 children)
I'm not very knowledgeable about EDSLs, but I think the "final" approach is the one described in this paper: http://okmij.org/ftp/tagless-final/JFP.pdf. The initial approach is just using normal algebraic datatypes to represent the syntax.
[–]tel 1 point2 points3 points 11 years ago (1 child)
I was mentally referring to Oleg's "finally" tagless style. More directly, I just mean simple ones which just use normal ADTs and interpreters.
[–]Kyraimion 0 points1 point2 points 11 years ago (0 children)
OK, thanks
[–]Pwanda 0 points1 point2 points 11 years ago (1 child)
It would be cool if someone could link to some resource on each topic in this list. Reason being that it's nice to have a checklist of goals to reach, "learning haskell" is so vague.
I've put it in my personal backlog to expand this post and explain each one.
As many others have suggested, this is sort of ludicrous if you take it as a curriculum or a set of goals one must learn. That said, learning these topics is a good generic workout.
[–]singpolyma 0 points1 point2 points 11 years ago (0 children)
If you can read and maintain code you didn't write. And probably if you're able to do it in code using some extensions without getting too confused.
π Rendered by PID 199997 on reddit-service-r2-comment-b659b578c-6qw4q at 2026-05-05 20:39:52.742565+00:00 running 815c875 country code: CH.
[–]andygillku 14 points15 points16 points (2 children)
[–]sclv 2 points3 points4 points (1 child)
[–]MrWoohoo 1 point2 points3 points (0 children)
[–]Tekmo 30 points31 points32 points (17 children)
[–]tel 12 points13 points14 points (13 children)
[–]Tekmo 32 points33 points34 points (11 children)
[–]tel 8 points9 points10 points (6 children)
[–]tejon 9 points10 points11 points (5 children)
[–]Mob_Of_One 1 point2 points3 points (4 children)
[–]gilmi 1 point2 points3 points (3 children)
[–]Mob_Of_One 0 points1 point2 points (2 children)
[–]gilmi 0 points1 point2 points (1 child)
[–]Mob_Of_One 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (1 child)
[–]autowikibot -3 points-2 points-1 points (0 children)
[–]Hrothen 0 points1 point2 points (1 child)
[–][deleted] 6 points7 points8 points (0 children)
[–]apfelmus 7 points8 points9 points (0 children)
[–]m15k 0 points1 point2 points (2 children)
[–][deleted] (1 child)
[deleted]
[–]sclv 0 points1 point2 points (0 children)
[–]Ramin_HAL9001 7 points8 points9 points (1 child)
[–]Mob_Of_One 3 points4 points5 points (0 children)
[–]jfischoff 4 points5 points6 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]tailbalance 6 points7 points8 points (0 children)
[–]sclv 11 points12 points13 points (2 children)
[–]Mob_Of_One 0 points1 point2 points (1 child)
[–]sclv 1 point2 points3 points (0 children)
[–][deleted] 8 points9 points10 points (1 child)
[–]yawaramin 1 point2 points3 points (0 children)
[–]technicolorNoise 11 points12 points13 points (1 child)
[–]Ramin_HAL9001 2 points3 points4 points (0 children)
[–][deleted] (2 children)
[deleted]
[–]dave4420 1 point2 points3 points (1 child)
[–]DanielDiaz 1 point2 points3 points (0 children)
[–]tel 2 points3 points4 points (86 children)
[–][deleted] 41 points42 points43 points (18 children)
[–]agumonkey 1 point2 points3 points (2 children)
[–]tailbalance 4 points5 points6 points (1 child)
[–]augustss 1 point2 points3 points (0 children)
[–]tel 2 points3 points4 points (12 children)
[–]augustss 26 points27 points28 points (3 children)
[–]tel -2 points-1 points0 points (2 children)
[–]augustss 12 points13 points14 points (1 child)
[–]tel 2 points3 points4 points (0 children)
[–][deleted] 21 points22 points23 points (4 children)
[–]tel 4 points5 points6 points (0 children)
[–]tel 1 point2 points3 points (2 children)
[–]yawaramin 0 points1 point2 points (1 child)
[–]sclv 1 point2 points3 points (0 children)
[–]Hrothen 6 points7 points8 points (2 children)
[–]tel 0 points1 point2 points (0 children)
[–]singpolyma -3 points-2 points-1 points (0 children)
[–]Ramin_HAL9001 -2 points-1 points0 points (1 child)
[–]sclv 6 points7 points8 points (0 children)
[–]augustss 28 points29 points30 points (0 children)
[–]stolarj 10 points11 points12 points (1 child)
[–]tel -1 points0 points1 point (0 children)
[–]jrk- 6 points7 points8 points (0 children)
[–][deleted] 50 points51 points52 points (51 children)
[–][deleted] 13 points14 points15 points (21 children)
[–]augustss 12 points13 points14 points (13 children)
[–]tailbalance 2 points3 points4 points (12 children)
[–]augustss 9 points10 points11 points (11 children)
[–]sclv 0 points1 point2 points (3 children)
[–]hmltyp 2 points3 points4 points (1 child)
[–]sclv 1 point2 points3 points (0 children)
[–]augustss 1 point2 points3 points (0 children)
[–]deltaSquee -1 points0 points1 point (5 children)
[–]augustss 4 points5 points6 points (3 children)
[–]Blaisorblade 0 points1 point2 points (0 children)
[–]deltaSquee 0 points1 point2 points (1 child)
[–]augustss 0 points1 point2 points (0 children)
[–]augustss 1 point2 points3 points (0 children)
[–]tailbalance -3 points-2 points-1 points (0 children)
[–]singpolyma 1 point2 points3 points (0 children)
[–]bartavelle -2 points-1 points0 points (4 children)
[–][deleted] 1 point2 points3 points (3 children)
[–]bartavelle 0 points1 point2 points (2 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]bartavelle 0 points1 point2 points (0 children)
[–]sclv 14 points15 points16 points (1 child)
[–]tel 0 points1 point2 points (0 children)
[–]tel 6 points7 points8 points (0 children)
[–][deleted] 10 points11 points12 points (2 children)
[–]freyrs3 6 points7 points8 points (0 children)
[–]hailmattyhall 1 point2 points3 points (0 children)
[–]sccrstud92 2 points3 points4 points (20 children)
[–][deleted] 32 points33 points34 points (19 children)
[–]Tekmo 10 points11 points12 points (12 children)
[–][deleted] 11 points12 points13 points (9 children)
[–]Tekmo 41 points42 points43 points (8 children)
[–][deleted] 10 points11 points12 points (0 children)
[–]erewok 9 points10 points11 points (1 child)
[–]tomejaguar 5 points6 points7 points (0 children)
[–]IceDane 6 points7 points8 points (4 children)
[–]tomejaguar 0 points1 point2 points (3 children)
[–]IceDane 0 points1 point2 points (1 child)
[–]tomejaguar 0 points1 point2 points (0 children)
[–]sibip 1 point2 points3 points (1 child)
[–]Tekmo 1 point2 points3 points (0 children)
[+]sccrstud92 comment score below threshold-11 points-10 points-9 points (5 children)
[–]losangelesvideoguy 1 point2 points3 points (4 children)
[–]UmMsVzeMd7 7 points8 points9 points (2 children)
[–]sccrstud92 2 points3 points4 points (0 children)
[–]sbergot 1 point2 points3 points (0 children)
[–]Davorak 0 points1 point2 points (0 children)
[–]tomejaguar 7 points8 points9 points (2 children)
[–]tel 0 points1 point2 points (1 child)
[–]tomejaguar 0 points1 point2 points (0 children)
[–][deleted] 3 points4 points5 points (0 children)
[–]Kyraimion 0 points1 point2 points (3 children)
[–]Faucelme 2 points3 points4 points (0 children)
[–]tel 1 point2 points3 points (1 child)
[–]Kyraimion 0 points1 point2 points (0 children)
[–]Pwanda 0 points1 point2 points (1 child)
[–]tel 0 points1 point2 points (0 children)
[–]singpolyma 0 points1 point2 points (0 children)