 Functions and products use dependent types to gain additional power.The syntax is largely borrowed from Haskell.There is no special module system, because with dependent types records (products) are powerful enough to define modules.