3 ms·
Not sure if "Architecture" is the right word here. More like, "How I built a Real World Haskell Application". When I read about how to "architect" something I'
by ixmatus 12y ago
Not sure if "Architecture" is the right word here. More like, "How I built a Real World Haskell Application".
When I read about how to "architect" something I'm think about how to structure my Cabal file (a common pattern in my apps is a "library" of types, parsers, and utilities that are jointly used by multiple executables of the same program). I also think about structuring my tests, the naming and structure of module directory hierarchies, maybe also how to structure the program around the Main entry point.
I think there may also be a more interesting couple of "sub-articles" in this article: "How I built a server daemon in Haskell" and "How I built a GUI client in Haskell".
- Spearchucker 12y agoAgreed. I get this a lot, so have definitions ready - http://www.bredemeyer.com/whatis.htm http://www.bredemeyer.com/whatis.htm. If architecture in the computing world consists of a system’s elements; the relationships between those elements; the attributes of the elements; and the attributes of the relationships, then architecture is not a timeline, process or stack description.
- platz 12y agoalso: architecture implies that you had a variety of solutions to choose from, and that you made a choice from one of the possible solutions and are able to reason and talk about that choice, the pros and cons, etc. If you can't list the pros and cons relative to the other choices, I don't really consider that architecture - that's just doing what's familiar.
- tormeh 12y agoWhat if it's the first time you do something? You just figured something out and thought it looked OK. Isn't that architecture?
- ixmatus 12y agoNot quite, I would call that "solution".
- tormeh 12y agoAlso when you have code block, data flow and control flow diagrams? How well thought out does something have to be to be architecture?
- ixmatus 12y agoAn Architecture, to me, is an established and idiomatic process of applying solutions to produce a novel output. In the case of a computer program the "architecture" should be extremely well-thought out, idiomatic, and using established practices to produce a program that is easy to maintain, understand, and test. I don't believe you need diagrams but in the case of Haskell, the types (if you design type-first) serve as one piece of the blueprint that is to become your program, your cabal file, directory structure, documentation (both user docs and API docs), and tests are all part of that blueprint.