Πως να ξεκινήσετε με την Haskell

...ασύγχρονα μαθήματα από τους guru της κοινότητας

Συντονιστής: the_eye

Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό linuxs » 01 Φεβ 2011, 22:38

Καταρχήν να κάνω μια μικρή εισαγωγή γιατί η γλώσσα haskell και γενικά ο συναρτησιακός προγραμματισμός, δεν είναι τόσο γνωστός όσο οι άλλοι τρόποι. Η γλώσσα haskell λοιπόν, ανήκει στις συναρτησιακές γλώσσες. Αυτό σημαίνει πως αντί για compiler που ίσως χρησιμοποιείτε για την C, C++ κλτ θα πρέπει να χρησιμοποιήσετε interpreter(διερμηνέας). Δείτε εδώ http://en.wikipedia.org/wiki/Interpreter_(computing)περισσότερα για το τι είναι διερμηνέας. Κάτι άλλο που θέλω να επισημάνω είναι ότι, προγράμματα τα οποία προσθέτουν δύο αριθμούς για παράδειγμα, ενώ στην C και σε άλλες γλώσσες γράφονται σε 5-10 γραμμές (ανάλογα το πρόγραμμα), στην haskell υπάρχει το καλό οτι γράφονται σε 2-3 γραμμές. Γενικότερα είναι πολύ απλή από θέμα προγραμματισμού αλλά ίσως σας φανεί πολύπλοκη στην αρχή.

Σε Linux περιβάλλον...

Ανοίξτε ένα τερματικό και κάντε εγκατάσταση τον διερμηνέα(interpreter) hugs τρέχοντας το παρακάτω:
Κώδικας: Επιλογή όλων
sudo apt-get install hugs

(σε περίπτωση που σας ρωτήσει yes/no πληκτρολογήστε "yes")

Αφού γίνει η εγκατάσταση του hugs είστε σχεδόν έτοιμοι.

Ο παρακάτω κώδικας είναι ένα παράδειγμα για να δείτε πως περίπου δουλέυει η haskell. Μπορείτε να αντικαταστήσετε το κώδικα με δικό σας και να δουλέψετε ανάλογα. Κάντε copy/paste τον ακόλουθο κώδικα σε έναν editor όπως gedit, nedit, bluefish editor κτλ.
Κώδικας: Επιλογή όλων
-- Add two integer numbers given
add :: Integer -> Integer -> Integer
add 0 y = y
add x 0 = x
add x y = x+y


Μετά, αποθηκεύστε το αρχείο με κατάληξη .hs στο home folder σας(έχει σημασία που το αποθηκεύετε).
Ανοίξτε ένα τερματικό(terminal) και βρείτε το αρχείο που αποθηκεύσατε(σε περίπτωση που έχετε ορίσει άλλο home folder).
Ανοίξτε το hugs πληκτρολογώντας:
Κώδικας: Επιλογή όλων
hugs

(Αυτό που κάναμε είναι να ανοίξουμε τον hugs απο το ίδιο σημείο που είναι και το αρχείο γιατί, τα αρχεία που μπορούν να φορτωθούν(με :load) θα πρέπει να βρίσκονται στον ίδιο κατάλογο)

Φορτώστε το πρόγραμμα πληκτρολωγώντας
Κώδικας: Επιλογή όλων
:l όνομα_αρχείου.hs


Το μόνο που μένει τώρα έιναι να πληκτρολογήσετε το όνομα της συνάρτησης (στο παράδειγμά μας add) και δίπλα, δύο ορίσματα(δηλαδή ποιούς αριθμούς να προσθέσει).
πχ.
Κώδικας: Επιλογή όλων
add 4 7

...το αποτέλεσμα θα πρέπει να είναι 11.

Μόλις πραγματοποιήσατε τα πρώτα βήματα προς τον συναρτησιακο προγραμματισμό...



H επίσημη σελίδα του hugs είναι αυτή: http://www.haskell.org/hugs/
και η επίσημη σελίδα της haskell είναι αυτή: http://www.haskell.org/haskellwiki/Haskell

Όλα τα παραπάνω είναι προσωπικές απόψεις και βεβαίως δέχομαι διορθώσεις!
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό gr.ant » 09 Αύγ 2011, 16:42

Δε μας είπες πως βγαίνεις από το hugs.
gr.ant
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 04 Ιούλ 2011, 16:47
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό evolgen » 09 Αύγ 2011, 17:23

