matthijs/master-project/cλash.git
14 years agoAdd LambdaBody to CoreContext.
Matthijs Kooijman [Wed, 31 Mar 2010 10:38:27 +0000 (12:38 +0200)]
Add LambdaBody to CoreContext.

14 years agoOnly inline top level functions that are completely applied.
Matthijs Kooijman [Wed, 31 Mar 2010 09:35:05 +0000 (11:35 +0200)]
Only inline top level functions that are completely applied.

Partial function applications will be inlined in their entirety to make
them fully applied first.

14 years agoInline all simple top level functions, not just compiler-generated ones.
Matthijs Kooijman [Wed, 31 Mar 2010 09:28:51 +0000 (11:28 +0200)]
Inline all simple top level functions, not just compiler-generated ones.

The checking for compiler generated functions wasn't watertight, so
let's just don't check at all. There is no risk for loops with
funextract anymore, since we only inline functions applied in let
bindings now.

14 years agoOnly inline dictionaries that are likely to be resolvable.
Matthijs Kooijman [Wed, 31 Mar 2010 09:03:38 +0000 (11:03 +0200)]
Only inline dictionaries that are likely to be resolvable.

14 years agoOnly inline top level functions that are applied in a let binding.
Matthijs Kooijman [Tue, 30 Mar 2010 14:52:13 +0000 (16:52 +0200)]
Only inline top level functions that are applied in a let binding.

This should limit the amount of inlinings that happen a bit, make sure
inlining is only done in later stages of inlining and only when it
actually helps to prevent useless components. This should help to
prevent loops with inlinedict, since dictionary arguments should never
be inlined anymore.

14 years agoAdd LetBody and LetBinding to the CoreContext.
Matthijs Kooijman [Tue, 30 Mar 2010 14:49:51 +0000 (16:49 +0200)]
Add LetBody and LetBinding to the CoreContext.

14 years agoRemove notappargs, which is unused now.
Matthijs Kooijman [Tue, 30 Mar 2010 13:00:16 +0000 (15:00 +0200)]
Remove notappargs, which is unused now.

14 years agoLet eta expansion use the passed context instead of using notappargs.
Matthijs Kooijman [Tue, 30 Mar 2010 12:59:43 +0000 (14:59 +0200)]
Let eta expansion use the passed context instead of using notappargs.

14 years agoAdd AppFirst and AddSecond to CoreContext.
Matthijs Kooijman [Tue, 30 Mar 2010 12:56:43 +0000 (14:56 +0200)]
Add AppFirst and AddSecond to CoreContext.

Also let subeverywhere set those contexts when appropriate.

14 years agoPass the context in which an expression occurs to each transformation.
Matthijs Kooijman [Tue, 30 Mar 2010 12:25:54 +0000 (14:25 +0200)]
Pass the context in which an expression occurs to each transformation.

Currently, the only context supported is "Other" and contexts are only
passed around and not yet used anywhere.

14 years agoadd fromRangedWord function, and add error message to genVarArgs
christiaanb [Tue, 30 Mar 2010 09:50:10 +0000 (11:50 +0200)]
add fromRangedWord function, and add error message to genVarArgs

14 years agoMerge branch 'master' of http://git.stderr.nl/matthijs/master-project/cλash
Christiaan Baaij [Thu, 25 Mar 2010 08:52:36 +0000 (09:52 +0100)]
Merge branch 'master' of git.stderr.nl/matthijs/master-project/cλash

Conflicts:
cλash/CLasH/Normalize.hs
cλash/CLasH/Normalize/NormalizeTools.hs

14 years agoFix gencopy' to use proper vhdl names
Christiaan Baaij [Sun, 21 Mar 2010 21:41:38 +0000 (22:41 +0100)]
Fix gencopy' to use proper vhdl names

14 years agoAdd "init" to list of builtin function within NormalizeTools
Christiaan Baaij [Sat, 20 Mar 2010 21:23:45 +0000 (22:23 +0100)]
Add "init" to list of builtin function within NormalizeTools

