[GHC] #9898: Wanted: higher-order type-level programming (was: Couldn't match type `(Char, ())' with `()')
GHC
ghc-devs at haskell.org
Thu Dec 18 10:17:57 UTC 2014
#9898: Wanted: higher-order type-level programming
-------------------------------------+-------------------------------------
Reporter: erisco | Owner:
Type: feature | Status: new
request | Milestone:
Priority: normal | Version: 7.8.3
Component: Compiler | Keywords:
(Type checker) | Architecture: x86_64 (amd64)
Resolution: | Difficulty: Unknown
Operating System: Windows | Blocked By:
Type of failure: GHC | Related Tickets:
rejects valid program |
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Changes (by simonpj):
* type: bug => feature request
Comment:
HEAD correctly says
{{{
T9898.hs:20:10:
Type family ‘Equal’ should have 2 arguments, but has been given 1
In the type signature for ‘test1’:
test1 :: ApplyFilter ((Equal Int) Char) (Char,
Filter (Equal Int) ())
T9898.hs:27:10:
Type family ‘Equal’ should have 2 arguments, but has been given 1
In the type signature for ‘test3’:
test3 :: Filter (Equal Int) (Char, ())
T9898.hs:31:10:
Type family ‘Equal’ should have 2 arguments, but has been given 1
In the type signature for ‘test4’:
test4 :: Filter (Equal Int) (Char, ())
}}}
You can't partially apply a type function, I'm afraid. Yes, that limits
higher-order programming. Better solutions (that still support type
inference) most welcome.
I'll leave this open as a feature request for higher order type level
programming.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9898#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list