Personal tools

Z4

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (Z4 - from math)
 
m (Adding the missing operator: supra meaning `div`)
 
Line 41: Line 41:
 
-> r
 
-> r
 
minus:: r -> r
 
minus:: r -> r
  +
-> r
  +
supra::r -> r
 
-> r
 
-> r
  +
   
 
-- Noul tip de date va avea elemente de forma: (Clasa 1), (Clasa 2) etc.
 
-- Noul tip de date va avea elemente de forma: (Clasa 1), (Clasa 2) etc.
Line 50: Line 53:
 
(Clasa a) `x` (Clasa b) = Clasa ((a*b) `mod` 4 )
 
(Clasa a) `x` (Clasa b) = Clasa ((a*b) `mod` 4 )
 
(Clasa a) `plus` (Clasa b) = Clasa ((a+b) `mod` 4 )
 
(Clasa a) `plus` (Clasa b) = Clasa ((a+b) `mod` 4 )
(Clasa a) `minus` (Clasa b) = Clasa ((a+b) `mod` 4 )
+
(Clasa a) `minus` (Clasa b) = Clasa ((a-b) `mod` 4 )
+
(Clasa a) `supra` (Clasa b) = Clasa ((a `div` b) `mod` 4 )
-- Atentie, apostroful invers este pe tasta de linga cifra 1. In haskell daca o functie f o transformam in operator infixat se scrie: operand1 `f` operand2
+
-- Atentie, apostroful invers este pe tasta de linga cifra 1. In Haskell daca o functie f o transformam in operator infixat se scrie: operand1 `f` operand2
 
</haskell>
 
</haskell>
   

Latest revision as of 12:08, 6 February 2011

Haskell - Un limbaj functional pur

Haskell este limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Cel mai productiv limbaj functional ! Limbajul folosit de autorii limbajului Perl 6 si ales de echipa Linspire, utilizat la Inteligenta artificiala, prelucrari multimedia, Retele Petri, programare functionala in Robotica, sinteza de circuite electronice, motoare de baze de date , cercetare , productie de software "type safe",productie de limbaje (DSL-uri), proiectare automata de scheme electronice, analize statistice si financiare (bancare)...
V-am starnit curiozitatea ? Cititi: Intrebarile incepatorului. Am adaugat raspunsuri noi (16 dec. 2007- 10 feb. 2008).


Stirile lunii:Stiri Ro/Haskell

Cuprinsul paginii :


Contents

[edit] 1 . Prezentarea proiectului

Exista deja un veritabil interes pentru Haskell din randul matematicienilor. De altfel daca intrebati pe un forum de discutii care ar fi cel mai bun limbaj pentru matematicieni - uni au intrebat - vi se va raspunde: Haskell.

Legaturile dintre Haskell si Matematica pot fi exploatate pentru a obtine specialisti in matematica aplicata capabili sa realizeze produse informatice bazate pe matematica.

Programul "Ro/Boosting your Math. Faculty with Haskell" isi propune sa mareasca potentialul unei Facultati de matemnatica prin introducerea Haskell-ukui ca limbaj de laborator si seminar. (da - ati citit bine, limbaj de laborator la matematica). Deja o serie de grupe de matematica - cel putin acolo unde lucreaza subsemnatul - fac or in laboratoarele de informatica.

[edit] 2 Cum va afiliati programului ?

Nu e nevoie de concurs de proiecte dosar sau altceva. Tot ce aveti de facut este sa folositi Haskell-ul (Fie interpretorul Hugs sau WinHugs fie compilatorul GHC si versiunea sa interactiva GHCi.) Popularizati apoi rezultatele pe web, le vom centraliza aici acordand stelute * pentru fiecare din urmatoarele activitati:

[edit] 3 Un mic exemplu Z4

Salvat-l ca fisier cu extensia .hs

module Z4 where
 
class Resturi r where
  x    :: r -> r 
            -> r
  plus :: r -> r 
            -> r
  minus:: r -> r 
            -> r
  supra::r -> r 
            -> r
 
 
-- Noul tip de date va avea elemente de forma: (Clasa 1), (Clasa 2) etc. 
newtype Z4 = Clasa Int 
             deriving Show   -- ca sa poata fi afisate pe ecran
 
instance Resturi Z4  where
  (Clasa a)  `x`    (Clasa b) = Clasa ((a*b) `mod` 4 )
  (Clasa a)  `plus` (Clasa b) = Clasa ((a+b) `mod` 4 )
  (Clasa a)  `minus` (Clasa b) = Clasa ((a-b) `mod` 4 )
  (Clasa a)  `supra` (Clasa b) = Clasa ((a `div` b) `mod` 4 )
-- Atentie, apostroful invers este pe tasta de linga cifra 1. In Haskell daca o functie f o transformam in operator infixat se scrie: operand1 `f` operand2

Nota de utilizare: Daca nu merge exemplul sub GHC , GHC-ul va da un mesaj prin care poate cere sa activati o optiune de compilare, si va spune si care. Adaugati la inceput linia :

{- OPTIONS -XFlexibleInstances -}


[edit] 4 . Cum rulati ?

Scrieti textul de mai sus, si incarcati-l in Hugs cu (File -> Open sau :load fisier.hs) . Sau dati click pe fisier daca ati instalat GHC-ul.

Acum puteti face calcule in Z4,fara probleme, de exemplu de la consola (apoi din alte programe). Alte programe vor putea importa modulul cu import Z4.

> (Clasa 3) `plus` (Clasa 2) - apasati Enter si obtineti rezultatul.

O mica aplicatie de la logica mai jos. Logica peste Z4.


Pagina indexata la indexul Categories:Ro


<= Inapoi la inceputul paginii principale Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.