curry-frontend issueshttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues2019-11-18T11:09:12Zhttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/68Make recompilation robust w.r.t. different compilers2019-11-18T11:09:12ZFinn TeegenMake recompilation robust w.r.t. different compilershttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/67Use explicit ForallTypes in FlatCurry representation2019-11-25T08:39:32ZFinn TeegenUse explicit ForallTypes in FlatCurry representationIn the FlatCurry representation, the two functions
```id :: a -> a```
and
```id :: forall a. a -> a```
should have the same normalized representation that uses the `ForallType` constructor in both cases.
In general, type variable qu...In the FlatCurry representation, the two functions
```id :: a -> a```
and
```id :: forall a. a -> a```
should have the same normalized representation that uses the `ForallType` constructor in both cases.
In general, type variable quantification should be explicit in the FlatCurry representation and type should be in weak prenex form.Jan-Hendrik MatthesJan-Hendrik Mattheshttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/65Fully implement the C preprocessor2019-11-15T12:45:57ZKai ProttFully implement the C preprocessorCurrently only `#define` `#ifdef`, ... are supported, but not `#include`Currently only `#define` `#ifdef`, ... are supported, but not `#include`https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/64Remove token stream as output format2019-11-13T12:57:00ZFinn TeegenRemove token stream as output formatThe token stream was originally introduced by Katharina Rahf as a new output format in the process of her master's thesis. However, because the frontend supports an abstract syntax tree containing span information by now, we no longer ha...The token stream was originally introduced by Katharina Rahf as a new output format in the process of her master's thesis. However, because the frontend supports an abstract syntax tree containing span information by now, we no longer have need of this output format.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/63Use MultiParamTypeClasses in `Base.Types`2019-10-28T10:31:31ZKai ProttUse MultiParamTypeClasses in `Base.Types`Or at least delete the TODOOr at least delete the TODOhttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/62Extend WarnCheck2022-03-01T18:22:21ZKai ProttExtend WarnCheckshadowing, etc.shadowing, etc.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/61Support polymorphic let declarations2019-11-08T17:33:32ZKai ProttSupport polymorphic let declarationshttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/60Rework `Simplify.sharePatternRhs`2019-10-28T10:31:24ZKai ProttRework `Simplify.sharePatternRhs`https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/59Rework Record desugaring2019-10-28T10:19:16ZKai ProttRework Record desugaringhttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/58Check if all generated files are properly closed2019-10-28T10:18:02ZKai ProttCheck if all generated files are properly closedhttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/56Check why `SyntaxCheck.checkVar` does not report non-variable usages2019-10-28T10:16:21ZKai ProttCheck why `SyntaxCheck.checkVar` does not report non-variable usageshttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/55Document derive transformation2019-10-28T10:14:16ZKai ProttDocument derive transformationIn `Transformations.Derive`In `Transformations.Derive`https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/54Document module headers2019-10-28T10:12:47ZKai ProttDocument module headers* [ ] `Base.AnnotExpr`
* [ ] `Base.PrettyKinds`
* [ ] `Base.PrettyTypes`
* [ ] `CondCompile`
* [ ] `Il.Typing`
* [ ] `Transformations.Derive`
* [ ] `Transformations.Dictionary`* [ ] `Base.AnnotExpr`
* [ ] `Base.PrettyKinds`
* [ ] `Base.PrettyTypes`
* [ ] `CondCompile`
* [ ] `Il.Typing`
* [ ] `Transformations.Derive`
* [ ] `Transformations.Dictionary`https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/53Update `overview.md`2019-11-08T17:14:25ZKai ProttUpdate `overview.md`https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/52Check if position information is missing if the usage of a minus is ambiguous2019-10-28T10:05:19ZKai ProttCheck if position information is missing if the usage of a minus is ambiguoushttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/41Error when compiling a class definition with `NoImplicitPrelude`2019-10-07T16:20:36ZJan-Hendrik MatthesError when compiling a class definition with `NoImplicitPrelude`Compiling the following Curry program with the frontend
```haskell
{-# LANGUAGE NoImplicitPrelude #-}
class A a where
funA :: a -> a
```
produces the following error message.
```
curry-frontend: Internal error: Dictionary.funType Q...Compiling the following Curry program with the frontend
```haskell
{-# LANGUAGE NoImplicitPrelude #-}
class A a where
funA :: a -> a
```
produces the following error message.
```
curry-frontend: Internal error: Dictionary.funType QualIdent {qidSpanInfo = SpanInfo {srcSpan = Span {file = "", start = NoPos, end = NoPos}, srcInfoPoints = []}, qidModule = Just (ModuleIdent {midSpanInfo = NoSpanInfo, midQualifiers = ["Prelude"]}), qidIdent = Ident {idSpanInfo = NoSpanInfo, idName = "error", idUnique = 0}}
```
The problem is a result of the default implementation of the class method `funA`, which uses the `error` function from the `Prelude`. But the `Prelude` is not available due to the language extension `NoImplicitPrelude`.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/36Simplify generated FlatCurry when the specific type of a class function is known2019-03-25T12:16:16ZKai ProttSimplify generated FlatCurry when the specific type of a class function is knownCurrently a lot of apply-calls are inserted wherever a class function is used. This is not necessary whenever the arity of that function is known.
This is always the case when the specific type and thus the specific instance is known at...Currently a lot of apply-calls are inserted wherever a class function is used. This is not necessary whenever the arity of that function is known.
This is always the case when the specific type and thus the specific instance is known at compile-time.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/34Problems with modular Prelude2019-10-07T16:20:37ZKai ProttProblems with modular PreludeIt is not sufficient to just prevent the removal of unused imports for specific modules (critical modules will probably not be imported directly in the first place).
Thus, the current solution is not sufficient.
An alternative would be t...It is not sufficient to just prevent the removal of unused imports for specific modules (critical modules will probably not be imported directly in the first place).
Thus, the current solution is not sufficient.
An alternative would be to import every base module implicitly (like the Prelude).
*NoImplicitPrelude* would then be changed to prevent implicit import for every non-critical module.
| Module | Needed for (desugaring of) ... | Critical ? |
| ------ | ------ | ------ |
| Base.Eq | deriving of Eq | No |
| Base.Ord | deriving of Ord | No |
| Base.Enum | deriving of Enum | No |
| Base.Read | deriving of Read | No |
| Base.Show | deriving of Show | No |
| Base.Num | defaulting of Numerical types | No? |
| Base.Fractional | defaulting of Numerical types | No? |
| Base.Monad | desugaring of do-Notation | No? |
| Base.Types | Built-in datatypes | Yes |
| Base.Internal | desugaring of *FunctionalPatterns*, *Let* in PACKS | Yes |
| Base.Failed | desugaring of non-exhaustive Patterns | Yes |
| Base.Error | missing class methods | Yes |
| Base.Function | id is needed for desugaring of Newtypes, flip in acy | Yes |
| Base.Bool | ifThenElse is needed for desugaring of if in acy | No (with acy changes) |
| Base.List | (++) is needed for desugaring of ListCompr and to derive Read | No? |https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/33Refactor addition of built-in types to compiler environments2018-12-20T13:19:38ZKai ProttRefactor addition of built-in types to compiler environmentsSome of the compiler environments contain values for all built-in types.
It is unclear, whether or not this is needed everywhere.
Do they have to be qualified with the corresponding original name?
Additionally the types and constructors...Some of the compiler environments contain values for all built-in types.
It is unclear, whether or not this is needed everywhere.
Do they have to be qualified with the corresponding original name?
Additionally the types and constructors are inserted into the generated FlatCurry for the Prelude.
This is not the case for iCurry and AbstractCurry.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/32Show an error when desugaring of language constructs fails2019-11-08T17:14:00ZKai ProttShow an error when desugaring of language constructs failsThe frontend throws an internal error when de-sugaring something to a function that is not in scope.
This can happen if the Prelude is not imported entirely (or not at all via NoImplicitPrelude).The frontend throws an internal error when de-sugaring something to a function that is not in scope.
This can happen if the Prelude is not imported entirely (or not at all via NoImplicitPrelude).