Haskell:
Organizacja kodu w funkcje
Jak to zrobić:
Oto jak można pisać i używać funkcji w Haskellu:
-- Definiowanie prostej funkcji do dodawania dwóch liczb
addNumbers :: Int -> Int -> Int
addNumbers x y = x + y
-- Użycie funkcji
main = print (addNumbers 3 5)
Wynik:
8
Można także tworzyć funkcje wyższego rzędu:
-- Pobiera funkcję i stosuje ją dwa razy do czegoś
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
-- Użycie applyTwice z anonimową funkcją
main = print (applyTwice (*2) 5)
Wynik:
20
Wgłębianie się
Haskell, będący językiem czysto funkcyjnym, traktuje funkcje jako obywatele pierwszej kategorii. Historycznie ma to swe korzenie w rachunku lambda, który jest podstawowym schematem w informatyce. W przeciwieństwie do języków imperatywnych, gdzie funkcje to sekwencja instrukcji, w Haskellu funkcje są wyrażeniami, które opisują zależności między danymi.
Istnieją alternatywy dla pisania surowych funkcji w celu ponownego użycia. Rozważ użycie klas typów dla polimorfizmu lub wykorzystanie modułów do grupowania powiązanych funkcji. Leniwa ewaluacja w Haskellu także wpływa na implementację funkcji - funkcje nie zostaną obliczone, dopóki nie będą potrzebne ich wyniki, co może wpływać na rozważania dotyczące wydajności.
Zobacz również
- Oficjalna dokumentacja Haskell: https://www.haskell.org/documentation/
- “Learn You a Haskell for Great Good!” autorstwa Mirana Lipovačy, książka przyjazna dla początkujących: http://learnyouahaskell.com/
- “Real World Haskell” autorstwa Bryana O’Sullivana, Dona Stewarta i Johna Goerzena: http://book.realworldhaskell.org/