14 years agoMove built_in names to different list within NormalizeTools
Christiaan Baaij [Sat, 20 Mar 2010 21:18:43 +0000 (22:18 +0100)]
Move built_in names to different list within NormalizeTools

14 years agoFix zipWith template to work with partially applied functions, add support for boolea...
Christiaan Baaij [Sat, 20 Mar 2010 15:42:05 +0000 (16:42 +0100)]
Fix zipWith template to work with partially applied functions, add support for boolean negation, and update error message of classopresolution transformation

14 years agoDon't inline == and /=.
Matthijs Kooijman [Wed, 10 Mar 2010 15:23:34 +0000 (16:23 +0100)]
Don't inline == and /=.

This is a hack to prevent problems caused by the derived Eq instances.
This is not a real solution, though.

14 years agoRestructure the top level inlining transformation.
Matthijs Kooijman [Wed, 10 Mar 2010 15:05:56 +0000 (16:05 +0100)]
Restructure the top level inlining transformation.

It now checks to see if the original (non-normalized) body is already
simple and only resorts to normalizing if the original body isn't simple
already. This should speed things up a bit, also because inlining the
normalized body probably needs some extra cleanups.

14 years agoDon't resolve class operations that are builtin functions.
Matthijs Kooijman [Wed, 10 Mar 2010 15:03:51 +0000 (16:03 +0100)]
Don't resolve class operations that are builtin functions.

We already have a fixed VHDL translation for these, and usually the
actual implementation is not translateable (for example, the derived Eq
instances translate dataconstructors to Int#'s and use GHC.Prim.==# to
compare them).

14 years agoUse the list of builtin functions for inlining.
Matthijs Kooijman [Wed, 10 Mar 2010 14:34:52 +0000 (15:34 +0100)]
Use the list of builtin functions for inlining.

Previously a small, fixed list of functions was used for inlining. Now
we use the full list of builtin functions instead.

14 years agoSlightly improve normalization debug output.
Matthijs Kooijman [Wed, 10 Mar 2010 14:33:50 +0000 (15:33 +0100)]
Slightly improve normalization debug output.

When tracing individual transformations, their before and after outputs
are now always directly after each other.

14 years agoFix casesimpl and caseremove wrt scrutinee binders.
Matthijs Kooijman [Wed, 10 Mar 2010 13:54:04 +0000 (14:54 +0100)]
Fix casesimpl and caseremove wrt scrutinee binders.

Previously, they would not check if the scrutinee binder was used,
resulting in it being removed or incorrectly used in some cases.

14 years agoPut a list of builtin functions in VHDL.Constants
Matthijs Kooijman [Wed, 10 Mar 2010 12:32:07 +0000 (13:32 +0100)]
Put a list of builtin functions in VHDL.Constants

This will allow normalization to use this list, without creating
circular dependencies by using VHDL.Generate.globalNameTable.

14 years agoLet classoperationresolution handle partially inlined dictionaries.
Matthijs Kooijman [Wed, 10 Mar 2010 11:36:55 +0000 (12:36 +0100)]
Let classoperationresolution handle partially inlined dictionaries.

Previously, if a dictionary argument was not yet an application of a
dataconstructor (e.g., completely inlined) but an application of a
polymorphic top level binder (e.g., $fsomething), then it would complain
about mismatching types.

14 years agoMake listBindings return IO () instead of IO [()].
Matthijs Kooijman [Mon, 8 Mar 2010 11:07:27 +0000 (12:07 +0100)]
Make listBindings return IO () instead of IO [()].

The previous type caused ghci to print an extra list of units after the
regular output, while it simple ignores the single tuple now.

14 years agoShow classes in listBindings output.
Matthijs Kooijman [Mon, 8 Mar 2010 10:54:45 +0000 (11:54 +0100)]
Show classes in listBindings output.

