Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: John Goerzen <jgoerzen@complete.org>
To: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] Dynamically evaluating OCaml code
Date: Thu, 8 Apr 2004 10:30:56 -0500	[thread overview]
Message-ID: <20040408153056.GB30763@excelhustler.com> (raw)
In-Reply-To: <20040408145606.GA18473@fichte.ai.univie.ac.at>

On Thu, Apr 08, 2004 at 04:56:06PM +0200, Markus Mottl wrote:
> On Thu, 08 Apr 2004, John Goerzen wrote:
> > Also, there is no string_of_char function (I'd have to use fill).
> 
> That's not quite true: there is "String.make", which does what you want.

Yep, I missed that.

> > Similar complaints exist for working with subsets of lists; it's really
> > too hard to say "replace elements 4 through 9 with this", "delete
> > elements 4 through 9", "return elements 4 through 9", etc.
> 
> Yes, it's hard to do this with the current standard library.  The question
> is: who needs these functions anyway?  I can't remember ever having felt
> a need for them.

I need them all the time.  Just because you may not doesn't mean that
they are never needed.  For instance, I may get back a list of results
from a function that parses a network stream or a report, and I know
that I can always discard the first two and last three.  This is a
fairly common occurance here.

> > (While we're at it, I think it's silly that there is a list and an
> > array type).
> 
> I beg your pardon - what else do you have in mind???

One type that can do both.

> > Yes, I could write functions to do all of this, but my point is that
> > I shouldn't have to.
> 
> The point of the standard library is not to have a function for every
> imaginable problem but to have ones that cover standard problems.

Of course.  Do you think that obtaining slices of a list or printing the
current time in a human-readable format are not standard problems?  If
so, I would have to point out to you that there is a quite lengthy
history that supports my position on this.

> > This library problem hurts productivity, and in some cases makes OCaml
> > less productive than even C.
> 
> Things are not half as bad as you describe them here.  There may be
> cases where C is more productive - because you happen to have a library
> function for the problem.  But even in this case you can just interface
> to C, which is really not that difficult.

And I should not *have* to interface to C just to print out a date &
time or parse the time.  See, your attitude is part of the problem --
your position is that "it's not hard to reinvent the wheel."  My
position is that all the easy reinvention that has to happen adds up to
something that is hard, and goes against principles of code sharing,
since every OCaml programmer is going to reinvent things slightly
differently.

> There are surely cases where the OCaml standard library lacks generally
> useful functionality, but it's usually good enough for most problems.

Yes, "good enough", I'll buy that.  Barely.  But it's still *far* behind
other languages.  And you haven't even addressed my complaints about
IPv6 and other glaring socket omissions, read/write files handles,
string slicing, and IMAP libraries.  Should I add a few more?  Here are
some other functions that I have in C, Python, Perl (and, for the most
part, even Java) that are missing from OCaml:

realpath()
asctime()
strftime()
strptime()
basename()
dirname()
localtime()
gmtime()
ulimit()
getaddrinfo()
The following flags for recv/recvfrom: 
  MSG_WAITALL
  MSG_TRUNC
  MSG_ERRQUEUE
The following formats for socket():
  PF_INET6, PF_PACKET, PF_APPLETALK 
recvmsg()
mknod()
mountpoint()
ioctl()

These ommissions mean that I cannot write the following types of
programs in OCaml that I could in Python or Perl (and mostly, Java):

 * Any client or server that uses IPv6
 * Any file archiver or extractor
   + I cannot write a tar extractor in OCaml because no mknod() exists
   + I cannot write a general-purpose tar archiver in OCaml because
     mountpoint() does not exist (and I'd need that to implement -l)
 * Any kind of process (ie, server) that wishes to assert ulimit limits
   over its children (web servers restricting CGIs would be one example)
 * Any kind of program that reads or writes times obtained from
   the system in human-readable format
 * Things that need to obtain path information from relative paths
   in a secure manner that has no side-effects
 * A network tracer (tcpdump)
 * Audio programs (ioctl)
 * Tape backup utilities (ioctl)

These are all things that are in libc.  Most are specified in POSIX as
well and have been implemented widely for about 15 years.

If you limit the universe of "most problems" to be numerical analysis,
you may well be quite accurate.  However, such a limitation is going to
be misleading if you are talking about more general problems.  I have
zero need for numerical analysis tools here, and in the grand scheme of
things, needs for them make up a small minority of needs.

These are also real needs.  I regularly need to deal with times and
humans.  I also have done some work with archivers and the like, and the
problems highlighted here are real.  I have several machines that are
only reachable by IPv6, and this is a huge problem for me wrt OCaml.
OCaml apps are the only ones I have trouble with in this regard.

I do *not* need to do these things in a "system-level" language such as
C.  Perl and Python are both quite well suited to the ask, and OCaml
would be too if its standard library were more complete.  There is
nothing in the fundamental design of OCaml that prevents this.  In some
cases, it's just a matter of missing some constants from the system's .h
files.

-- John

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2004-04-08 15:30 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-07 18:47 John Goerzen
2004-04-07 20:37 ` Samuel Mimram
2004-04-07 21:05 ` Basile Starynkevitch
2002-01-04  0:43   ` Issac Trotts
2004-04-08  0:58     ` Dustin Sallings
2004-04-08  6:24     ` Brian Hurt
2004-04-08  7:47       ` Oleg Trott
2004-04-08  8:04         ` Ville-Pertti Keinonen
2004-04-08  7:52       ` Ville-Pertti Keinonen
2004-04-08  8:15         ` Dustin Sallings
2004-04-08 13:37       ` John Goerzen
2004-04-08 14:56         ` Markus Mottl
2004-04-08 15:14           ` Richard Jones
2004-04-08 15:26             ` Markus Mottl
2004-04-08 15:39               ` Jon Harrop
2004-04-08 15:58               ` John Goerzen
2004-04-08 17:59                 ` Jean-Marc EBER
2004-04-08 18:20                   ` Kenneth Knowles
2004-04-08 18:39                     ` John Goerzen
2004-04-08 19:21                       ` Kenneth Knowles
2004-04-08 18:29                   ` John Goerzen
2004-04-13  6:15                 ` Trevor Andrade
2004-04-13 11:17                   ` Gerd Stolpmann
2004-04-13 13:16                     ` skaller
2004-04-13 14:24                     ` John Goerzen
2004-04-13 14:53                       ` Gerd Stolpmann
2004-04-13 18:07                         ` [Caml-list] Re: GODI (was: Dynamically evaluating OCaml code) Christophe TROESTLER
2004-04-13 19:30                           ` Gerd Stolpmann
2004-04-13 19:57                             ` [Caml-list] Re: GODI Christophe TROESTLER
2004-04-13 20:45                               ` Brandon J. Van Every
2004-04-14  0:34                                 ` Gerd Stolpmann
2004-04-14  5:35                                   ` Brandon J. Van Every
2004-04-14  6:00                                     ` james woodyatt
2004-04-14  6:21                                       ` Kenneth Knowles
2004-04-14  9:17                                         ` james woodyatt
2004-04-14  6:16                                     ` Kenneth Knowles
2004-04-14  7:38                                       ` [Caml-list] BSD vs. GPL Brandon J. Van Every
2004-04-14  8:32                                         ` Matt Gushee
2004-04-14  8:48                                           ` Wolfgang Müller
2004-04-14  8:40                                         ` Kenneth Knowles
2004-04-14 17:14                                           ` David Brown
2004-04-14 18:50                                             ` [Caml-list] benefit of package management Brandon J. Van Every
2004-04-15  6:46                                             ` [Caml-list] BSD vs. GPL Kenneth Knowles
2004-04-14 15:05                                         ` John Goerzen
2004-04-15  0:20                                           ` skaller
2004-04-15  2:36                                             ` John Goerzen
2004-04-15 17:48                                             ` Benjamin Geer
2004-04-14 10:50                                   ` [Caml-list] Re: GODI skaller
2004-04-14  1:04                               ` John Goerzen
2004-04-14  2:52                               ` Jacques GARRIGUE
2004-04-14  5:14                                 ` [Caml-list] Re: GODI vs. Ocamake Brandon J. Van Every
2004-04-14  6:53                                   ` Jacques GARRIGUE
2004-04-14  6:57                                   ` Kenneth Knowles
     [not found]                                     ` <407D2075.2070104@jollys.org>
2004-04-14 16:14                                       ` ocamlconf on Cygwin (Re: [Caml-list] Re: GODI vs. Ocamake) Kenneth Knowles
2004-04-14  7:50                                   ` [Caml-list] Re: GODI vs. Ocamake Nicolas Cannasse
2004-04-14 11:54                                     ` skaller
2004-04-14 16:49                                       ` Kenneth Knowles
2004-04-15  1:05                                         ` skaller
2004-04-15  6:34                                           ` Kenneth Knowles
2004-04-15  7:33                                             ` skaller
2004-04-15 16:00                                               ` Kenneth Knowles
     [not found]                                                 ` <1082049025.20677.1250.camel@pelican>
2004-04-15 17:38                                                   ` Kenneth Knowles
2004-04-15 23:58                                                     ` Brandon J. Van Every
2004-04-16  1:16                                                       ` Kenneth Knowles
2004-04-16  6:31                                                         ` [Caml-list] build tools - good vs. fast, both cheap Brandon J. Van Every
2004-04-16 14:38                                                           ` skaller
2004-04-16 15:16                                                             ` Richard Jones
2004-04-16 16:12                                                               ` Kenneth Knowles
2004-04-16 16:17                                                                 ` Richard Jones
2004-04-16 16:39                                                                   ` Kenneth Knowles
2004-04-17  6:01                                                                     ` Jacques GARRIGUE
2004-04-17  6:25                                                                       ` Kenneth Knowles
2004-04-17  9:19                                                                       ` Alain.Frisch
2004-04-16 21:53                                                             ` William Lovas
2004-04-17  2:30                                                               ` skaller
2004-04-17  5:47                                                               ` Blair Zajac
2004-04-17  6:28                                                                 ` Kenneth Knowles
2004-04-16 14:52                                                           ` skaller
2004-04-16 16:06                                                           ` Kenneth Knowles
2004-04-16 18:10                                                             ` skaller
2004-04-16 18:43                                                               ` Kenneth Knowles
2004-04-16 19:55                                                                 ` skaller
2004-04-16 18:46                                                               ` John Goerzen
2004-04-16 18:55                                                                 ` Kenneth Knowles
2004-04-16 20:22                                                                 ` skaller
2004-04-16 19:39                                                               ` Richard Jones
2004-04-16 21:00                                                                 ` skaller
2004-04-15  9:47                                           ` [Caml-list] Re: GODI vs. Ocamake Markus Mottl
2004-04-15 16:38                                             ` skaller
2004-04-16  1:30                                               ` Richard Cole
2004-04-16 14:11                                                 ` skaller
2004-04-15  1:25                                         ` skaller
2004-04-14 12:19                                     ` skaller
2004-04-14 18:21                                       ` [Caml-list] recompiling bytecode Brandon J. Van Every
2004-04-14 18:54                                         ` John Goerzen
2004-04-14 20:26                                           ` Issac Trotts
2004-04-14 20:35                                         ` Basile Starynkevitch
2004-04-15  1:39                                         ` skaller
2004-04-14 13:03                                   ` [Caml-list] Re: GODI vs. Ocamake Gerd Stolpmann
2004-04-14 12:45                                 ` [Caml-list] Re: GODI Gerd Stolpmann
2004-04-13 15:03                       ` [Caml-list] Dynamically evaluating OCaml code Matt Gushee
2004-04-13 17:24                     ` Benjamin Geer
2004-04-09  5:40             ` skaller
2004-04-08 15:30           ` John Goerzen [this message]
2004-04-08 16:08             ` Xavier Leroy
2004-04-08 16:44             ` Markus Mottl
2004-04-08 17:35               ` John Goerzen
2004-04-09  6:41                 ` skaller
2004-04-08 19:44               ` Issac Trotts
2004-04-09  6:23               ` skaller
2004-04-09  6:33                 ` Remi Vanicat
2004-04-09  7:37                   ` skaller
2004-04-09  8:17                     ` Remi Vanicat
2004-04-09  8:35                     ` OT: licences (was Re: [Caml-list] Dynamically evaluating OCaml code) Benjamin Geer
2004-04-10 10:10                       ` skaller
2004-04-09  8:36                 ` [Caml-list] Dynamically evaluating OCaml code Markus Mottl
2004-04-10  9:59                   ` skaller
2004-04-09  9:09                 ` james woodyatt
2004-04-08 16:44             ` Bruno.Verlyck
2004-04-08 17:55               ` John Goerzen
2004-04-09 13:44                 ` Bruno.Verlyck
2004-04-08 15:31           ` Jon Harrop
2004-04-08 19:52             ` Issac Trotts
2004-04-25 23:07               ` [Caml-list] Is GCaml Dead Again? Greg K
2004-04-08 15:04         ` [Caml-list] Dynamically evaluating OCaml code Fernando Alegre
2004-04-08 15:22         ` Jean-Marc EBER
2004-04-09  6:44           ` Pierre Weis
2004-04-08 15:23         ` Kenneth Knowles
2004-04-08 15:38           ` John Goerzen
2004-04-08 22:31             ` Markus Mottl
2004-04-08 18:28           ` Nicolas Cannasse
2004-04-08 17:15         ` Brian Hurt
2004-04-08 18:32           ` Gerd Stolpmann
2004-04-09  5:04         ` skaller
2004-04-08 17:25       ` Issac Trotts
2004-04-08  7:10     ` Basile Starynkevitch
2004-04-08 17:09       ` Issac Trotts
2004-04-07 21:32 ` Vitaly Lugovsky
2004-04-07 20:39   ` John Goerzen
2004-04-07 21:47     ` Vitaly Lugovsky
2004-04-07 22:14     ` Benjamin Geer
2004-04-08  7:49     ` skaller
2004-04-08 19:11     ` Christophe TROESTLER
     [not found] ` <200404072306.15109.clement.capel@free.fr>
2004-04-07 23:25   ` clement capel
2004-04-13 21:25     ` [Caml-list] eval for OCaml Brock
2004-04-08  0:17 ` [Caml-list] Dynamically evaluating OCaml code Jon Harrop
2004-04-08 17:31 ` Walid Taha

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=20040408153056.GB30763@excelhustler.com \
    --to=jgoerzen@complete.org \
    --cc=caml-list@inria.fr \
    /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