From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 3C742BBAF for ; Mon, 1 Sep 2008 18:37:05 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkgBAAy3u0hA6bjnlGdsb2JhbACSCj4BAQEBCQMKBxEDmkiFZQECgyU X-IronPort-AV: E=Sophos;i="4.32,308,1217800800"; d="scan'208";a="14459958" Received: from wr-out-0506.google.com ([64.233.184.231]) by mail2-smtp-roc.national.inria.fr with ESMTP; 01 Sep 2008 18:37:04 +0200 Received: by wr-out-0506.google.com with SMTP id c55so1522474wra.11 for ; Mon, 01 Sep 2008 09:37:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:reply-to:to:subject:date :user-agent:references:in-reply-to:content-type :content-transfer-encoding:content-disposition:message-id; bh=gcQFHvQbGFQ2sLQzmQ/FjX79gDUpfUB4oaH3B9yiT38=; b=m2oYlsX63E0aczdvFjM6vKOL4er7V4QJWB9l79CPsMBd51B6eBAjhrAktkvrKDP1Yg juoWa4SM4aiK6RNlKANSpCYFYrEGJnY6D1kfusx2JQBePwlweeq+VymooBBiikAv9gh+ U7PDpNZObSEiA31mW1hj35DEyfRtNWqARAHQE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:reply-to:to:subject:date:user-agent:references:in-reply-to :content-type:content-transfer-encoding:content-disposition :message-id; b=cxjiVVeCcmn569/XEBoQDa1iqhVNlzAPLww7NnaZmH5waZahcFs2RB13CRIu7XF2fh 5XSqwuZGWMPK9dYfRnLgEn3ms3GEcog3ApHWGMg1nBGOOjvWh+A0V4sP+ToonNP6tUNx H2vwssfZGguBbU5MDGP+FoTJaTlaWXurDHOhY= Received: by 10.90.50.5 with SMTP id x5mr8021502agx.120.1220287022852; Mon, 01 Sep 2008 09:37:02 -0700 (PDT) Received: from ?192.168.0.102? ( [24.99.180.210]) by mx.google.com with ESMTPS id 17sm5079022hsq.5.2008.09.01.09.37.01 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 01 Sep 2008 09:37:01 -0700 (PDT) From: Peng Zang Reply-To: peng.zang@gmail.com To: caml-list@yquem.inria.fr, "circ ular" Subject: Re: [Caml-list] Ocaml, a practical functional language? Date: Mon, 1 Sep 2008 12:36:57 -0400 User-Agent: KMail/1.9.7 References: In-Reply-To: Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200809011237.00069.peng.zang@gmail.com> X-Spam: no; 0.00; ocaml:01 hash:01 haskell:01 ocaml:01 haskell:01 abstraction:01 overkill:01 statically:01 libs:01 workarounds:01 emacs:01 tuareg:01 acohen:01 tuareg:01 peng:98 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 30 August 2008 03:50:30 pm circ ular wrote: > I have tried a lot of languages but never really felt 100% satisfied. > I really like Python, it makes me very productive but Iwant something > a little more functionally oriented plus a static(optionally declared) > typesystem. > > I tried Haskell and I really like it but I find it hard to get used to > some things(like no destructive updates of datastructures outside the > IO Monad). > Ocaml seems a little bit more practical and it is aslo very fast(well > haskell is too). > > tried lisp at first but libraries and documentation just werent up to > standards there either. > > so far Pytho is the best Ive found (for me) but still isn't satisfied. > > could ocaml be what I look for? I think OCaml is what you are looking for. I went through a similar search for a comfortable language. My order was a bit different, lisp first, then python, then OCaml, then played a bit with Haskell but am sticking with OCaml. I find OCaml to be a great compromise. Haskell is cool, but it forces you to do things in certain ways and use a lot of abstraction which often seems overkill, making simple things much harder than they should be. I really like how easy things are in Python but large programs I find are impossible to maintain because it's not statically typed (it's also slow.. but that might have been ok). Lisp is really great with what you can do and many simple things are simple, but it doesn't have the scaffolding to let you scale up to big stuff (missing libs and stuff). OCaml has been great. It has its drawbacks and yucky corner cases like all languages. Overall though, it's been good and I've been able to find reasonable workarounds for things I don't like. I encourage you to give it a serious try. There's a great book on OCaml here: http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf The best emacs mode for ocaml is tuareg mode here: http://www-rocq.inria.fr/~acohen/tuareg/ I also write some additional on top of tuareg mode to be more like the SLIME mode for lisp but it's alpha (mostly because I wrote it for myself and packaging it and making robust is a lot of work that I'm too busy to handle) so I don't really recommend it yet. Peng -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.7 (GNU/Linux) iD8DBQFIvBosfIRcEFL/JewRAv4kAJ40DMoR1GZd1LagWMwR1umbEglLVwCfaMoP F9jaCP+f2iJvqU/ZxVs+Czs= =k9FZ -----END PGP SIGNATURE-----