14 years agoShow uniques in listBindings output.
Matthijs Kooijman [Mon, 8 Mar 2010 10:54:26 +0000 (11:54 +0100)]
Show uniques in listBindings output.

14 years agoAdd class operation resolution transformation.
Matthijs Kooijman [Mon, 8 Mar 2010 10:35:52 +0000 (11:35 +0100)]
Add class operation resolution transformation.

This transformation enables user-defined type classes.

14 years agoAdd dictionary inlining transformation.
Matthijs Kooijman [Mon, 8 Mar 2010 09:49:51 +0000 (10:49 +0100)]
Add dictionary inlining transformation.

14 years agoLet inlinetoplevel use getNormalized_maybe.
Matthijs Kooijman [Fri, 5 Mar 2010 17:20:51 +0000 (18:20 +0100)]
Let inlinetoplevel use getNormalized_maybe.

This makes the transformation slightly simpler and prepares it for
inlining dictionaries next.

14 years agoLet getNormalized return Nothing on non-normalizeable functions.
Matthijs Kooijman [Fri, 5 Mar 2010 17:15:49 +0000 (18:15 +0100)]
Let getNormalized return Nothing on non-normalizeable functions.

14 years agoAdd variant of isNormalizeable that operates in the TranslatorSession.
Matthijs Kooijman [Fri, 5 Mar 2010 17:14:45 +0000 (18:14 +0100)]
Add variant of isNormalizeable that operates in the TranslatorSession.

14 years agoAdd variant of isRepr that operates in the TranslatorSession.
Matthijs Kooijman [Fri, 5 Mar 2010 17:12:51 +0000 (18:12 +0100)]
Add variant of isRepr that operates in the TranslatorSession.

14 years agoAdd getNormalized_maybe that does not fail if a binder was not found.
Matthijs Kooijman [Fri, 5 Mar 2010 16:54:45 +0000 (17:54 +0100)]
Add getNormalized_maybe that does not fail if a binder was not found.

14 years agoRemove getBinding and use getGlobalBind instead.
Matthijs Kooijman [Fri, 5 Mar 2010 16:29:02 +0000 (17:29 +0100)]
Remove getBinding and use getGlobalBind instead.

14 years agoSupport stateful functions with no own state (only substate).
Matthijs Kooijman [Wed, 3 Mar 2010 13:05:33 +0000 (14:05 +0100)]
Support stateful functions with no own state (only substate).

14 years agoAllow inlining of head and friends.
Matthijs Kooijman [Wed, 3 Mar 2010 13:05:19 +0000 (14:05 +0100)]
Allow inlining of head and friends.

14 years agoUse fromMaybe with an error message instead of fromJust.
Matthijs Kooijman [Wed, 3 Mar 2010 12:30:44 +0000 (13:30 +0100)]
Use fromMaybe with an error message instead of fromJust.

14 years agoIgnore all applications that have an empty result type.
Matthijs Kooijman [Wed, 3 Mar 2010 12:20:43 +0000 (13:20 +0100)]
Ignore all applications that have an empty result type.

14 years agoCopy initial state when specializing functions.
Matthijs Kooijman [Wed, 3 Mar 2010 12:20:22 +0000 (13:20 +0100)]
Copy initial state when specializing functions.

14 years agoIgnore selector cases selecting empty typed values.
Matthijs Kooijman [Wed, 3 Mar 2010 11:54:52 +0000 (12:54 +0100)]
Ignore selector cases selecting empty typed values.

This occurse when you use unzip in combination with a vector of
substates.

14 years agoSupport unzipping of a vector containing state values.
Matthijs Kooijman [Wed, 3 Mar 2010 11:48:20 +0000 (12:48 +0100)]
Support unzipping of a vector containing state values.

14 years agoAdd some comments.
Matthijs Kooijman [Wed, 3 Mar 2010 11:48:15 +0000 (12:48 +0100)]
Add some comments.

14 years agoMake getFieldLabels errors more verbose.
Matthijs Kooijman [Wed, 3 Mar 2010 10:21:53 +0000 (11:21 +0100)]
Make getFieldLabels errors more verbose.

