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
1 changed files with 27 additions and 60 deletions

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.
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.