Comments (5)
Thanks a lot for your detailed report, Gábor!
The main lesson that I take away is that the package documentation / description should provide more context instead of just referring to someplace else. My assumption was always that people would read "The Operational Monad Tutorial" first to get some intuition and then go to the package, but that is apparently not the case. There's probably no way around reading the tutorial, but that doesn't mean that the package description should not provide some context.
But if I'm someone who doesn't already know what this is, and isn't definitely sure that it's something I want to use, then the amount of effort I'm going to be willing to expend to figure it out isn't going to be limitless.
That's a very good point! When writing a tutorial, I always imagine that the reader has a severe attention deficit, so I have to state the point simply and using few words. Of course, readers are not stupid; it's just they don't necessarily have much attention/effort to spare at that moment. The same rule applies to package documentation, but organization is much trickier for me as there are many more entry points.
from operational.
I have uploaded a new version to hackage that hopefully improves the documentation. Would you be willing to take a quick look, Gábor?
from operational.
Much nicer, thank you!
A few areas of potential improvement:
- In the runCustomMonad section in the overview, I think it would be helpful to have some actual code in the 'Return a' and 'AskUserInput :>>= k' cases, rather than just '...', to demonstrate what sort of thing you would do with the 'a' and 'k' values you got. Obviously the functions used there wouldn't be implemented anywhere, only to illustrate. Then in the explanation underneath it would mention the other things you could have done instead (as now), that you can write different run/interpret functions that do different things, etc.
- If it's not too huge, it would be nice to have the definition of the Stack type included in the stack machine example.
- The constructors for ProgramViewT could use some documentation, i.e. what they represent and what the various parts of them are.
- If I'm not mistaken the list monad transformer example should be under viewT, not liftProgram.
I think that's all. Thanks!
from operational.
I have implemented your suggestions and uploaded a new version.Thanks! Let me know if there is anything else that I should improve.
from operational.
Also not that the result of the run function does not need to be a monad at all.
The first not should be note, and it might be more correct to say "in a monad". That's all for now :)
from operational.
Related Issues (17)
- MonadProgram typeclass for nicer transformer stacks HOT 2
- helper function interpretWithMonadT HOT 4
- Need ProgramT constructors to write other lifting instances HOT 9
- mapProgramT HOT 2
- Pattern Synonyms for `Return` and `:>>=` HOT 7
- ProgramT and ProgramViewT are not really GADTs HOT 1
- Issues with `.cabal` file HOT 2
- Add interpretWithMonadT HOT 1
- Does not build with stackage nightly-2021-06-21 (ghc-9.0.1) HOT 1
- Hackage release with 9.0.1 support HOT 3
- PoorMansConcurrency Example doesn't compile HOT 2
- 0.2.4.0 fails to build with GHC-7.8 and older HOT 3
- Compatibility with mtl-2.3 HOT 2
- Add evalRandTIO HOT 3
- Broken links in documentation HOT 1
- MonadTransControl or MonadBaseControl instances HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from operational.