14 years agoGive a proper error when a vector of an empty type is used.
Matthijs Kooijman [Wed, 3 Mar 2010 10:08:22 +0000 (11:08 +0100)]
Give a proper error when a vector of an empty type is used.

14 years agoAllow ! to be inlined.
Matthijs Kooijman [Wed, 3 Mar 2010 10:08:11 +0000 (11:08 +0100)]
Allow ! to be inlined.

14 years agoUpdate module name in error message.
Matthijs Kooijman [Wed, 3 Mar 2010 09:51:54 +0000 (10:51 +0100)]
Update module name in error message.

14 years agoLet scrutinee binder removal mark the expression as changed.
Matthijs Kooijman [Mon, 7 Dec 2009 14:11:04 +0000 (15:11 +0100)]
Let scrutinee binder removal mark the expression as changed.

14 years agoAlso inline some arithmetic operators.
Matthijs Kooijman [Mon, 7 Dec 2009 13:57:55 +0000 (14:57 +0100)]
Also inline some arithmetic operators.

14 years agoAdd TODO.
Matthijs Kooijman [Tue, 1 Dec 2009 19:28:49 +0000 (20:28 +0100)]
Add TODO.

14 years agoMerge branch 'master' of git://github.com/christiaanb/clash into cλash
Matthijs Kooijman [Mon, 30 Nov 2009 21:52:16 +0000 (22:52 +0100)]
Merge branch 'master' of git://github.com/christiaanb/clash into cλash

* 'master' of git://github.com/christiaanb/clash:
  Multiplications are now resized to mimic the behaviour in Haskell
  Fix haddock generation

14 years agoAdd comment.
Matthijs Kooijman [Mon, 30 Nov 2009 21:51:55 +0000 (22:51 +0100)]
Add comment.

15 years agoMultiplications are now resized to mimic the behaviour in Haskell
Christiaan Baaij [Wed, 25 Nov 2009 13:01:31 +0000 (14:01 +0100)]
Multiplications are now resized to mimic the behaviour in Haskell

15 years agoFix haddock generation
Christiaan Baaij [Wed, 11 Nov 2009 16:20:23 +0000 (17:20 +0100)]
Fix haddock generation

15 years agoMerge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
Christiaan Baaij [Wed, 11 Nov 2009 14:52:33 +0000 (15:52 +0100)]
Merge branch 'cλash' of git.stderr.nl/matthijs/projects/master-project

* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
  Actually make the scrutinee binder removal not crash.
  Add scrutinee binder removal transformation.

15 years agoClean up source files:
Christiaan Baaij [Wed, 11 Nov 2009 14:49:50 +0000 (15:49 +0100)]
Clean up source files:

- Remove unused imports
- Remove unneeded '$'
- Remove unneeded 'do'
- Remove unneeded 'return'
- Replace 'concat $ map' by 'concatMap'
- Replace 'mapM' by 'mapM_' if return value is not stored
- Replace 'not $ x `elem` xs' by 'x `notElem` xs'

15 years agoActually make the scrutinee binder removal not crash.
Matthijs Kooijman [Wed, 11 Nov 2009 13:38:26 +0000 (14:38 +0100)]
Actually make the scrutinee binder removal not crash.

15 years agoAdd scrutinee binder removal transformation.
Matthijs Kooijman [Wed, 11 Nov 2009 11:12:48 +0000 (12:12 +0100)]
Add scrutinee binder removal transformation.

This code is untested, for I have been unable to produce Haskell code to
which it applies...

15 years agoUse data-accessor-transformers package to remove deprecation warnings
Christiaan Baaij [Tue, 10 Nov 2009 16:42:18 +0000 (17:42 +0100)]
Use data-accessor-transformers package to remove deprecation warnings

