Talk:Haskell/Arrow tutorial

Too much at once
This references many things that were never introduced up to this point. It needs to be rewritten and/or more intro to some of these concepts added or orders changed. Backfromquadrangle (discuss • contribs) 05:30, 16 May 2014 (UTC)


 * It is fast-paced for sure, but a hands-on tutorial like this one shouldn't be slowed down too much. The hope is that readers who find the explanations complicated can hop over to the tutorial, get it working and have an insight. That will probably make more sense once Understanding Arrows is fixed, as then it will actually helpful to read both chapters in parallel.--Duplode (discuss • contribs) 08:50, 16 May 2014 (UTC)


 * The problem isn't the pace, the problem is it introduces a number of things that were never mentioned in the book previously. What is  and  ? What is   or the fanout operator? These things need to be explained. Maybe the content of both chapters should be merged if the later chapter is necessary for properly understanding the content of the earlier chapter. Trainman261 (discuss • contribs) 10:38, 18 May 2024 (UTC)

Circuit's dot function infinitely recursive?
Sorry if this is a dumb question or if this is the wrong place to ask, but this looks inifinitely recursive to me:

(.) = dot where (Circuit cir2) `dot` (Circuit cir1) = Circuit $ \a -> let (cir1', b) = cir1 a               (cir2', c) = cir2 b            in  (cir2' `dot` cir1', c)

Maybe there is a good reason why this is OK and useful. If so, it would be nice to have a comment about that.


 * It's a fine question, and this is the right place for it :) This definition doesn't need a base case because the new,  , will only be produced once the original   is given an   input. The number of steps that will be ran depends on how much data you feed the circuit with. In the   example in the next section, for instance, that amounts to six values, and thus six steps. Note that you could pass an infinite list to   and usefully get an infinite stream of results. Cheers, Duplode (discuss • contribs) 20:06, 13 February 2021 (UTC)

Code instructions are omitted
I've noticed some code instructions are omitted. For instance:
 * First, we give a language pragma (omitted) to enable the arrow do notation in the compiler

This should not be omitted, since it is vital in compiling the file that the chapter explicitly states should be written. I found  from StackOverflow, and it worked for me, but I'm also just a noob trying to learn this.

Also, for intermittent compiling, which the chapter also requires,  at the top of the file leads to a compilation error, since main is not defined yet. AFAIK this should only be added later.

Feel free to let me know if my solutions are correct, then I could add them to the chapter - I just know too little about Haskell to be sure it's correct. Trainman261 (discuss • contribs) 10:38, 18 May 2024 (UTC)