The choice to make Project polymorphic seems a bit odd to me. I don't feel that Project is inherently polymorphic and making it so simply to get auto-derived instances for Functor, Foldable and Traversable doesn't seem quite right. I feel like this blurs the meaning of Project. What is a `Project Report`? It seems to be neither a Project nor a Report. The type says it's a Project but without an ID, I'd argue that it's no longer a Project. If the desire was to be able to maintain the structure of a ProjectGroup, I might have simply transformed a ProjectGroup to a Rose Tree where the polymorphic value was a tuple of Project and Report. Or, since the client only wanted to see reporting on a per-Project basis, you could fold over Project to create a Map of Project to Report thereby discarding the tree structure of a ProjectGroup.
I'm coming from Haskell Weekly and so far I find these very useful, will be watching for more!
These videos are the type of videos people tumb up before watching.
Man this is a great tutorial! You are talented! Thank you
Wow just found your channel! This is awesome! Great work! :) Subscribed.
Awesome, more haskell power pls.
Thank you for the videos
nice and smooth
Nice. LIke your way of thinking about making data type polymorphic.
Cool!
What editor do you use?
You'll find the answer in the FAQ: haskell-at-work.com/about.html#faq :)
The choice to make Project polymorphic seems a bit odd to me. I don't feel that Project is inherently polymorphic and making it so simply to get auto-derived instances for Functor, Foldable and Traversable doesn't seem quite right. I feel like this blurs the meaning of Project. What is a `Project Report`? It seems to be neither a Project nor a Report. The type says it's a Project but without an ID, I'd argue that it's no longer a Project.
If the desire was to be able to maintain the structure of a ProjectGroup, I might have simply transformed a ProjectGroup to a Rose Tree where the polymorphic value was a tuple of Project and Report. Or, since the client only wanted to see reporting on a per-Project basis, you could fold over Project to create a Map of Project to Report thereby discarding the tree structure of a ProjectGroup.
Would it better if it was called ProjectStructure/ProjectTree/something-like-that instead? Just curious