Ticket #4466 (new feature request)
Add extension for type application
| Reported by: | igloo | Owned by: | |
|---|---|---|---|
| Priority: | low | Milestone: | 7.6.2 |
| Component: | Compiler | Version: | 6.12.3 |
| Keywords: | Cc: | wren@…, sweirich@…, mail@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
In http://www.haskell.org/pipermail/libraries/2010-October/014761.html we discussed adding an extension for explicit type application.
The main stumbling block is syntax.
For example, we would like to be able to write something to the effect of
(Just @ Char) 'a'
and also to be able to pattern match types, e.g.
f ((Just @ t) x) = (Right @ String @ t) x
For a more useful example:
data T where
MkT :: forall a. a -> (a -> Int) -> T
f (MkT @ a x g) = g (x::a)
Possible suggested syntaxes to make something of type
Maybe (forall a. a->a)
were:
Just @ (forall a. a->a) id (@ has another meaning in patterns)
Just[forall a. a->a] id (pvs, opal, HasCASL with paramterized modules; conflicts with Haskell list syntax)
Just {forall a. a->a} id (Agda)
#Just (forall a. a->a) id
@Just (forall a. a->a) id (coq)
In the last 2 cases we would presumably have something like
Just :: forall a . a -> Maybe a Just :: Char -> Maybe Char #Just :: /\ a . a -> Maybe a #Just Char :: Char -> Maybe Char
and similarly
#map :: /\ a b . (a -> b) -> [a] -> [b]
Change History
Note: See
TracTickets for help on using
tickets.
