caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Looking for collaborators on a hobby project
@ 2004-05-26 20:21 Christian Szegedy
  2004-05-26 21:36 ` Brandon J. Van Every
  2004-05-28  9:17 ` Richard Zidlicky
  0 siblings, 2 replies; 7+ messages in thread
From: Christian Szegedy @ 2004-05-26 20:21 UTC (permalink / raw)
  To: caml-list

I am looking for collaborators for the following project:

I am considering to create a Ruby-like language in Ocaml.

The main difference would be that it would be compiled
while assuring type safety.

It would be both interpreted (first pass), then a selected
subset of methods are mapped to Ocaml classes and
they get compiled.  It would be completely reflexive,
so the first pass would be able to modify the syntax tree
in any possible way.

So, the language would basically operate on itself as
a preprocessor (without type checks), then the second
phase would be done with exact type checking.

The Ruby (I don't plan to implement the whole language
at first, just the most important part of it.) classes
are mapped to Ocaml classes. The implementation
would only use a small part of Ocamls features.

Anyway, you would be able to program without writing
supplying ANY type information, just like in a scripting
language, but the compiler would detect
all possible type problems. Of course, that means that
every single data (integers,floats, etc.) are wrapped
by Ocaml classes, which would effect the run-time
compared to native Ocaml code considerable. However,
according to my preliminary test, they it would be still much
faster then a Ruby (or Python) code. The main advantage
of the approach is the additional safety of type checking.

The advantage over OCaml would be: easier to learn for
beginners. Full scale polymorphism and overloading.
Of course, you can achieve the same effect right now,
but it would simplify things quite a bit.

The front-end and the back-end would make heavy use
of CamlP4.

I would start with actual coding if I find someone somone
seriously interested.

-------------------
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


^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [Caml-list] Looking for collaborators on a hobby project
@ 2004-05-27 21:11 Christian Szegedy
  2004-05-27 22:09 ` skaller
  0 siblings, 1 reply; 7+ messages in thread
From: Christian Szegedy @ 2004-05-27 21:11 UTC (permalink / raw)
  To: caml-list

Dear Skaller!

Is the Vyper project public?

I could not find any version of Vyper on the net. :(

You have written, that the analyis of the type information
turned out be difficult. I can believe this. :)

However, this is something already solved. In fact,
this is solved in Ocaml! So, I would not have to solve it
directly.

Now, my idea is the following:

Suppose, we have the following Ruby class:

class A
   def f(x,y)
      x.g(y,@a)
   end
  
   def h(x)
       f(@b,v)
   end
end

Then the interpreter  would simply transform it to the following OCaml 
class:


type 'a myref = Nil | Obj of 'a

let use x = match x with
| Obj x -> x
| Nil -> failwith "Dereferencing nil"


class ['f_x,'f_y,'h_x,'a,'b] a =
object(self)
  val mutable a:('a myref) = Nil
  val mutable b:('b myref) = Nil
  method f ( x : 'f_x) (y : 'f_y) = (use x)#g y a
  method h ( v : 'f_x)  = self#f b v
end

After that, OCaml would take care of all the typing stuff...

Of course using the myref class comes with a performance penalty also.
This can be eliminated if one does not allow nil at all: that is all
instance variables must have valid default value.
I think, this is a good idea anyway...



-------------------
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


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2004-05-28  9:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-26 20:21 [Caml-list] Looking for collaborators on a hobby project Christian Szegedy
2004-05-26 21:36 ` Brandon J. Van Every
2004-05-26 21:37   ` Richard Jones
2004-05-28  9:17 ` Richard Zidlicky
2004-05-27 21:11 Christian Szegedy
2004-05-27 22:09 ` skaller
2004-05-27 23:00   ` Christian Szegedy

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).