Connecting a switch to GNS3
VLANs
MAC Table overflow
Friday, February 13, 2015
Sunday, October 26, 2014
Haskell Introducere, Liste, uplu, functii, tipuri polimorfice, supraincarcare.
Tipurile de baza:
·
Bool – valori logice
Contine
valorile logice False si True.
·
Char – caractere
Contine toate caracterele
disponibile de la tastatura precum ‘a’, ‘_’, ‘V’, precum si un numar
de caractere de control precum ‘\n’, ‘\t’.
·
String – siruri de caractere
Acest tip contine toate
secventele de caractectere, precum “abc”, “1+2=3” si sirul vid “”.
·
Int – numere intregi intre -231 si 231 -1
·
Integer – numere intregi cu precizie
infinita
·
Float - single-precision
floating-point numbers
Thursday, October 23, 2014
Haskell - Defining custom data types
- allows us to add structure to the values in our programs
- defining our own types also imrpoves the safety of our code
- haskell will not allow us to accidentally mix values of two values that are structurally similar but have different names.
-- file: ch03/BookStore.hs
data BookInfo = Book Int String [String]
deriving (Show)
- The BookInfo after the
datakeyword is the name of our new type. We call BookInfo a type constructor. - The
Bookthat follows is the name of the value constructor (sometimes called a data constructor) - After
Book, the Int, String, and [String] that follow are the components of the type.
Tuesday, October 21, 2014
Haskell Evaluation
Conditional evaluation
-- file: ch02/myDrop.hs myDrop n xs = if n <= 0 || null xs then xs else myDrop (n - 1) (tail xs)The if keyword introduces an expression that has three components.
- An expression of type Bool, immediately following the if. We refer to this as a predicate.
- A then keyword, followed by another expression. This expression will be used as the value of the if expression if the predicate evaluates to True.
- An else keyword, followed by another expression. This expression will be used as the value of the if expression if the predicate evaluates to False.
- The null function indicates whether a list is empty, while the (||) operator performs a logical “or” of its Bool-typed arguments.
ghci>:type nullnull :: [a] -> Boolghci>:type (||)(||) :: Bool -> Bool -> Bool
Monday, October 20, 2014
Haskell - Functions, Overloading, Pattern Matching, Variables
III. Functions
Function application is left associative
The expression
Defining and calling functions is simple
Function application is left associative
The expression
a b c d is equivalent to (((a b) c) d)If we want to use one expression as an argument to another, we have to use explicit parentheses to tell the parser what we really meanDefining and calling functions is simple
add a b = a + b add 1 2
Sunday, October 19, 2014
Haskell - Expressions, Basic Types, Composite Data Types
Every expression and function in Haskell has a type.
Types in Haskell are:
- Strong
- Static
- Can be automatically inferred.
- True has the type Bool
- 'foo' is of type String
- 1 has type Num
Type are important for abstraction. To add meaning to some bytes. The meaning cannot change after the type has been defined.
The benefit is that you can ignore or forget about the low level details.
Saturday, October 18, 2014
Haskell - Introducere
Haskell e un
limbaj de progamare functionala, spre deosebire de C/C++, Visual Basic, Java care
sunt imperative.Programarea functionala poate fi vazuta ca un stil de
programare in care principala metoda de calcul o reprezinta aplicarea de
functii asupra unor argumente.
Numele de programare funcţională provine din faptul că un program este constituit în întregime din funcţii. Însuşi programul principal este scris ca o funcţie care primeşte intrarea ca argument şi furnizează ieşirea ca rezultat. De obicei, funcţia principală este definită în termeni de alte funcţii, care la rândul lor sunt definite în termeni de alte funcţii, ş.a.m.d. până la funcţiile de bază, care constitue primitivele limbajului.
In mare, un program funcţional este o expresie iar execuţia înseamnă evaluarea expresiei (din acest motiv, programarea funcţionala se mai numeşte şi programare aplicativă deoarece mecanismul de bază este aplicarea unor funcţii argumentelor lor).
Numele de programare funcţională provine din faptul că un program este constituit în întregime din funcţii. Însuşi programul principal este scris ca o funcţie care primeşte intrarea ca argument şi furnizează ieşirea ca rezultat. De obicei, funcţia principală este definită în termeni de alte funcţii, care la rândul lor sunt definite în termeni de alte funcţii, ş.a.m.d. până la funcţiile de bază, care constitue primitivele limbajului.
In mare, un program funcţional este o expresie iar execuţia înseamnă evaluarea expresiei (din acest motiv, programarea funcţionala se mai numeşte şi programare aplicativă deoarece mecanismul de bază este aplicarea unor funcţii argumentelor lor).
Caracteristicile
limbajului Haskell sunt:
·
Programe concise
Deoarece e un
limbaj de programare de nivel inalt; a fost scris cu aceasta trasatura in
minte, avand putine cuvinte cheie si obligand la folosirea indentatiei pentru a
indica structura programelor; dimensiune de 2 pana la 10 ori mai mica a
programelor, in comparatie cu scrierea lor in limbajele curente(imperative).
·
Sistem de tipuri performant
Majoritatea
limbajelor de programare moderne include un sistem de tipuri de date pentru a
detecta erorile de incompatibilitate tipul adunarii unui caracter la un numar.
Haskell are un sistem de tipuri ce necesita putine informatii din partea
programatorului dar permite detectarea unei clase largi de erori de
incompatibilitate, sistem numit “type inference” (deducerea tipurilor). Acest
sistem de tipuri permite functii polimorfice si supraincarcarea functiilor.
·
Manipularea listelor
Una din cele
mai uzuale metode de a structura si manipula date in informatica este folosirea
listelor. In Haskell lista este conceptul de baza, impreuna cu un
mecanism simplu, dar puternic, de manipulare si generare de noi liste,
eliminand de cele mai multe ori necesitatea recursivitatii.
·
Functii recursive
In Haskell,
mecanismul de baza folosit pentru obtinerea ciclurilor este dat de functiile
recursive. Multe calcule au o definitie simpla, naturala, in cazul folosirii
functiilor recursive.
·
Functii de ordin inalt
In Haskell
functiile pot primi ca argumente alte functii si pot intoarce drept rezultat
alte functii. Prin folosirea functiilor de ordin inalt se poate defini
compunerea a doua functii ca o functie.
·
Monadic effects
·
Lazy evaluation
Programele
Haskell sunt executate folosind o tehnica numita lazy evaluation (evaluare
intarziata) care se bazeaza pe ideea ca nici un calcul nu trebuie realizat pana
nu este nevoie de el. Pe langa evitarea calculelor inutile, aceasta tehnica
asigura terminarea programelor atunci cand e posibil si permite folosirea
structurilor cu un numar infinit de elemente.
Subscribe to:
Posts (Atom)
