Here is the source code for the stir.hs:
-- Time-stamp: >Tue Apr 25 2000 21:49:53 Stardate: [-30]4714.33 hwloidl< -- -- A fibish parallel test program computing Stirling numbers. -- Uses Haskell 1.4 ----------------------------------------------------------------------------- module Main(main) where import Parallel import System (getArgs) -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ args_to_IntList :: [String] -> [Int] args_to_IntList a = if length a < 2 then error "Usage: stir n k \n" else map read a fact :: Int -> Int fact 0 = 1 fact n = n * fact (n-1) -- Binominal coefficient bin :: Int -> Int -> Int bin n k | k>n = 0 | otherwise = fact n `div` (fact k) * (fact (n-k)) -- Stirling numbers stir1, stir2 :: Int -> Int -> Int stir1 n k | n==k = 1 | n==0 = 0 | k>n = 0 | otherwise = x `par` y `par` (n-1) * x + y where x = stir1 (n-1) k y = stir1 (n-1) (k-1) stir2 n k | n==k = 1 | n==0 = 0 | k>n = 0 | otherwise = x `par` y `par` k * x + y where x = stir2 (n-1) k y = stir2 (n-1) (k-1) main = getArgs >>= \ a -> let l = args_to_IntList a n = l!!0 k = l!!1 res = stir1 n k in putStr ("stir1 " ++ (show n) ++ " " ++ (show k) ++ " = " ++ (show res) ++ "\n") |