Haskell (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ValterVBot (discussione | contributi)
m tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (6), </source> → </syntaxhighlight> (6)
Riga 59:
=== [[Hello world|Hello, world!]] ===
Il seguente esempio stampa il testo "Hello World".
<sourcesyntaxhighlight lang="haskell">
main = do
putStrLn "Hello World!"
</sourcesyntaxhighlight>Una versione un po' più ''interattiva'':<syntaxhighlight lang="haskell">
main :: IO ()
main = do
Riga 72:
=== Calcolo del [[fattoriale]] ===
Classica definizione del fattoriale con ''pattern matching:''
<sourcesyntaxhighlight lang="haskell">
fac :: Int -> Int
fac 0 = 1
fac n = n * fac (n-1)
</sourcesyntaxhighlight>Un'altra definizione più ristretta, utilizzando la funzione ''product'':<syntaxhighlight lang="haskell">
fac' n = product [1.. n]
</syntaxhighlight>
Riga 82:
=== Calcolo della [[successione di Fibonacci]] ===
Definizione con ''pattern matching'' per numeri naturali e applicazione di ''higher order functions'':
<sourcesyntaxhighlight lang="haskell">
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
</syntaxhighlight>
</source>
La più efficiente implementazione, tuttavia, è questa<ref>{{Cita web|url = https://wiki.haskell.org/The_Fibonacci_sequence#Fastest_Fib_in_the_West|titolo = The Fibonacci sequence - HaskellWiki|accesso = 31 gennaio 2016|sito = wiki.haskell.org}}</ref>:
<sourcesyntaxhighlight lang="haskell">
import Data.List
import Data.Bits
Riga 101:
| otherwise = (ss, g*(2*f-g))
where ss = f*f+g*g
</syntaxhighlight>
</source>
=== Algoritmo di ordinamento generico [[quicksort]] ===
Falsa<ref>{{Cita web|url = https://stackoverflow.com/questions/7717691/why-is-the-minimalist-example-haskell-quicksort-not-a-true-quicksort|titolo = Why is the minimalist, example Haskell quicksort not a "true" quicksort?|accesso = 31 gennaio 2016|sito = stackoverflow.com}}</ref> implementazione polimorfa con ''pattern matching'' e ''list comprehension'' :
<sourcesyntaxhighlight lang="haskell">
qsort :: Ord a => [a] -> [a]
qsort [] = []
Riga 111:
l1 = [y | y <- xs, y<x]
l2 = [z | z <- xs, z>=x]
</syntaxhighlight>
</source>
=== [[Crivello di Eratostene]] ===
<sourcesyntaxhighlight lang="haskell">
primes = dropall [2..]
where
Riga 119:
where
dropmul x l = [y | y <- l, y `mod` x /= 0]
</syntaxhighlight>
</source>
 
== Implementazioni ==