Haskell – Functional programming

As you may have noticed I study computer science and therefore I would like to write some things regarding the studies on my blog. Of course the focus is mainly music and environmental but technology is also a big part of our life so… Here it comes.

Haskell is a programming language that is functional and my experience of programming is, before entering the program, mainly Java, an imperative language. And also a lot of webbprogramming as a hobby but it is not real programming in this sense.

Functional programming can shortly be described as programming with no side-effects.

But even side effects are possible since you for example will sometime need input and output, so called I/O. This type of programming in Haskell is called inpure.

This picture I found on Internet makes me a little bit sceptical about I /O monad:
image

(pic from Haskell guide)

What sites you should check out when programming with Haskell :

  • Hoogle. Oh yes, stop googling and start hoogling !
  • Learn you a Haskell. An online book about Haskell. Learn you a Haskell for great good. Well, well. I’m just doing it to pass the course ūüôā The examples in the book are ethically miserable but you can learn a lot from here.
  • Haskell Wiki. The how to guides of Haskell.
  • A Haskell guide here.

Have you used another site that should be on the list? Let me know and I will update!

The fun of Haskell

What I find intriguing about Haskell, as my first functional programming language is how compact the expressions can be. Following syntactic structures are very cool:

Pattern matchning

A simple and very clarifying example is lucky seven:

lucky :: (Integral a) => a -> String
lucky¬†7¬†=¬†“LUCKY¬†NUMBER¬†SEVEN!”
lucky¬†x¬†=¬†“Sorry,¬†you’re¬†out¬†of¬†luck,¬†pal!”

The example is from LearnyouaHaskell.

 guards

bmiTell :: (RealFloat a) => a -> String  bmiTell bmi     
| 
bmi¬†<=¬†18.5¬†=¬†“Underweight”
|¬†bmi¬†<=¬†25.0¬†=¬†“Normalweight”
|¬†bmi¬†<=¬†30.0¬†=¬†“Overweight”
|¬†otherwise¬†¬†¬†=¬†“Check your input again.”

The example is from LearnyouaHaskell and the program feedback is modified because the original is hideous (unethical), supposedly fun but I think they should rethink it. Whatever, check the cool guards!

I/O

The input/output (I/O) of Haskell is called inpure programming, since it is programming with side effects.

The classic “Hello world!” in Haskell:

main¬†=¬†putStrLn¬†“hello,¬†world”

Learn you a good Haskell has a chapter with Input and Output.

Is Haskell my new passion in life?

No, actually but I am happy to have experienced it. I still would say I totally prefer imperative programming like Java, it makes more sense to me.

//

Publicerar detta inlägg bara på engelska eftersom alla sidor som ovan nämns är på engelska och även vår undervisning.

Advertisements

Lider du av teknik-handlingsf√∂rlamning? – technology unable?

Du fastnade av den här rubriken förstår jag. För när det gäller teknik känner du dig tafatt. Nämen, det är ju inget för dig, tänker du. Du är helt enkel teknik-handlingsförlamad. Det kanske är en sjukdom tom. Det är så synd om dig.

Haha, driver du med mig? Det finns ingenting som heter att du är teknikhandlingsförlamad och nej, det finns ingen sjukdom som gör att vissa inte kan lära sig teknik!

Det finns en sak: att du har best√§mt dig f√∂r att inte f√∂rs√∂ka l√§ra dig eller att du inte kan. “Jag kan inte, jag f√∂rst√•r mig inte p√• det h√§r.” Det √§r den typen av tankar som hindrar dig fr√•n att l√§ra dig att anv√§nda olika saker.

Bergvik_fabrik

Men vad är teknik? Jag pratar inte om något som ingenjörer sysselsätter sig om dagarna utan de saker och apparater vi har runt omkring oss eller att använda en dator. I många jobb krävs det att man arbetar med en dator iaf till viss del. Jag har många gånger mött personer som oavsett ålder tar mentalt avstånd från dessa olika saker med den typen av ursäkter. Jag känner också till personer som kvickt har tagit till sig olika moderniteter trots s.k hög ålder(i detta sammanhang).

När de första moderniteterna kom så måste många på liknande sätt tyckt att det var så oehört komplicerat. Idag kan du säkerligen använda micro, hushållsmaskiner och bankkort mm. Hur har du lärt dig detta? Kanske du fick klura, kanske det föll sig naturligt eller någon fick visa. Om du redan då bestämt dig för att du inte kan trycka på knappar så lever du idag på en 1800-hundratalsgård. Tycker du jag är taskig? Jag tycker du behöver höra dessa sanningens ord.

“Alla kan l√§ra sig hantera teknik”

Ja, detta blir uppstarten på min kategori som heter social media och som kommer beröra olika program, nätverk och appar som jag tycker är bra.

//
Hey you, don’t come here and tell be that technology is beyond your capacity! No, it’s not a sickness and that some people just can’t learn new things. It is a concept that you somehow convinced yourself of that “I cannot learn this technology stuff”. And I am not here to pity you!

There’s no such thing as you cannot learn, but there is another thing: you have already made up your mind and that forbids yourself to learn.

With technology I mean the every day things that we have or f.e computers that so many have access to in our work and that we learned. But I ‘ve heard so many (of different ages) distance themselves from those things with all kinds of excuses. And others, although considered of high age in this matter, that have learned and adapted.

In the beginning of this technology era, don’t you think people took a step back from the micro, the oven, the bankcard? And how come you use them now? Because you learned in one or another way. Otherwise, I’m sorry, did you say you live in the 1800’s on the countryside, no water, no electricity?

So mark the words “Everybody can learn to use technology”
And welcome to my new category of social media!