Haskell 初见:函数式思维的入口

Haskell 是一门纯函数式语言:没有变量赋值、没有副作用,程序是表达式的求值。初学时最大的门槛不是语法,而是换一种方式思考「计算是什么」。

一个经典的例子,斐波那契数列用无限列表惰性定义:

fibs :: [Integer]
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

fib :: Int -> Integer
fib n = fibs !! n

fibs 的定义里引用了它自己——在命令式语言里这是循环依赖,在 Haskell 里这是惰性求值的日常。类型签名 fib :: Int -> Integer 读作「从 Int 到 Integer 的函数」,类型即文档。

初学建议从列表操作和递归开始,先把 (+)、zipWith、map、filter 用熟,再接触函子与单子。