Hi Karan, functions are wrapped in a ClioFN class, which makes them all async, lazy and curried.
We have automatic array parallelism so when you map a function to an array the main process will distribute the job to its workers (the backend to use, how to spawn workers and how many workers to spawn are all configurable, the workers can be local and/or remote which means you can use resources on the machines on the network too. We’ve managed to make this work on the browsers as well). For other types of parallelism, we haven’t decided yet what we’re going to do, we want to keep it simple and clean.
We’re planning to add a memoizing layer to this, with several different backends (both persistent and non-persistent, for example redis or mongo) to speed up things. The end goal is to make it very easy to run tasks in parallel and distribute the jobs.
Please note that the features I’m mentioning in this comment are WIP and only available in our development branches. We’re working on a v0.2 and we’re fixing the mistakes we made in v0.1.X, the syntax and the semantics will be much more simpler.