Μπορείς να φτιάξεις εκτελέσιμα, χωρίς να τρέξεις το hugs και πώς; Όπως π.χ. στην Perl (#!/usr/bin/perl) και στην Python (#!/usr/bin/python).
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό gr.ant » 09 Αύγ 2011, 20:20

Στην ουσία αυτό εδώ
Κώδικας: Επιλογή όλων
-- Add two integer numbers given
add :: Integer -> Integer -> Integer
add 0 y = y
add x 0 = x
add x y = x+y


είναι το πρόγραμμά σου. Τώρα αυτό, μπορείς να το ρωτάς διάφορα. (Έτσι γίνεται και στην prolog που το 'πρόγραμμα' είναι η βάση γνώσης σου που της κάνεις ερωτήματα. Στην prolog γράφεις γεγονότα και κανόνες με τους οποίους προκύπτουν συμπεράσματα, βλέπε πχ το γρίφο του Αινστάιν που θα μπορούσες να τον κωδικοποιήσεις με την prolog και να βρει η prolog για σένα την απάντηση)
Έτσι εδώ έχει φτιάξει μια συνάρτηση, που μπορεί να την καλεί από το hugs, και να του υπολογίζει αυτά που μπορεί να υπολογίσει. (η συνάρτηση add που να προσθέτει αριθμούς). Στην ερώτησή μου, για το πως βγαίνεις απο το hugs βγαίνεις γράφοντας
Κώδικας: Επιλογή όλων
!
και πατώντας enter

άκυρο για το ! enter, συνεχίζει να τρέχει στο παρασκήνιο η διεργασία, βαριέμαι να το ψάξω θα περιμένω να το διαβάσω από εδώ.
gr.ant
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 04 Ιούλ 2011, 16:47
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό gr.ant » 18 Αύγ 2011, 13:45

Κάποιος άνοιξε ένα νήμα και δεν απαντάει στις απορίες μάλλον. Λοιπόν. Ακούστε καλά οι ενδιαφερόμενοι. Αντί για την ηλιθιότητα που λέγεται hugs μπορείτε να κάνετε και το εξής μάγκες μου.
Βάλτε το ghci
Κώδικας: Επιλογή όλων
sudo apt-get install haskell-platform

ή και
Κώδικας: Επιλογή όλων
sudo apt-get install ghc6
gr.ant
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 04 Ιούλ 2011, 16:47
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό linuxs » 18 Αύγ 2011, 14:07

gr.ant έγραψε:Κάποιος άνοιξε ένα νήμα και δεν απαντάει στις απορίες μάλλον. Λοιπόν. Ακούστε καλά οι ενδιαφερόμενοι. Αντί για την ηλιθιότητα που λέγεται hugs μπορείτε να κάνετε και το εξής μάγκες μου.
Βάλτε το ghci
Κώδικας: Επιλογή όλων
sudo apt-get install haskell-platform

ή και
Κώδικας: Επιλογή όλων
sudo apt-get install ghc6

Καλησπέρα, δεν είχα πρόσβαση φίλε μου να δώ την ερώτηση σου. Ο χαρακτηρισμός σου είναι καθαρά προσωπικός και να αναφέρεσαι καλύτερα στα υπόλοιπα προγράμματα. Και αν το παίζεις μάγκας δείξτο αλλιώς! Προφανώς δεν θα έπρεπε να απαντήσω σε κάτι που ξέρεις την απάντηση...δεν θα έπρεπε να βαριέσαι να ψάξεις λίγο πως γίνεται να βγείς! Μην να θέλεις όλα έτοιμα στο πιάτο!!! :Ο
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό linuxs » 18 Αύγ 2011, 14:09

evolgen έγραψε:Μπορείς να φτιάξεις εκτελέσιμα, χωρίς να τρέξεις το hugs και πώς; Όπως π.χ. στην Perl (#!/usr/bin/perl) και στην Python (#!/usr/bin/python).

Τα εκτελέσιμα φτιάχνονται με οποιονδήποτε editor και τα αποθηκεύεις με κατάληξη .hs
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό Garrus » 02 Σεπ 2011, 13:54

A gentle intro to haskell

Haskell tutorial for C programmers

Προσωπικα προτιμω το 1ο.

Ασκησουλες για αρχη;
Φτιαξτε προγραμματα που να υλοποιουν την/τον:
-προσθεση
-πολλ/σμο
-αφαιρεση
-διαιρεση

δυο αριθμων-ορισματων.

think recursive!
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό linuxs » 02 Σεπ 2011, 17:38

Δεν κοίταξα ποτέ tutorial! Την σύνταξη έμαθα και αμέσως ασκήσεις...
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Πως να ξεκινήσετε με την Haskell

Δημοσίευσηαπό Garrus » 02 Σεπ 2011, 21:26

Στα tutorial καλυπτονται και οι built in functions ;)
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Επόμενο

Επιστροφή στο Το Σχολείο του Φόρουμ - Ασύγχρονα Μαθήματα

cron