| Copyright | (c) Kimiyuki Onaka 2021 |
|---|---|
| License | Apache License 2.0 |
| Maintainer | kimiyuki95@gmail.com |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Jikka.RestrictedPython.Convert.ResolveBuiltin
Description
Synopsis
- run :: (MonadAlpha m, MonadError Error m) => Program -> m Program
Documentation
run :: (MonadAlpha m, MonadError Error m) => Program -> m Program Source #
run resolves types of polymorphic builtin functions.
This assumes there are no assignments to builtin functions, i.e. doesntHaveAssignmentToBuiltin.
For example, the max of max(xs) has a type \(\mathbf{list}(\alpha) \to \alpha\) but the max of max(x, y, z) has a type \(\alpha \times \alpha \times \alpha \to \alpha\).
So this function converts Var "max" to BuiltinMax1 t, BuiltinMax t 2, BuiltinMax t 3, etc..