11.2 Haskell:纯函数式语言

Haskell于1990年发布,以逻辑学家哈斯克尔·柯里(Haskell Curry)命名。它是一种纯函数式语言,意味着所有函数都是纯函数,没有副作用。

haskell
复制代码
-- Haskell代码示例

-- 递归定义斐波那契数列
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

-- 使用列表推导式
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (p:xs) = quicksort [x | x <- xs, x < p] 
                   ++ [p] 
                   ++ quicksort [x | x <- xs, x >= p]

-- 使用monad处理IO
main :: IO ()
main = do
    putStrLn "Enter your name:"
    name <- getLine
    putStrLn ("Hello, " ++ name ++ "!")

-- 类型类
class Shape a where
    area :: a -> Double

data Circle = Circle { radius :: Double }
data Rectangle = Rectangle { width :: Double, height :: Double }

instance Shape Circle where
    area (Circle r) = pi * r * r

instance Shape Rectangle where
    area (Rectangle w h) = w * h

Haskell的特点:

  • 惰性求值:表达式只有在需要时才计算,允许无限数据结构
  • 类型推断:编译器自动推断类型
  • Monad:用纯函数方式处理副作用
  • 代数数据类型:强大的类型系统