15 years agoFixed VHDL Type generation, vhdlTy now uses HType's to generate VHDL Types. Logic...
Christiaan Baaij [Tue, 10 Nov 2009 13:49:47 +0000 (14:49 +0100)]
Fixed VHDL Type generation, vhdlTy now uses HType's to generate VHDL Types. Logic from vhdlTy moved to mkHType

15 years agoStart support on initial state. Substates currently break
Christiaan Baaij [Fri, 6 Nov 2009 12:12:00 +0000 (13:12 +0100)]
Start support on initial state. Substates currently break

15 years agoAdd built-in split function
Christiaan Baaij [Fri, 6 Nov 2009 12:11:22 +0000 (13:11 +0100)]
Add built-in split function

15 years agoUpdate reducer
Christiaan Baaij [Fri, 6 Nov 2009 12:07:21 +0000 (13:07 +0100)]
Update reducer

15 years agoFix error message genNegation for non-SizedWord types
Christiaan Baaij [Mon, 28 Sep 2009 12:13:47 +0000 (14:13 +0200)]
Fix error message genNegation for non-SizedWord types

15 years agoFix bug with generating head and tail functions. Update builtin resize function
Christiaan Baaij [Wed, 23 Sep 2009 12:29:57 +0000 (14:29 +0200)]
Fix bug with generating head and tail functions. Update builtin resize function

15 years agoFail again when we try translate a DEFAULT condition
Christiaan Baaij [Wed, 9 Sep 2009 12:13:29 +0000 (14:13 +0200)]
Fail again when we try translate a DEFAULT condition

15 years agoAdd some comments
Christiaan Baaij [Wed, 9 Sep 2009 11:57:49 +0000 (13:57 +0200)]
Add some comments

15 years agoOmit empty block statements in test bench
Christiaan Baaij [Wed, 9 Sep 2009 11:42:09 +0000 (13:42 +0200)]
Omit empty block statements in test bench

15 years agoAdd support for multiple alts in case statements
Christiaan Baaij [Wed, 9 Sep 2009 10:11:43 +0000 (12:11 +0200)]
Add support for multiple alts in case statements

15 years agoAdd support for enumeration types.
Christiaan Baaij [Wed, 9 Sep 2009 07:27:29 +0000 (09:27 +0200)]
Add support for enumeration types.

The generated VHDL 'show' function is kind of lame, it only prints
the name of the type, not the actual datacon.

15 years agoMerge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
Christiaan Baaij [Tue, 8 Sep 2009 11:31:38 +0000 (13:31 +0200)]
Merge branch 'cλash' of git.stderr.nl/matthijs/projects/master-project

* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
  Add a trailing newline to HighOrdAlu.
  Add comments to the inlinetoplevel transformation.
  Update comments for inlinenonrep.
  Fix typo.
  Fix typo.

15 years agoAdd support for fromIntegerT
Christiaan Baaij [Tue, 8 Sep 2009 11:31:18 +0000 (13:31 +0200)]
Add support for fromIntegerT

15 years agoAdd some gt,lt,gteq and lteq boolean operators
Christiaan Baaij [Tue, 8 Sep 2009 11:28:17 +0000 (13:28 +0200)]
Add some gt,lt,gteq and lteq boolean operators

15 years agoAdd a trailing newline to HighOrdAlu.
Matthijs Kooijman [Tue, 1 Sep 2009 19:26:55 +0000 (21:26 +0200)]
Add a trailing newline to HighOrdAlu.

15 years agoAdd comments to the inlinetoplevel transformation.
Matthijs Kooijman [Tue, 1 Sep 2009 19:26:24 +0000 (21:26 +0200)]
Add comments to the inlinetoplevel transformation.

15 years agoUpdate comments for inlinenonrep.
Matthijs Kooijman [Tue, 1 Sep 2009 19:06:55 +0000 (21:06 +0200)]
Update comments for inlinenonrep.

15 years agoFix typo.
Matthijs Kooijman [Tue, 1 Sep 2009 19:02:50 +0000 (21:02 +0200)]
Fix typo.

