Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make implicit functors ordinary module types #42

Merged
merged 4 commits into from
Nov 7, 2015

Conversation

lpw25
Copy link
Member

@lpw25 lpw25 commented Nov 3, 2015

Allow definitions like:

implicit module Foo {X : S} = struct ... end

to be separated into

module Foo {X : S} = struct ... end

implicit F = Foo

by treating functor {X : S} -> T as a proper module type distinguished
from functor (X : S) -> T. This also forces Foo(Bar) to now be written Foo{Bar}.

This should make #28 and #35 easier, as well as paving the way to one day support implicit module parameters.

By representing the three possible kinds of functor argument (generative, applicative and implicit) properly using a variant type the patch also flushes out a number of small bugs around generative functors.

lpw25 added 4 commits November 3, 2015 13:24
Allow definitions like:

  implicit module Foo {X : S} = struct ... end

to be separated into

  module Foo {X : S} = struct ... end

  implicit F = Foo

by treating `functor {X : S} -> T` as a proper module type distinguished
from `functor (X : S) -> T`.
lpw25 added a commit that referenced this pull request Nov 7, 2015
Make implicit functors ordinary module types
@lpw25 lpw25 merged commit 5dda604 into ocamllabs:modular-implicits Nov 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant