Monday, October 20, 2014

Haskell - Functions, Overloading, Pattern Matching, Variables

III. Functions

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 mean

Defining 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:
  1. Strong
  2. Static
  3. 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).
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.

Sunday, June 29, 2014

SONET/SDH

SONET este un standard ANSI care detalieaza cum mai multe stream-uri de date, fiecare cu diverse viteze, pot fi multiplexate. SONET are definite mai multe nivele OC (Optical Carrier). America de Nord foloseste SONET.

BGP/MPLS IP VPN p2

1. Site-uri si CE-uri

Saturday, June 28, 2014

BGP/MPLS IP VPN



Un service provider se poate folosi de propria retea backbone pentru a furniza servicii IP VPN pentru clientii sai.

Thursday, June 26, 2014

GNS3 Again

  • tap interfaces
  • bridge interfaces
  • virtualbox setup
  • IOS images
  • ASA images
  • Juniper images
  • VirtualBox guest