diff options
author | martinw | 2000-05-31 08:53:00 +0000 |
---|---|---|
committer | martinw | 2000-05-31 08:53:00 +0000 |
commit | b974d5e648b6faeb59dc7bdd8c0469c34ab28896 (patch) | |
tree | 8fe303a8825e57890d82e8cf928d77c14d1a20bc /frontend/unitype.icl | |
parent | fixed bugs; partially implemented type dependent functions (diff) |
fixed fusion bug: The algorithm that derived the type for the specialised function worked like
follows: In a first phase bind type variables to their instantiation for all producers. In the
second phase apply the substitution. This didn't work for consumers that are fused with multiple
producers, e.g:
cons :: (a->b) (b->c) a -> c
prod1 :: Int -> Int
prod2 :: d->e
During producer-wise binding a and b were first bound to Int and Int. _Then_ b and c were bound
to d and e (b was overwritten)
Solution:
Apply the one substitution for each producer
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@144 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/unitype.icl')
0 files changed, 0 insertions, 0 deletions