15 years agoMerge branch 'master' of git://github.com/christiaanb/clash into cλash
Matthijs Kooijman [Tue, 1 Sep 2009 14:39:20 +0000 (16:39 +0200)]
Merge branch 'master' of git://github.com/christiaanb/clash into cλash

* 'master' of git://github.com/christiaanb/clash:
  Use boolean as write enable signal

15 years agoUse boolean as write enable signal
Christiaan Baaij [Sat, 29 Aug 2009 16:11:15 +0000 (18:11 +0200)]
Use boolean as write enable signal

15 years agoFix typo.
Matthijs Kooijman [Fri, 28 Aug 2009 14:08:21 +0000 (16:08 +0200)]
Fix typo.

15 years agoMerge branch 'master' of git://github.com/christiaanb/clash into cλash
Matthijs Kooijman [Fri, 28 Aug 2009 14:07:30 +0000 (16:07 +0200)]
Merge branch 'master' of git://github.com/christiaanb/clash into cλash

* 'master' of git://github.com/christiaanb/clash:
  TFP has updated/remade. Change hardwaretypes accordingly
  Connect resetn port to states.
  Fix the resetn signal in the testbench, it is now correctly '0' for 3 ns, and after that '1'

15 years agoTFP has updated/remade. Change hardwaretypes accordingly
Christiaan Baaij [Thu, 20 Aug 2009 20:03:46 +0000 (22:03 +0200)]
TFP has updated/remade. Change hardwaretypes accordingly

Delete your old git repo of TFP, it doesn't include the darcs history
from the original TFP from Peter Gavin. Then clone the new TFP.

15 years agoConnect resetn port to states.
Christiaan Baaij [Thu, 20 Aug 2009 12:22:09 +0000 (14:22 +0200)]
Connect resetn port to states.

Atleast initial state can now easily be added manual.
Be sure to update to the latest 'vhdl' package as the
old one incorrectly pretty printed the "elsif" keyword

15 years agoFix the resetn signal in the testbench, it is now correctly '0' for 3 ns, and after...
Christiaan Baaij [Thu, 20 Aug 2009 11:56:10 +0000 (13:56 +0200)]
Fix the resetn signal in the testbench, it is now correctly '0' for 3 ns, and after that '1'

15 years agoMerge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
Christiaan Baaij [Thu, 20 Aug 2009 07:15:43 +0000 (09:15 +0200)]
Merge branch 'cλash' of git.stderr.nl/matthijs/projects/master-project

* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
  Add a not in isUserDefined.
  Let vhld_ty handle free tyvars gracefully.
  Add ty_has_free_tyvars predicate.
  Split substitute into substitute and substitute_clone.
  Rewrite substitute to clone the substitution range.
  Don't error on type abstraction when cloning binders.
  When inlining top level functions, guarantee uniqueness.
  Make all binders unique before normalizing.
  Add genUniques function to regenerate all uniques.
  Add mapAccumLM helper function.
  Don't try to inline non-normalizeable top level  functions.
  Add andM and orM utility functions.
  Add isNormalizeable predicate.
  Make isRepr work on TypedThings instead of CoreExpr.
  Also inline functions named "fromInteger".
  Don't extra non-representable values in simplres.
  Use isUserDefined for (not) inlining top level functions.
  Add isUserDefined predicate.
  Inline all top level functions that look simple.

15 years agoMerge branch 'master' of git://github.com/christiaanb/clash into cλash
Matthijs Kooijman [Wed, 19 Aug 2009 15:54:38 +0000 (17:54 +0200)]
Merge branch 'master' of git://github.com/christiaanb/clash into cλash

* 'master' of git://github.com/christiaanb/clash:
  Work around some bugs in the current clash to make reducer compile correctly
  Just name the testbench: testbench; don't add the unique
  No longer allow slashes in extended names, they are now stripped
  Used unsigned instead of natural as representation of RangedWord
  Add resetn ports

