So a number of people responded with various ways this is already possible.
Of course GHC can already do this... it's type inference. The part I'm
interested in working on is exposing the functionality in GHC's API to make
this as easy as possible.
-Abram
_
On Thu, 20 Mar 2008, Roberto Zunino wrote:
ac wrote:
foo :: [Foo] ->
foo xs = map xs
What are the possible type signatures for placeholder 1 and the possible
expressions for placeholder 2?
A nice GHCi trick I learned from #haskell:
:t let foo xs = map ?placeholder2 xs in foo
forall a
You can transform this into valid Haskell98 in the following way:
foo_infer xs _ | const False (xs :: [Foo]) = undefined
foo_infer xs placeholder_2 = map ph xs
foo xs = foo_infer xs undefined
You can then do type inference on "foo_infer", giving you
foo_infer :: [Foo] -> (Foo -> a) -> [a]
whic
zunino:
> ac wrote:
> > foo :: [Foo] ->
> > foo xs = map xs
> >
> > What are the possible type signatures for placeholder 1 and the possible
> > expressions for placeholder 2?
>
> A nice GHCi trick I learned from #haskell:
>
> > :t let foo xs = map ?placeholder2 xs in foo
>
> forall a b. (?
ac wrote:
> foo :: [Foo] ->
> foo xs = map xs
>
> What are the possible type signatures for placeholder 1 and the possible
> expressions for placeholder 2?
A nice GHCi trick I learned from #haskell:
> :t let foo xs = map ?placeholder2 xs in foo
forall a b. (?placeholder2::a -> b) => [a] ->
Is anybody interested in working on this? This is a project I've been
interested in for some time, but recognize I probably need some guidance
before I go off and start hacking on it. As dcoutts pointed out on
#haskell-soc, this may be of particular interest to people working on yi and
HaRe. Other