クロージャでかっこよく*1フィボナッチするよ! let makeFiboClosure (a, b) = let mutable t = (a, b) fun () -> let x,y = t in t <- (y, x+y); x makeFiboClosure は、クロージャを作る関数です。評価するとレキシカル変数なタプル t を更新しながら数列を生成する無引数のクージャを返します。 コンパイルしてみたら... error FS0407: The mutable variable 't' is used in an invalid way. Mutable variables cannot be captured by closures. Consider eliminating this use of mutation or using a heap-allocated mutab