documented 3 bugs

This commit is contained in:
sebastian 2023-03-26 14:12:09 +02:00
parent 213741407b
commit 2af7855a77
3 changed files with 57 additions and 30 deletions

29
src/TypeChecker/Bugs.md Normal file
View file

@ -0,0 +1,29 @@
# Bugs
## Using uninstantiated type variables
Program below should not type check
```hs
data Test (a) where {
Test : b -> Test (a)
};
```
## Duplicate definitions of functions
Program below should not type check
```hs
id x = x ;
id x = x ;
```
## What?
Program below should not type check
```hs
main : a -> b ;
main x = x;
```

View file

@ -1,30 +0,0 @@
data Maybe (a) where {
Nothing : Maybe (a)
Just : a -> Maybe (a)
};
fmap : (a -> b) -> Maybe (a) -> Maybe (b) ;
fmap f ma = case ma of {
Nothing => Nothing ;
Just a => Just (f a) ;
};
pure : a -> Maybe (a) ;
pure x = Just x ;
ap mf ma = case mf of {
Just f => case ma of {
Nothing => Nothing;
Just a => Just (f a);
};
Nothing => Nothing;
};
return = pure;
bind ma f = case ma of {
Nothing => Nothing ;
Just a => f a ;
};

28
test_program.crf Normal file
View file

@ -0,0 +1,28 @@
-- data Maybe (a) where {
-- Nothing : Maybe (a)
-- Just : a -> Maybe (a)
-- };
-- fmap : (a -> b) -> Maybe (a) -> Maybe (b) ;
-- fmap f ma = case ma of {
-- Nothing => Nothing ;
-- Just a => Just (f a) ;
-- };
-- pure : a -> Maybe (a) ;
-- pure x = Just x ;
-- ap mf ma = case mf of {
-- Just f => case ma of {
-- Nothing => Nothing;
-- Just a => Just (f a);
-- };
-- Nothing => Nothing;
-- };
-- return = pure;
-- bind ma f = case ma of {
-- Nothing => Nothing ;
-- Just a => f a ;
-- };