caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Thomas Fischbacher <Thomas.Fischbacher@Physik.Uni-Muenchen.DE>
To: Jonathan Roewen <jonathan.roewen@gmail.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] lisp to ocaml
Date: Sun, 18 Sep 2005 16:06:30 +0200 (CEST)	[thread overview]
Message-ID: <Pine.LNX.4.61.0509181558080.1141@eiger.cip.physik.uni-muenchen.de> (raw)
In-Reply-To: <ad8cfe7e0509171808ebd550d@mail.gmail.com>


On Sun, 18 Sep 2005, Jonathan Roewen wrote:

> Does anyone know of a tool that can convert lisp to ocaml (or
> something other ML dialect)?

For ANSI Common LISP, this could at best work at the level of a LISP 
interpreter (or compiler) written im ML. You cannot directly compile LISP 
code to ML code in the sense that

(defun factorial (n)
  (labels
      ((walk (so-far todo)
	 (if (= todo 0)
	     so-far
	   (walk (* so-far todo) (- todo 1)))))
    (walk 1 n)))

would become

let factorial n =
  let rec walk so_far todo =
      if todo=0
      then so_far
      else walk (so_far*todo) (todo-1)
  in walk 1 n
;;

for a ton of reasons.

> Just all the parentheses gets a bit confusing for a first
> look at lisp ;-)

The trick is:

(1) Do not look at the parentheses. Read and write code by indentation.

(2) Use a text editor that helps you with this.

(3) paren-sensitive syntax highlighting is a great thing.

You will find the parens to be much less confusing once you learned not to 
look at them. :-)


-- 
regards,               tf@cip.physik.uni-muenchen.de              (o_
 Thomas Fischbacher -  http://www.cip.physik.uni-muenchen.de/~tf  //\
(lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y)           V_/_
(if (= x 0) y (g g (- x 1) (* x y)))) n 1))                  (Debian GNU)


  parent reply	other threads:[~2005-09-18 14:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-18  1:08 Jonathan Roewen
2005-09-18  2:56 ` Jon Harrop
2005-09-18 14:06 ` Thomas Fischbacher [this message]
2005-09-18 14:17   ` yoann padioleau
2005-09-18 14:37     ` Thomas Fischbacher
2005-09-18 15:44   ` Jon Harrop
2005-09-18 16:08     ` Thomas Fischbacher
2005-09-18 17:10       ` brogoff
2005-09-19 13:08 ` Christoph Bauer

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=Pine.LNX.4.61.0509181558080.1141@eiger.cip.physik.uni-muenchen.de \
    --to=thomas.fischbacher@physik.uni-muenchen.de \
    --cc=caml-list@yquem.inria.fr \
    --cc=jonathan.roewen@gmail.com \
    /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).