type 'a future (* future f x executes f x in a separate thread *) val future : ('a -> 'b) -> 'a -> 'b future (* block and return the result of the computation when it completes *) val force : 'a future -> 'a (* convenient additional functions *) (* par f x g y executes (f x) and (g y) concurrently *) val par : ('a -> 'b) -> 'a -> ('c -> 'd) -> 'c -> 'b * 'd (* f <*> g executes f() and g() concurrently *) val (<*>) : (unit -> 'a) -> (unit -> 'b) -> 'a * 'b