diff --git a/src/posts/0010-Haskell-Now/index.org b/src/posts/0010-Haskell-Now/index.org index 317ab29..3a8ae5c 100644 --- a/src/posts/0010-Haskell-Now/index.org +++ b/src/posts/0010-Haskell-Now/index.org @@ -72,24 +72,22 @@ Our main rule is to use as few features of a programming language as possible to achieve your goal. This is a kind of merge between minimalism and pragmatism that in the end provide a tremendous amount of benefits. -This is why, even if I like to play with the latest Haskell trendy feature, +This is why, even if I like to play with the latest Haskell trendy features, I generally program without those. With just a very few amount of Haskell features you will already be in enviromnent with a *lot* of benefits as compared to many programming languages. -So enough talk, here is my old article new again, with just a few changes -and cleanup. -Also, I will try to go a bit further than before. -By the end of this article you should be autonomous if you want to create a -new product in Haskell. -Be it a simple command line tool or a web application. -If you are going toward GUI programming, this is a whole subject on its own -and I do not really mention it. +So enough talk, here is my old article updated with a few changes and +cleanups. +I also added a section about how to create a new project template with nix. -My .02 for "Single Page Application" choice is to use Purescript with the -halogen framework. -Purescript is really awesome as well as halogen. +I will try to write other articles about how to write a real program in +Haskell. +I tried to add those to this already long article, but, it occurs to be +more work than expected. +So I preferred stop at this point for now and provide separate articles in +the future related to Haskell application development. #+end_quote * Introduction @@ -162,7 +160,7 @@ The article contains five parts: - More on infinite tree; a more math oriented discussion about infinite trees -** Helpers :noexport: +** Helpers :noexport: :PROPERTIES: :CUSTOM_ID: helpers :END: @@ -2306,7 +2304,7 @@ After a bit of experience, most Haskellers can avoid memory leaks naturally. * Dive into the impure :PROPERTIES: -:CUSTOM_ID: hell-difficulty-part +:CUSTOM_ID: dive-into-the-impure :END: Congratulations for getting so far! @@ -3466,29 +3464,23 @@ monads[fn:7]! * Start swimming :PROPERTIES: -:CUSTOM_ID: difficulty--hell +:CUSTOM_ID: start-swimming :END: If you come this far, you can really congratulate yourself. This is already what I would personnaly call a tremendous achievement. -From now on, this is more or less a free space. -You should understand the essence of the Haskell language. -But now, to really be able to create something useful, you will need to -also understand not only the language but the ecosystem around it. - This chapter will focus on how to build applications with Haskell. How to use libraries inside your project. -And perhaps provide a few pointers to start to organize your projects. Note application development is easier to introduce than library development. Mostly because dependency management will be a lot easier. -#+begin_notes -If you find those part too hard, do not feel discouraged though, most -Haskeller I know had to dig into Haskell at least two or three times before -it really "clicked" for them. -#+end_notes +I first intended to provide a lot more informations about how to create a +project and provide a few project examples. +But it occurs this is harder than I first expected. +So I will just provide the introduction about how to create a starting +point with many pointers for other possible options. ** Start a new project :PROPERTIES: @@ -4076,46 +4068,21 @@ test-suite my-app-test You can download the final cabal file: [[file:my-app/my-app.cabal][my-app.cabal]] -** Command line application +* Conclusion :PROPERTIES: -:CUSTOM_ID: command-line-application +:CUSTOM_ID: conclusion :END: -One of the simplest while still useful command line utility I can think of -is a simple strong password generator. +This was a re-written fast Haskell tutorial. +I will certainly complete this with more advanced tutorial explaining how +to write a few Haskell projects. -*** Password Generator -:PROPERTIES: -:CUSTOM_ID: password-generator -:END: - -Create a new project named =hspwg= (HaSkell PassWord Generator). -If you do not want to go through the process of creating a new project form -scratch again you can download an archive here: [[file:hspwg.init.tar.gz]]. - -Let us write the most basic application possible. -Edit the file =src/Main.hs= with: - -#+begin_src haskell - -#+end_src - -** Web Application -:PROPERTIES: -:CUSTOM_ID: web-application -:END: - -* Difficulty: Hell -:PROPERTIES: -:CUSTOM_ID: difficulty--hell-be9a -:END: - -This part will be for advanced Haskell code. +Thanks for reading it. * Thanks - :PROPERTIES: - :CUSTOM_ID: thanks - :END: +:PROPERTIES: +:CUSTOM_ID: thanks +:END: Thanks to [[http://reddit.com/r/haskell][=/r/haskell=]] and [[http://reddit.com/r/programming][=/r/programming=]]. Your comment were most than welcome.