There's also Backpack, which adds something similar to ML's module system*
to Haskell, except at the package level:
https://plv.mpi-sws.org/backpack/backpack-paper.pdf

* It's more similar to Rossberg & Dreyer's MixML than it is to Standard ML
or OCaml's module systems.

On Mon, Jan 22, 2018 at 2:13 PM, Matthias Felleisen <[email protected]>
wrote:

>
> I think MLers complain about two things here:
>
> — ML’s module system is basically a language that works at the type level.
> I think OldCamlers mean this mostly.
> — ML’s module system is also a typed lambda calculus whose basic values
> are structs, aka, atomic modules. You can get a sense of this with units.
>
> Haskell lacks both. There is a paper with Harper and Dreyer and a Haskell
> person that tries to connect Haskell with ML at the type level, but not
> comprehensively like the above.
>
> Yes, it is difficult to evaluate an abstraction without having worked with
> them. Not even implementing them helps :-) Let me recommend an exercise:
>
>  work thru the Sendai paper with an SML that finally provides recursive
> functors.
>  https://www2.ccs.neu.edu/racket/pubs/#tacs94-cf
>  (This is the paper that inspired Units. I had coded everything in sml/nj
> when I figured out that you couldn’t tie the knot with functors. So I
> rewrote all of it with Scheme.)
>
> — Matthias
>
>
>
>
>
>
>
> > On Jan 22, 2018, at 1:22 PM, Alexis King <[email protected]> wrote:
> >
> > Thank you for this explanation.
> >
> > I consider myself largely an outsider looking in on module systems, but
> > I often hear SML and OCaml programmers complaining, wondering when
> > Haskell is going to “get a real module system”. I’d like to do right
> > thing in Hackett if I can, but I don’t really know what the right thing
> > is, since I have written precious little ML, and what I have written is
> > certainly not enough to get a feel for how modules affect large program
> > construction. It’s unfortunately difficult (perhaps impossible?) to get
> > an understanding of the usefulness of an abstraction without using it
> > oneself, so maybe I ought to just sit down and write some ML programs.
> >
> > Alexis
> >
> >> On Jan 21, 2018, at 1:26 PM, Matthias Felleisen
> >> <[email protected]> wrote:
> >>
> >> Units were the wrong approach to everyday modularity.They were, and
> >> they are, the correct solution to design problems such as those
> >> explained in our original paper on the idea.
> >>
> >> Units suffer from a large notational overhead for everyday use. The
> >> second edition, due to Owens and Flatt, does a bit better with the
> >> introduction of 'linking inference’ but it was too little too ate. The
> >> other disadvantage of units concerns syntactic abstraction. You really
> >> want to parameterize modules over their implementation language.
> >> Shriram generalized units to unit/lang in his dissertation, but this
> >> proved too difficult to implement. Matthew proposed to make modules
> >> first-order, as opposed to first-class values, and this worked out
> >> well. I still use units on rare occasions, for example to mimic
> >> complex testing contexts and to deploy the same module-level
> >> abstraction _twice_ in the same program. These situations are rare,
> >> however.
> >>
> >> Historical note. ML programmers got it similarly wrong when they
> >> pushed for “fully functorized” style. Once their compilation manager
> >> came online, they abandoned this style too and simply allowed the
> >> linker to connect structs as specified. I happened to be with these
> >> MLers for a year, which inspired me for the unit-like abstraction when
> >> we launched Racket/PLT Scheme. Functors are needed in the same
> >> situations as units but had less expressive power (recursive/dynamic
> >> linking).
> >>
> >> — Matthias
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Racket Users" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to