On Dec 19, 4:58 am, Mauricio Fernandez <m... / acm.org> wrote: > On Wed, Dec 19, 2007 at 08:29:59AM +0900, MonkeeSage wrote: > > On Dec 18, 9:17 am, "jwmerr... / gmail.com" <jwmerr... / gmail.com> wrote: > > > On Dec 17, 11:32 pm, Sharkie Landshark <shark.fin.s... / mac.com> wrote: > > > > > I want to write my core logics in a compiled language for 1) performance > > > > and 2) protecting my source code -- in case I will be selling my product > > > > to a customer. > > > > > What would be the most natural-supported-easy-fast language to do this > > > > in, given the many choices of language bridges? > > > > > I am particularly interested in, > > > > > 1) C > > > > 2) Objective C > > > > 3) Ocaml > > > > 4) Lisp (SBCL) > > > > 5) Scheme > [...] > > > There's rocaml:http://eigenclass.org/hiki/rocaml. Never used it, > > > but thought I'd mention it. > > > I've been using rocaml lately, and I like it. OCaml isn't Haskell, but > > nobody's perfect! :P Seriously though, OCaml fits very well (imho) with the > > style of ruby (Hindley-Milner type inference + structural typing is very > > =========================================================> similar to duck typing), and rocaml makes it easy to > > ====================== > > Yes! I wish more people knew this. If anything, it would make the periodic > static vs. dynamic typing threads less boring. I've often started to write > about this for eigenclass.org, but I'm dropping more and more posts as of late > (I must be around ~75% rejection rate or so, and worsening). Heh. Just don't let it get to 100%. I enjoy reading your blog. > > write extensions since it auto-generates all the glue code for you > > (similar to SWIG). You basically write a .ml file as you normally > > would, declare a few things about the interface, and rocaml does the > > rest. Doesn't work on windows yet I don't think (OCaml does, just not > > rocaml). > > "Non-pure-Ruby" development on Windows is often difficult; even a plain old C > extension can be challenging. AFAIK, rocaml could in principle[1] work on > Win32, at least with the MinGW and cygwin builds of Ruby and OCaml (maybe with > the MSVC ones too, if the same compiler is used for both). So I believe that > rocaml should be usable on Win32 after some work in the Makefile generation > magic. I don't use Win32 myself so it will be up to some brave Win32 developer > to clear the path. > > By the way, > > > I've been using rocaml lately, and I like it. OCaml isn't Haskell, but > > nobody's perfect! :P > > What do you miss when you're doing OCaml instead of Haskell (apart from the > syntax, I assume :)? I sometimes ache for ad-hoc polymorphism; I'm looking > forward to the result of the attempt to bring type classes to OCaml. > How do you feel about the strict vs. non-strict semantics? One thing I love > about OCaml is that I can know what is happening under the hood and there are > no bad surprises (bad performance or unexpectedly high memory consumption). I was just being silly, since Haskell is "pure" (and "pure" == "greatest" ;) because it separates functions and "actions". In actuality, I like the fact that OCaml lets me use reference types and imperative programming when I feel it best suites the problem. I've only been using Haskell for about six months, and I've not delved too deeply into theory (Curry-Howard isomorphism, existential types, and so forth). So I can't really say on any technical level what I'd be missing (if anything) by using OCaml rather than Haskell. List comprehensions are nice, but not essential (there is a camlp4 module for list comps in OCaml [1], but I've not tried it). Syntax isn't a big deal, and the "revised syntax" is pretty close to Haskell (there is also Mike Lin's preprocessor [2] for using the off-side rule rather than parens / begin...end for statement grouping). One big difference is obviously type classes, but so far I've found generic functions provide enough polymorphism for what I've been doing, and haven't needed overloading. However, I do miss it for the overloaded functions defined in the Prelude, which save from explicit type conversions and and type-specific operators -- it's nice to be able to say "10 / 2.0" and get "5.0" instead of "this has type float but is used with type int". ;) I agree about laziness having fangs (and I almost always use the strict Data.ByteString.Char8 for example), but over-all I like it for the reasons given by SPJ [3] (my favorite of which is: "Laziness is jolly convenient", heh). But (aside from implementation details) since I can generate a thunk in OCaml with the lazy keyword and can build the same kind of lazy data structures [4], strict vs. non-strict semantics seems like a moot point. In Haskell you have to explicitly tell a function to be strict, in OCaml you have to explicitly tell it to be lazy. Six of one, half-dozen of the other. :) [1] http://www.univ-orleans.fr/lifo/Members/David.Teller/software/comprehension/ [2] http://people.csail.mit.edu/mikelin/ocaml+twt/ [3] http://research.microsoft.com/%7Esimonpj/papers/haskell%2Dretrospective/ [4] http://enfranchisedmind.com/blog/2007/01/01/ocaml-lazy-lists-an-introduction/ > [1] The inability of ocamlopt (up to 3.09.2 or so, 3.10.0 can on some > platforms) to generate PIC code is not a problem on win32, see [274896]. > The next release of OCaml will feature dynamic loading of native code. > > -- > Mauricio Fernandez - http://eigenclass.org Regards, Jordan