Szukaj:



Ostatnio oglądane:
  • Haskell [pl]
  • Europejski nakaz aresztowania [pl]
  • Czasowniki nieregularne w języku angiel
  • Grafika:Omar al bashir.jpg [pl]
  • Ery i okresy geologiczne [pl]
  • Grafika:Star of life2.svg [pl]
  • Darfur [pl]
  • Dystrykty w Indiach [pl]
  • Habilitacja [pl]
  • Arthur Henderson [pl]
  • 5 listopada [pl]
  • Grafika:Schieramenti WWI.png [pl]
  • I wiek [pl]
  • Grafika:Flag of Hungary.svg [pl]
  • Harklowa (województwo małopolskie) [pl
  • Bronowice [pl]
  • 31 października [pl]
  • Grafika:Vac triumf.jpg [pl]
  • Cyfry chińskie [pl]
  • Fiakier [pl]
  • Encyklopedia [pl]
  • Grafika:Torchlight view tree.png [pl]
  • Afryka [pl]
  • Grafika:Wappen Deutsches Reich (Weimarer
  • Grafika:Jiri z Podebrad statue.jpg [pl]
  • 2011 [pl]
  • 8 sierpnia [pl]
  • Ekstradycja [pl]
  • Grafika:Prussian standard.jpg [pl]
  • Wybierz język: ar | id | bg | ca | ceb | cs | da | de | et | en | es | eo | fr | he | hr | it | ko | lt | hu | nl | ja | no | pl | pt | ru | ro | sk | sl | sr | fi | sv | te | tr | uk | zh
    Historia i autorzy | źródło tekstu - Wikipedia | Edycja

    Haskell

    Ten artykuł dotyczy języka programowania. Zobacz też: inne znaczenia tego słowa.

    Haskell to funkcyjny język programowania nazwany na cześć Haskella Curry. Jego specyficzne cechy to m.in. leniwe wartościowanie, monady, statyczny polimorfizm, klasy typów, definiowalne operatory (również możliwość tworzenia nowych), strażnicy, wbudowane wsparcie dla literate programming.

    Pliki Haskella mają rozszerzenie .hs

    Choć semantyka leniwej ewaluacji może być w pewnych zastosowaniach niewygodna, podobnie jak brak biblioteki porównywalnej z ocamlowską (warto jednak zwrócić uwagę na dość pokaźną liczbę bibliotek zewnętrznych), Haskell nadrabia to wyjątkowo czytelną składnią. W szczególności widać na tym polu kontrast wobec języków takich jak Ocaml czy LISP.

    Kilka przykładów:

    -- Komentarz
    
    silnia 1 = 1
    silnia n = n*silnia(n-1)
    
    silnia2 n = product [1..n]
    
    fib 0 = 0
    fib 1 = 1
    fib n = fib(n-1) + fib(n-2)
    
    ack(0,y) = y+1
    ack(x,0) = ack(x-1,1)
    ack(x,y) = ack(x-1,ack(x,y-1))
    
    -- przykład użycia strażników
    sign x | x >  0  =  1
           | x == 0  =  0
           | x <  0  = -1
    
    myproduct []    = 1
    myproduct (n:m) = n * myproduct m
    
    mysum []    = 0
    mysum (n:m) = n + mysum m
    
    data TreeOfMath =
        Mult TreeOfMath TreeOfMath |
        Div  TreeOfMath TreeOfMath |
        Add  TreeOfMath TreeOfMath |
        Sub  TreeOfMath TreeOfMath |
        Leaf Float
    
    compute (Mult x y) = compute x * compute y
    compute (Div x y)  = compute x / compute y
    compute (Add x y)  = compute x + compute y
    compute (Sub x y)  = compute x - compute y
    compute (Leaf x)   = x
    
    showme (Mult x y) = "(" ++ (showme x) ++ "*" ++ (showme y) ++ ")"
    showme (Div x y)  = "(" ++ (showme x) ++ "/" ++ (showme y) ++ ")"
    showme (Add x y)  = "(" ++ (showme x) ++ "+" ++ (showme y) ++ ")"
    showme (Sub x y)  = "(" ++ (showme x) ++ "-" ++ (showme y) ++ ")"
    showme (Leaf x)   = show x
    
    qsort [] = []
    qsort (x:xs) = qsort less ++ x:(qsort more)
        where less = [ a | a <- xs, a <  x ]
              more = [ a | a <- xs, a >= x ]
    
    -- lista liczb pierwszych
    primes = map head $ iterate (\(x:xs) -> [ y | y<-xs, y `mod` x /= 0 ]) [2..]
    
    -- lista liczb Fibonacciego
    listFib = 1:1:(zipWith (+) listFib (tail listFib))
    
    -- wyrażenia TreeOfMath mają postać: (Sub (Mult (Leaf 5) (Leaf 4)) (Add (Leaf 3) (Leaf 2)))
    
    

    [edytuj] Linki zewnętrzne

    Wikibooks
    Zobacz publikację na Wikibooks:
    Haskell
    Change language: All | العربية | Bahasa Indonesia | Български | Català | Cebuano | Česky | Dansk | Deutsch | Eesti | English | Español | Esperanto | Français | עברית | Hrvatski | Italiano | 한국어 | Lietuvių | Magyar | Nederlands | 日本語 | Norsk (bokmål) | Polski | Português | Русский | Română | Slovenčina | Slovenščina | Српски / Srpski | Suomi | Svenska | తెలుగు | Türkçe | Українська | 中文

    Autorem skryptu AdWiki v0.9uni (2007) jest husky83 (licencja dla bestpartner )
    Wikipedia jest zarejestrowanym znakiem towarowym Wikimedia Foundation
    Wszystkie materiały pochodzą z Wikipedii, obięte są licencją GNU Free Documentation License
    blogi windsurfingowe kursy maturalne zbiorniki Expekt Biznes | system wymiany linków SEO Tools SEO Tools SEO Tools . - . - . - . - . - . - . - . - . - | Porcelana Angielskie cytaty Szkolenia BHP sale weselne łódź lyrics