• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Haskell



    Podstrony: [1] [2] 3 [4]
    Przeczytaj także...
    W programowaniu funkcyjnym, monada jest rodzajem konstruktora abstrakcyjnego typu danych, używanego do wyrażania zmieniających się stanów obliczeń (operacji) zamiast znanych z modelu dziedzinowego zmieniających się stanów danych.Rozszerzenie – sposób oznaczania typu pliku za pomocą sufiksu jego nazwy. Rozszerzenie jest oddzielone od reszty nazwy za pomocą kropki. Ponieważ w nowoczesnych systemach nazwa pliku może sama w sobie zawierać kropki, przyjmuje się, że rozszerzeniem jest część nazwy po ostatniej kropce, a samo rozszerzenie nie zawiera kropek.
    Przykłady[ | edytuj kod]
    -- Komentarz
    
    silnia 0 = 1
    silnia n = n*silnia(n-1)
    
    silnia 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
    
    -- wyrażenia TreeOfMath mają postać: (Sub (Mult (Leaf 5) (Leaf 4)) (Add (Leaf 3) (Leaf 2)))
    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))
    

    Przypisy[ | edytuj kod]

    1. Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler: A History of Haskell: Being Lazy with Class. 2007. ISBN 978-1-59593-766-7.
    2. Simon Marlow: Announcing Haskell 2010 (ang.). Haskell (lista dyskusyjna). [dostęp 2015-12-12].
    Uniwersytet w Glasgow (ang. University of Glasgow, gael. Oilthigh Ghlaschu) – jeden z czołowych uniwersytetów brytyjskich, założony w 1451, jako historycznie drugi uniwersytet w Szkocji.Library of Congress Control Number (LCCN) – numer nadawany elementom skatalogowanym przez Bibliotekę Kongresu wykorzystywany przez amerykańskie biblioteki do wyszukiwania rekordów bibliograficznych w bazach danych i zamawiania kart katalogowych w Bibliotece Kongresu lub u innych komercyjnych dostawców.


    Podstrony: [1] [2] 3 [4]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Polimorfizm (z gr. wielopostaciowość) - mechanizmy pozwalające programiście używać wartości, zmiennych i podprogramów na kilka różnych sposobów. Inaczej mówiąc jest to możliwość wyabstrahowania wyrażeń od konkretnych typów.
    Wartościowanie leniwe (ang. lazy evaluation, ewaluacja leniwa) - strategia wyznaczania wartości argumentów funkcji tylko wtedy, kiedy są potrzebne (na żądanie).
    Biblioteka Narodowa Francji (fr. Bibliothèque nationale de France, BnF) – francuska biblioteka narodowa, znajdująca się w Paryżu. Przewidziana jest jako repozytorium dla wszystkich materiałów bibliotecznych, wydawanych we Francji. Obecnym dyrektorem Biblioteki jest Bruno Racine.
    Literate programming (ang. programowanie piśmienne) - styl programowania oparty na założeniu, że programy komputerowe powinny być pisane z naciskiem na czytelność kodu źródłowego dla ludzi, podobnie do dzieła literackiego.
    Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.
    Programowanie funkcyjne (lub programowanie funkcjonalne) – filozofia i metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń.
    Kompilator – program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) . Proces ten nazywany jest kompilacją. W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.

    Reklama

    Czas generowania strony: 0.022 sek.