Updated, removed projects sections.

This commit is contained in:
Yann Esposito (Yogsototh) 2020-01-03 09:34:31 +01:00
parent f95b37c771
commit bd111cf45c
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646

View file

@ -72,24 +72,22 @@ Our main rule is to use as few features of a programming language as
possible to achieve your goal. possible to achieve your goal.
This is a kind of merge between minimalism and pragmatism that in the end This is a kind of merge between minimalism and pragmatism that in the end
provide a tremendous amount of benefits. 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. I generally program without those.
With just a very few amount of Haskell features you will already be in 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 enviromnent with a *lot* of benefits as compared to many programming
languages. languages.
So enough talk, here is my old article new again, with just a few changes So enough talk, here is my old article updated with a few changes and
and cleanup. cleanups.
Also, I will try to go a bit further than before. I also added a section about how to create a new project template with nix.
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.
My .02 for "Single Page Application" choice is to use Purescript with the I will try to write other articles about how to write a real program in
halogen framework. Haskell.
Purescript is really awesome as well as halogen. 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 #+end_quote
* Introduction * Introduction
@ -162,7 +160,7 @@ The article contains five parts:
- More on infinite tree; a more math oriented discussion about - More on infinite tree; a more math oriented discussion about
infinite trees infinite trees
** Helpers :noexport: ** Helpers :noexport:
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: helpers :CUSTOM_ID: helpers
:END: :END:
@ -2306,7 +2304,7 @@ After a bit of experience, most Haskellers can avoid memory leaks naturally.
* Dive into the impure * Dive into the impure
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: hell-difficulty-part :CUSTOM_ID: dive-into-the-impure
:END: :END:
Congratulations for getting so far! Congratulations for getting so far!
@ -3466,29 +3464,23 @@ monads[fn:7]!
* Start swimming * Start swimming
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: difficulty--hell :CUSTOM_ID: start-swimming
:END: :END:
If you come this far, you can really congratulate yourself. If you come this far, you can really congratulate yourself.
This is already what I would personnaly call a tremendous achievement. 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. This chapter will focus on how to build applications with Haskell.
How to use libraries inside your project. 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. Note application development is easier to introduce than library development.
Mostly because dependency management will be a lot easier. Mostly because dependency management will be a lot easier.
#+begin_notes I first intended to provide a lot more informations about how to create a
If you find those part too hard, do not feel discouraged though, most project and provide a few project examples.
Haskeller I know had to dig into Haskell at least two or three times before But it occurs this is harder than I first expected.
it really "clicked" for them. So I will just provide the introduction about how to create a starting
#+end_notes point with many pointers for other possible options.
** Start a new project ** Start a new project
:PROPERTIES: :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]] You can download the final cabal file: [[file:my-app/my-app.cabal][my-app.cabal]]
** Command line application * Conclusion
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: command-line-application :CUSTOM_ID: conclusion
:END: :END:
One of the simplest while still useful command line utility I can think of This was a re-written fast Haskell tutorial.
is a simple strong password generator. I will certainly complete this with more advanced tutorial explaining how
to write a few Haskell projects.
*** Password Generator Thanks for reading it.
: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 * Thanks
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: thanks :CUSTOM_ID: thanks
:END: :END:
Thanks to [[http://reddit.com/r/haskell][=/r/haskell=]] and [[http://reddit.com/r/programming][=/r/programming=]]. Thanks to [[http://reddit.com/r/haskell][=/r/haskell=]] and [[http://reddit.com/r/programming][=/r/programming=]].
Your comment were most than welcome. Your comment were most than welcome.