caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: Simon Cruanes <simon.cruanes.2007@m4x.org>
Cc: Christophe Troestler <Christophe.Troestler@umons.ac.be>,
	 OCaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] We need a rich standard library distributed with OCaml, really
Date: Fri, 28 Aug 2015 17:27:43 +0200	[thread overview]
Message-ID: <CAPFanBEoMe6CNYN-O0TGqWuF7aSPMsnjSZGBNgNkAiBLiXpAOA@mail.gmail.com> (raw)
In-Reply-To: <99BCDBE7-CB9C-416B-AFB6-EAA3E6F71BB1@m4x.org>

On Fri, Aug 28, 2015 at 5:02 PM, Simon Cruanes
<simon.cruanes.2007@m4x.org> wrote:
> I tried to propose the structural type 'a sequence = ('a -> unit) -> unit
> as a glue between data structures [...] but so far Core and batteries
> do not use it.

This is a golden occasion to point out to everyone that contributions
adding `to_seq`, `of_seq` conversion functions to Batteries data
structures are warmly welcome. (If you are wondering what's a
practical step to help improving the "base library" ecosystem...)

You may find out that it is not in general trivial to implement these
(for the reason explained in this blog post:
http://gallium.inria.fr/blog/generators-iterators-control-and-continuations/),
but luckily all the hard lifting has already been done to support
functions to and from the Enum type, and generalizing these to also
provide sequence providers or consumers should not be too hard.

On Fri, Aug 28, 2015 at 5:02 PM, Simon Cruanes
<simon.cruanes.2007@m4x.org> wrote:
> I strongly support the view that interoperability is important. Defining
> common, compatible types is necessary for a peaceful cohabitation of
> multiple stdlibs (types for json, xml, result, unicode, iterators, etc.)
> Some types should be provided by OCaml (result and Uchar imho); some other
> we should agree on. I tried to propose the structural type 'a sequence = ('a
> -> unit) -> unit as a glue between data structures (efficient, easy to
> provide, plays well with flambda) but so far Core and batteries do not use
> it.
>
> About the licensing, we have a diverse set of licenses, afaict.
>
> Cheers,
>
> Le 28 août 2015 14:08:26 UTC+02:00, Christophe Troestler
> <Christophe.Troestler@umons.ac.be> a écrit :
>>
>> Hi,
>>
>> The topic of a richer standard library was discussed extensively in the
>> past (before the advent of opam).  I believe Yaron's opinion is the one
>> generally agreed upon: the small core team should focus on the compiler and
>> it is up to the community to take care of libraries.
>>
>> In the last 10 years, the community has not agreed on what the “improved”
>> standard library should be, there always have been competing proposals and I
>> do not see that stopping in the near future.  I believe this is not a bad
>> thing, after all some applications have special requirements — such as being
>> able to be compiled to javascript — and it is hard for a single library to
>> satisfy everybody without being bloated.
>>
>> However, as this discussion shows, there are a few places where we could
>> do a better job.
>>
>> 1. INTEROPERABILITY: While many, possibly overlapping, libraries may be
>> seen as sign of liveliness of the community, they become a problem
>> if a user has to write boiler plate code to use them together.  Thus I
>> would propose that we sit down together and define a minimal set of modules
>> for interoperability purposes.  Since these modules would in general only
>> define some types, I propose to reserve the names type_* for that, possibly
>> with a version number at the end — so newer versions can coexist with older
>> ones and provide functions for backward compatibility.  Examples of such
>> modules are:
>>     - type_time: define date, time, and calendar types;
>>     - type_html: define a common representation for HTML documents (a
>> library can of course provide its own but should also have a function to
>> export to type_html);
>>     - type_xml
>>     - type_linear: a common, linear, exchange format between various
>> containers (e.g. a lazy list);
>>     - etc.
>>
>> 2. LICENSES: Every opam package comes with a license which should help
>> companies to choose which ones to use.  For the problem Hongbo mentioned,
>> maybe
>> one could develop a tool that does the following: given a white-list of
>> licenses that the company has agreed are OK (e.g. ISC) and a list of opam
>> packages, the tool would warn if any of the (recursive) dependencies does
>> not have a “good” license.
>>
>> 3. APPLICATION DOMAINS: A newcomer has to use resources like
>> https://github.com/rizo/awesome-ocaml/blob/master/sotu.md to understand what
>> packages are interesting for which domain.  These resources are maintained
>> by hand.  We should agree on a list of tags for important application
>> domains and add them to the appropriate opam packages.  An up-to-date list
>> (linked to each package, homepage,...) can then be generated automatically —
>> and posted, say, to opam.ocaml.org
>>
>>    One could also provide meta-packages to install sets of libraries with
>> a certain tag — for example all of batteries packages (once
>> split).
>>
>> My 0.02€,
>> C.
>
>
> --
> Simon

  reply	other threads:[~2015-08-28 15:28 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-27  2:52 Hongbo Zhang
2015-08-27  6:59 ` Christoph Höger
2015-08-27  7:18 ` Anthony Tavener
2015-08-27  8:17   ` Gabriel Scherer
2015-08-27 10:35     ` Romain Bardou
2015-08-27 19:55       ` Martin DeMello
2015-08-27 20:10         ` Yotam Barnoy
2015-08-27 23:24           ` Drup
2015-08-28 13:23           ` Philippe Veber
2015-08-27 20:17         ` Raoul Duke
2015-08-27 23:10       ` Martin Jambon
     [not found]     ` <20150827174554.14858.6618@localhost>
2015-08-27 18:42       ` [Caml-list] Fwd: " Emmanuel Surleau
2015-08-27 21:17     ` [Caml-list] " Paolo Donadeo
2015-08-27 21:51       ` Oliver Bandel
2015-08-27 21:56         ` Oliver Bandel
2015-08-27 22:04           ` Oliver Bandel
2015-08-28  0:50     ` Hongbo Zhang
2015-08-31 16:06     ` Stéphane Glondu
2015-08-31 16:14       ` Francois Berenger
2015-08-31 16:44         ` Hendrik Boom
2015-08-31 18:04           ` Ian Zimmerman
2015-08-31 17:26         ` Stéphane Glondu
2015-09-01 15:06           ` Anil Madhavapeddy
2015-08-31 17:34       ` Oliver Bandel
2015-09-01 13:46       ` Gabriel Scherer
2015-08-27  8:07 ` Sébastien Hinderer
2015-08-27  8:20   ` Daniil Baturin
2015-08-27  9:34     ` Edouard Evangelisti
2015-08-28  9:07       ` r.3
2015-08-27  8:12 ` Francois Berenger
2015-08-27 11:57   ` Drup
2015-08-27 14:17 ` Yaron Minsky
2015-08-27 16:00   ` Jesse Haber-Kucharsky
2015-08-28  0:33     ` Hongbo Zhang
2015-08-28  1:53       ` Daniel Bünzli
     [not found]       ` <20150828.140826.2157566405742612169.Christophe.Troestler@umons.ac.be>
2015-08-28 12:38         ` Thomas Braibant
2015-08-28 13:00           ` [Caml-list] opam license field (was Re: We need a rich standard library distributed with OCaml, really) Daniel Bünzli
2015-08-28 13:06             ` David Sheets
2015-08-28 14:01         ` [Caml-list] We need a rich standard library distributed with OCaml, really Oliver Bandel
2015-08-31 15:26           ` Hendrik Boom
2015-08-28 14:35         ` Alain Frisch
2015-08-29 19:02           ` David MENTRÉ
2015-08-31 12:37             ` Jon Harrop
2015-08-31 15:05               ` Emmanuel Surleau
2015-08-31 17:31                 ` Oliver Bandel
2015-08-28 15:02         ` Simon Cruanes
2015-08-28 15:27           ` Gabriel Scherer [this message]
2015-08-28 15:51         ` Oliver Bandel
2015-08-31 18:40       ` Ashish Agarwal
2016-03-27 20:54     ` Jon Harrop
2016-03-27 21:21       ` Simon Cruanes
2016-03-27 23:48       ` Yaron Minsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPFanBEoMe6CNYN-O0TGqWuF7aSPMsnjSZGBNgNkAiBLiXpAOA@mail.gmail.com \
    --to=gabriel.scherer@gmail.com \
    --cc=Christophe.Troestler@umons.ac.be \
    --cc=caml-list@inria.fr \
    --cc=simon.cruanes.2007@m4x.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).