Skip to content

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