15 years agoAdd a not in isUserDefined.
Matthijs Kooijman [Wed, 19 Aug 2009 15:34:23 +0000 (17:34 +0200)]
Add a not in isUserDefined.

The meaning of isUserDefined was accidentally reversed.

15 years agoLet vhld_ty handle free tyvars gracefully.
Matthijs Kooijman [Wed, 19 Aug 2009 15:32:11 +0000 (17:32 +0200)]
Let vhld_ty handle free tyvars gracefully.

Previously, free type vars could result in ugly errors from eval_tfp_int
and friends. Now, a type with free type vars is correctly marked as
non-representable.

15 years agoAdd ty_has_free_tyvars predicate.
Matthijs Kooijman [Wed, 19 Aug 2009 15:31:48 +0000 (17:31 +0200)]
Add ty_has_free_tyvars predicate.

15 years agoSplit substitute into substitute and substitute_clone.
Matthijs Kooijman [Wed, 19 Aug 2009 15:14:50 +0000 (17:14 +0200)]
Split substitute into substitute and substitute_clone.

Since cloning is not needed (nor possible) for type substitutions, this
makes things a bit more clear and elegant.

15 years agoRewrite substitute to clone the substitution range.
Matthijs Kooijman [Wed, 19 Aug 2009 14:45:54 +0000 (16:45 +0200)]
Rewrite substitute to clone the substitution range.

This makes substitute no longer use CoreSubst for id substitutions, just
for type substitutions (which we don't have to clone before replacing
them). By cloning the substitution range before every substitution, we
keep the binders in it globally unique.

15 years agoDon't error on type abstraction when cloning binders.
Matthijs Kooijman [Wed, 19 Aug 2009 14:38:35 +0000 (16:38 +0200)]
Don't error on type abstraction when cloning binders.

Since we might encounter type abstractions before normalizations, the old
behaviour broke on polymorphic functions (Though type arguments would have
been propagated, there would still be type abstractions directly applied
to the propagated types).

Note that this not actually clones the type variables, it just leaves them
untouched. Since we should never introduce new type variables, this should
_probably_ work out...

15 years agoWhen inlining top level functions, guarantee uniqueness.
Matthijs Kooijman [Wed, 19 Aug 2009 12:42:58 +0000 (14:42 +0200)]
When inlining top level functions, guarantee uniqueness.

15 years agoMake all binders unique before normalizing.
Matthijs Kooijman [Wed, 19 Aug 2009 12:35:23 +0000 (14:35 +0200)]
Make all binders unique before normalizing.

15 years agoAdd genUniques function to regenerate all uniques.
Matthijs Kooijman [Wed, 19 Aug 2009 12:31:03 +0000 (14:31 +0200)]
Add genUniques function to regenerate all uniques.

This function replaces all uniques within an expression with new ones, to
generate their uniqueness.

15 years agoAdd mapAccumLM helper function.
Matthijs Kooijman [Wed, 19 Aug 2009 12:35:06 +0000 (14:35 +0200)]
Add mapAccumLM helper function.

15 years agoDon't try to inline non-normalizeable top level functions.
Matthijs Kooijman [Wed, 19 Aug 2009 10:32:00 +0000 (12:32 +0200)]
Don't try to inline non-normalizeable top level  functions.

Since we do normalization before inlining, we should only try this with
functions that can be normalized.

15 years agoAdd andM and orM utility functions.
Matthijs Kooijman [Wed, 19 Aug 2009 10:31:48 +0000 (12:31 +0200)]
Add andM and orM utility functions.

15 years agoAdd isNormalizeable predicate.
Matthijs Kooijman [Wed, 19 Aug 2009 10:31:17 +0000 (12:31 +0200)]
Add isNormalizeable predicate.

15 years agoMake isRepr work on TypedThings instead of CoreExpr.
Matthijs Kooijman [Wed, 19 Aug 2009 10:16:43 +0000 (12:16 +0200)]
Make isRepr work on TypedThings instead of CoreExpr.