Ticket #4466 (new feature request)

Opened 3 years ago

Last modified 4 weeks ago

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

Changed 3 years ago by igloo

  • milestone set to 7.2.1

Changed 22 months ago by igloo

See also #5296.

Changed 16 months ago by igloo

  • priority changed from normal to low
  • milestone changed from 7.4.1 to 7.6.1

Changed 16 months ago by WrenThornton

  • cc wren@… added

Changed 9 months ago by igloo

  • milestone changed from 7.6.1 to 7.6.2

Changed 4 weeks ago by sweirich

  • cc sweirich@… added

Changed 4 weeks ago by kosmikus

  • cc mail@… added
Note: See TracTickets for help on using tickets.