From: Oleg <oleg_inconnu@myrealbox.com>
To: Emmanuel Renieris <er@cs.brown.edu>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] productivity improvement
Date: Fri, 19 Jul 2002 05:57:50 -0400 [thread overview]
Message-ID: <200207190956.FAA29574@dewberry.cc.columbia.edu> (raw)
In-Reply-To: <20020719044206.GC29721@cs.brown.edu>
On Friday 19 July 2002 12:42 am, Emmanuel Renieris wrote:
> I see two ways to weed through this list:
> Tell us what _you_ find hard/awkward/impossible in C++. Maybe somebody
> will be able to point out how they are easier in Ocaml (if indeed they
> are).
The first thing that comes to mind: a program that would read, write, listen,
look, speak, comprehend and pass the Turing test seems to be hard to create
in C++. So hard, I've never tried[1] I'm not sure if it's the language
though, although it could be.
> Show us some of your ocaml code. Maybe there is some idiom you don't
> have yet, and that would make a difference.
Since this is the second time I'm asked, I will have to do that, even though
the program is really straight-forward, silly and uninstructive. Description
first, code at the end: Sometimes, when I feel like being organized and
productive[2], which happens no more than thrice per fortnight, I plan things
to do in advance and estimate time it will take me to do them: I edit a file
containing a list of tasks and time in minutes, e.g.
<stdin>
finish reading chapter 13 of ocaml book 30
Determine Dr. Leroy's involvement in JFK assassination 180
call dad 20
have supper 20
Go through T&R level in Halo in Legendary mode 30000
</stdin>
The program reads it from STDIN, calculates completion times and formats
everything into a neat HTML table in STDOUT. I have a bash alias that glues
VIM, this program and browser together, of course.
Oleg
[1] I'm not kidding. It really is hard.
[2] And I actually am much more productive when I do that
-------------------------------------------------------
let print_aux hours minutes =
if hours < 10 then print_char ' ';
print_int hours;
print_char ':';
if minutes < 10 then print_char '0';
print_int minutes;;
let print_time m =
let m = m mod (60*24) in
let hours = m / 60 in
let hours = hours mod 24 in
let hours = if hours > 12 then hours - 12 else hours in
let tag = if m >= 12*60 then "pm" else "am" in
let minutes = m mod 60 in
print_aux hours minutes;
print_string tag;;
let print_duration m =
let hours = m / 60 in
let hours = hours mod 24 in
let minutes = m mod 60 in
print_aux hours minutes;;
let curr_time =
let tmp = Unix.localtime (Unix.time ()) in
tmp.Unix.tm_min + 60 * tmp.Unix.tm_hour;;
let isdigit = function '0' | '1' .. '9' -> true | _ -> false;;
let split_string s =
let i = ref (String.length s - 1) in
while !i >= 0 && (s.[!i] = ' ' || s.[!i] = '\t') do i := !i-1 done;
while (!i >= 0) && (isdigit (s.[!i])) do i := !i-1 done;
i := !i+1;
String.sub s 0 !i, int_of_string (String.sub s !i (String.length s -
!i));;
let print_table_entry name duration curr_time =
print_string ("\t<tr><td align=left>" ^ name ^ "</td><td align=right>");
print_duration duration;
print_string "</td><td align=right>";
print_time (curr_time + duration);
print_string "</td></tr>\n";;
print_string "<html>
<title> Schedule </title>
<body bgcolor=\"#773333\" text=\"#00ff00\">
<table border=\"2\">\n";;
let rec read_and_print curr_time =
let s = input_line stdin in
let (s, v) = split_string s in
print_table_entry s v curr_time;
read_and_print (curr_time + v)
in try
read_and_print curr_time
with
_ -> ();;
print_string "</table>
</body>
</html>\n";;
-------------------
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
next prev parent reply other threads:[~2002-07-19 9:56 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20020716172916.4903.qmail@web10702.mail.yahoo.com>
2002-07-18 23:14 ` Oleg
2002-07-18 23:27 ` Brian Smith
2002-07-18 23:54 ` William Lovas
2002-07-19 3:59 ` Oleg
[not found] ` <20020719010318.B3631@boson.den.co.bbnow.net>
2002-07-19 8:22 ` Oleg
2002-07-19 8:57 ` Andreas Rossberg
2002-07-19 10:14 ` Alessandro Baretta
2002-07-19 18:15 ` John Max Skaller
2002-07-19 18:33 ` Brian Smith
2002-07-20 17:30 ` John Max Skaller
2002-07-19 19:06 ` Alessandro Baretta
2002-07-20 17:49 ` John Max Skaller
2002-07-19 10:34 ` Oleg
2002-07-19 17:25 ` Andreas Rossberg
2002-07-20 16:58 ` John Max Skaller
2002-07-19 16:35 ` Brian Rogoff
2002-10-16 23:24 ` Eray Ozkural
2002-07-19 1:25 ` Alessandro Baretta
2002-07-19 4:04 ` Oleg
2002-07-19 15:46 ` [Caml-list] Rule based language [was: productivity improvement] Alessandro Baretta
2002-07-19 17:20 ` [Caml-list] compact.c Julie Farago
2002-10-15 9:31 ` [Caml-list] productivity improvement Eray Ozkural
2002-10-15 12:34 ` Oleg
2002-10-15 15:08 ` Eray Ozkural
2002-07-19 4:42 ` Emmanuel Renieris
2002-07-19 9:57 ` Oleg [this message]
2002-07-19 10:43 ` Alessandro Baretta
2002-07-19 10:52 ` Daniel de Rauglaudre
2002-07-19 11:36 ` Alessandro Baretta
2002-07-19 11:10 ` Xavier Leroy
2002-10-15 9:24 ` Eray Ozkural
2002-10-15 18:47 ` Pal-Kristian Engstad
2002-10-17 0:12 ` Eray Ozkural
2002-10-17 9:34 ` Diego Olivier Fernandez Pons
2002-10-17 15:55 ` Jeffrey Palmer
2002-10-17 16:15 ` brogoff
2002-10-17 18:21 ` [Caml-list] Re: Camlp4 optimizations (was: productivity improvement) Christophe TROESTLER
2002-10-17 18:32 ` Chris Hecker
2002-10-17 19:08 ` Shivkumar Chandrasekaran
2002-10-17 20:01 ` Chris Hecker
2002-10-17 19:36 ` Daniel de Rauglaudre
2002-10-17 19:59 ` Brian Hurt
2002-10-17 20:22 ` Chris Hecker
2002-10-17 21:19 ` Brian Hurt
2002-10-17 21:37 ` Jeffrey Palmer
2002-10-17 23:55 ` Alessandro Baretta
2002-10-18 0:57 ` Jeffrey Palmer
2002-10-18 4:21 ` Alessandro Baretta
2002-10-18 8:23 ` Remi VANICAT
2002-10-18 8:46 ` Sven Luther
2002-10-18 1:47 ` Brian Hurt
2002-10-17 23:03 ` Chris Hecker
2002-10-18 23:55 ` brogoff
2002-10-18 10:43 ` [Caml-list] productivity improvement Diego Olivier Fernandez Pons
2002-10-21 8:57 ` Francois Pottier
[not found] ` <200207200640.CAA11477@dewberry.cc.columbia.edu>
[not found] ` <3D391B41.50900@baretta.com>
[not found] ` <200207210059.UAA17003@dewberry.cc.columbia.edu>
2002-07-21 13:00 ` [Caml-list] Rule based language [was: productivity improvement] Alessandro Baretta
2002-07-23 9:53 ` Oleg
2002-07-24 8:07 ` Alessandro Baretta
[not found] <200207092004.QAA09587@psi-phi.mit.edu>
2002-07-09 20:16 ` [Caml-list] productivity improvement Oleg
2002-07-08 19:53 Oleg
2002-07-08 20:14 ` Michael Vanier
2002-07-10 15:50 ` John Max Skaller
2002-07-10 18:56 ` Alessandro Baretta
2002-07-10 19:09 ` Jun P.FURUSE
2002-07-11 23:43 ` Pierre Weis
2002-07-09 12:45 ` Basile STARYNKEVITCH
2002-07-09 18:20 ` Shannon --jj Behrens
2002-07-09 19:16 ` Oleg
2002-07-09 20:31 ` Shannon --jj Behrens
2002-07-10 10:02 ` sebastien FURIC
2002-07-10 11:58 ` Dave Mason
2002-07-10 13:11 ` sebastien FURIC
2002-07-10 19:22 ` nadji
2002-07-10 15:39 ` John Max Skaller
2002-07-11 8:57 ` Nicolas barnier
2002-07-16 3:34 ` Oleg
2002-10-18 3:13 ` Eray Ozkural
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=200207190956.FAA29574@dewberry.cc.columbia.edu \
--to=oleg_inconnu@myrealbox.com \
--cc=caml-list@inria.fr \
--cc=er@cs.brown.edu \
/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).