flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | 3.11.0 out now! Get yours from http://caml.inria.fr/ocaml/release.html
threeve has quit []
dabd has quit [kornbluth.freenode.net irc.freenode.net]
jonafan has quit [kornbluth.freenode.net irc.freenode.net]
dabd has joined #ocaml
jonafan has joined #ocaml
sporkmonger has joined #ocaml
Yoric[DT] has quit ["Ex-Chat"]
dabd has quit [Client Quit]
threeve has joined #ocaml
johnnowak has joined #ocaml
JokerDoom has quit ["Leaving"]
asabil has quit [Read error: 110 (Connection timed out)]
CoryDambach has joined #ocaml
JokerDoom has joined #ocaml
CoryDambach has quit [Read error: 54 (Connection reset by peer)]
threeve has quit [Read error: 104 (Connection reset by peer)]
threeve has joined #ocaml
Kerris7 has quit []
pumpkin has joined #ocaml
pumpkin has left #ocaml []
struktured__ has joined #ocaml
struktured_ has quit [Read error: 110 (Connection timed out)]
alexyk has joined #ocaml
struktured__ is now known as struktured
johnnowak_ has joined #ocaml
johnnowak has quit [Read error: 104 (Connection reset by peer)]
johnnowak_ has quit []
<alexyk> I'm trying to compile my C wrapper for ocamlopt excatly like in Monnier tutorial, and am getting undefined symbols from ocamlopt the last binary, and they are the same which I define extern "C" in the .c; like Undefined symbols:
<alexyk> "_lmclient_compute", referenced from:
<alexyk> _lmclient_compute$non_lazy_ptr in calm.o
<alexyk> the funny thing is, the Makefile is exactly the same as Monnier
<alexyk> which extension file should they come from?
struktured has quit [Read error: 145 (Connection timed out)]
Optikal__ has left #ocaml []
<alexyk> how do I pass a whole list of libs to ocamlopt with one -cclib?
JokerDoom has quit [Client Quit]
CoryDambach has joined #ocaml
<alexyk> I'm getting caml_atom_table undefined now -- was this issue resolved on the mac? http://caml.inria.fr/pub/ml-archives/caml-list/2005/05/e3905eefb5bca0ae534f009bbd2727b0.en.html
thelema has quit [Read error: 113 (No route to host)]
eydaimon has joined #ocaml
alexyk has quit []
Amorphous has quit [Read error: 113 (No route to host)]
Amorphous has joined #ocaml
<eydaimon> is there a non-regex versin of Str.split?
<eydaimon> version even
struktured has joined #ocaml
<eydaimon> hi struktured
jeddhaberstro has quit []
<struktured> hi eydaimon whats up
<eydaimon> tryingt o use Str.split but Reference to undefined global `Str'
<eydaimon> any idea why that would be?
<eydaimon> Also I was wondering if there's a non-regexp version of Str.split
<struktured> # #load "str.cma";;
<struktured> # Str.split;;
<struktured> - : Str.regexp -> string -> string list = <fun>
<struktured> #
<eydaimon> so Str is different from String in that I have to load it first?
<eydaimon> how do I know which modules from the libry I have to load, and which ones I don't?
<struktured> I'm no expert, but the ocaml top level shell has certain environment defaults, apparently one of them being String, but not Str
<eydaimon> ok. thanks :)
<struktured> eydaimon: when compiling your model via ocamlc, make sure to add that str.cma reference somewhere
<struktured> *your code
<eydaimon> ok :)
threeve has quit []
<eydaimon> anyway to inspect references?
<eydaimon> like, any way to print a list? in the interpreter it's all easy to see what the varaibles are.. but what about from a script?
<flux> eydaimon, you can see the #load requirement from the part IV of the manual; in the case of str, it would be chapter 23: http://caml.inria.fr/pub/docs/manual-ocaml/manual037.html
dfritz has joined #ocaml
<flux> eydaimon, for really outputting a value, you will need to write your own output function for it. Printf.printf can be convenient, however
<eydaimon> ok, thanks
<flux> for example for printing a list of integers I'd do: Printf.printf "List of integers: %s" (String.concat ", " (List.map string_of_int [1; 2; 3]))
<eydaimon> what about polymorphic functions? Be nice if I could write a one-size-fits-all print function
<flux> (or if you don't want to go via strings, there is %t; Printf documentation will tell you more about it)
<flux> eydaimon, do you mean something like printing 'a list?
<eydaimon> right
<dfritz> Hello, I am trying to load the camlimages library by running 'open Images;;
<flux> eydaimon, you could have a function let list_of_string f l = String.concat ", " (List.map f l)
<dfritz> Do I need to specify a special location? I am getting an unbound module error
<flux> whops, string_of_list would be the function name obviously :)
<flux> and you'd use it like string_of_list string_of_int [1; 2; 3]
<flux> eydaimon, actually, there's a whole other approach to the problem also: generating the printing functions
<flux> eydaimon, for example sexplib will produce a certain kind of string representation of values
<eydaimon> I'm not familiar with sexplib
<eydaimon> is there a way to do a match on the very type of smething?
sporkmonger has quit []
<flux> no. you can only match by constructors
<eydaimon> like let show_type t = match t with int -> print_endline "int" ...
<flux> eydaimon, sexplib works by having a bunch of functions for basic types that convert them into s-expressions (like (in (lisp))). then it also has a preprocessor module, that can convert records, sum types and other types into code for inputting/outputting them. sometimes it's a very nice thing to have.
<flux> dfritz, you need to #load something first
<flux> dfritz, actually you might want to enter #use "topfind";; first into the toplevel
<flux> dfritz, and then #list;; the packages you have, and finally #require "somepackage";;
<eydaimon> well, here's an easy q I hope. how do I access the 3rd element in a list? Is List.nth the only way, or is there a shortcut?
<flux> dfritz, after that the open should work (if camlimages indeed has such a module called Images)
<flux> List.nth
<flux> although in general to access the topmost elements in a list you'd use pattern matching
<dfritz> flux: Thanks! that i had to require it first
<flux> random-accessing lists is a very rare need in my experience; and if you find yourself needing to do that a lot, then perhaps an array or a map is a better alternative
<flux> dfritz, you might want to strick that #use "topfind";; into your ~/.ocamlinit
<flux> stick, even
<eydaimon> hm, interesting that you used String.concat, I didn't realize it took a list as an argument. I actually wrote my own String.concat (called it join, go figure) earlier as practice :P
<eydaimon> maybe you'd like to see it so you can comment on it?
thelema has joined #ocaml
<flux> well, for one, List.concat is almost certainly more efficient than that, because I doubt it continuously concatenates string so that it keeps getting longer
<flux> uh, String.concat that is
<flux> I would expect it to create a new string of proper length and then use String.blit to copy the fragments there
<flux> another problem is that that isn't very ocamlish
<flux> one would perhaps use List.fold_left or explicit recursion to write that piece of code
<eydaimon> It had crossed my mind to lookat at fold_left to do the job
<flux> that is, reference type variables are used as a last resort
<eydaimon> and that it's not ocamelish shouldn't surprise anyone since I've not done ocaml much to speak of before :P
<flux> no problem :)
<eydaimon> I was happy to even get that to work on the first try basically
<flux> List.fold_left will do the job, but you'd still need to handle the case of an empty list separately.
<eydaimon> last time I looked seriously at ocaml, ocaml-tutorial.org didn't exist. very nice I think :)
<flux> the empty list-check could be done with pattern matching: let join c lst = match lst with [] -> "" | lst -> (* do concatenation of lst with c *)
struktured has quit [Read error: 104 (Connection reset by peer)]
<flux> do you want to think about using fold_left or see a solution?-)
<eydaimon> I'll think about it first :)
<eydaimon> I do have another question. I've got a ruby script at work that does data log processing. It's hideously slow, and I was thinking to use ocaml as an excuse to write something fast.
<eydaimon> it's currently using berkeley DB to store lookps for the logs it's processing. I couldn't find any Berkeley DB bindings for ocaml. What would you recommend, if anything to use to do such a thing?
<flux> in any case, here's a solution when you're ready for it ;-) http://pastie.org/333033
<flux> hmm, I would expect there to be berkeley db bindings..
<flux> in any case, if there aren't, I know for sure there are sqlite bindings
<eydaimon> ah, pressure! I have to see an example of List.fold_left to understand what it's even doing :P http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html I've been using this, but it doesn't explain it very well. Examples are certainly lacking.
<eydaimon> I've already got sqlite ready to use with ocaml, but sqlite is slower for the purpose we're using it for.
<eydaimon> I considered doing that as an intermediate because ocaml + sqlite might still be a lot faster than ruby + BDB
<flux> I found this, but it's three years old: http://www.eecs.harvard.edu/~stein/ocamlbdb-4.3.21.tar.gz
<eydaimon> I think i tried the link before and it was dead.
<eydaimon> trying again
<eydaimon> oh, this one worked.
<flux> List.fold_left works by taking an initial value, a list, and a function and then repeatedly calling the function first with the initial value and the first element in the list, then with the value it received from the function and the next element in the list
<flux> so for example summing elements of a list happens by List.fold_left (fun a b -> a + b) 0 [1; 2; 3]
<eydaimon> well, it doesn't exist
<flux> (you can shorten the function to just ( + ) instead)
<eydaimon> er, it won't compile even
<eydaimon> ok, so atleast my understandin gof fold_left was correct
<eydaimon> I actually started a website to be a onestop shop for coding refrerences with examples of code for all langauges
<eydaimon> I should finish it.
<eydaimon> I got tired of hunting for good documentation all the time.
<flux> that's one big project
<flux> if you want to get a better insight to how to use List.fold_left, you could try implementing functions like List.map in terms of it (or in terms of List.fold_right)
<eydaimon> well, I'd provide the facility. hopefully people would join in and provide docs
<det> sqlite3 is supposed to be faster than bdb
<det> I thought
<eydaimon> I was told that the guys at work had already checked performance on that
<eydaimon> hmm, just looked at some data. sqlite2 and bdb was the same speed, but cdb outperformed both
<eydaimon> flux: when you said how fold_left works, are those arguments in order? i.e. initial value, list, and function? Looks like it's function, initial value, then a list
<eydaimon> oh, now the reference manual makes sense. gee.
<eydaimon> ok, now I understand how it works. thanks :)
<eydaimon> (peeked at your solution)
<flux> eydaimon, good :)
alexyk has joined #ocaml
<eydaimon> looks like CDB may be the way to go actually.
<flux> eydaimon, btw, perl4caml is quite a decent module actually, so you can make use of perl modules if it has a library (or bindings) you want
<alexyk> I just tried to compile a file with ocamlopt 3.11.0 and got this:
<alexyk> ocamlopt -c lmclient.ml
<flux> well, you gotta love cdb's specification: http://cr.yp.to/cdb/cdb.txt - not very long!
<eydaimon> yeah, I looked at that :)
<flux> eydaimon, I suppose you found an ocaml implementation? (I did)
<alexyk> hmm
<flux> alexyk, yes, and..?-)
<eydaimon> I've used Bersteins daemontools, very impressive.
<alexyk> usr/local/lib/ocaml/pervasives.cmi is not a compiled interface
<flux> alexyk, sounds like you have an old installation around
<eydaimon> flux: I found documentation for it :)
<alexyk> the leading slash was hiding input to irc
<eydaimon> not quite the code for it yet
<alexyk> flux: indeed I used to; prolly should remove /usr/local/lib/ocaml
<flux> alexyk, you should
<alexyk> well I still get that after removing and reinstalling
<flux> alexyk, reinstalling what?
<alexyk> ocaml 3.11
<flux> alexyk, it complains about a file that doesn't exist?
<alexyk> -rw-r--r-- 1 root wheel 13686 2008-12-07 02:41 /usr/local/lib/ocaml/pervasives.cmi
<flux> ok, so that's a new one?
<alexyk> yep
<flux> maybe your ocamlopt is the old one, then
<flux> ocamlopt -v
<alexyk> a yes
<alexyk> I started source compiling manually since I was getting errors from ocamlopt about _caml_code_area_end and _caml_atom_table that libasmrun refers to being undefined
<alexyk> with godi 3.10.2 it is doing that while byte compiling is fine; is it something which was fixed?
<flux> I've never seen those
<alexyk> under caml_atom_table
<alexyk> both refer to mac osx which I am on
<alexyk> one is from 2005, another from 2008
ygrek has joined #ocaml
<flux> aah, mac osx I know nothing of
<flux> you should really ask from the mailing list (once you're really sure you only have one ocaml installation around and the problem persists ;))
<alexyk> flux: actually, I was calling ocamlopt which is from the old install... is it now only called ocamlc.opt?
<alexyk> or should there be an ocamlopt?
<eydaimon> flux: btw, thank you very much for the help.
<eydaimon> It's appriciated when someone takes the extra time like you have :)
<flux> alexyk, ocamlc.opt is a natively compiler version of ocamlc
<flux> so ocamlc* and ocamlopt* are not the same thing
<flux> eydaimon, sunday morning, perhaps a slight hangover.. yes, I have time :)
<alexyk> flux: I found that I didn't build the new ocamlopt; have to build it
<alexyk> I got it, in my godi there was no ocamlopt, and it was picked up from an old one
<alexyk> a different binary version
<alexyk> strangely there's only one ocmalopt there, in batteries in godu
<alexyk> godi
olgen has joined #ocaml
<flux> well, it's not very useful to have both *.opt and non-*.opt-versions in my opinion
<flux> one should do, and the opt-one performs better
<flux> my godi installation has both, though
<alexyk> flux: well, found it actually
<alexyk> I get caml_atom_table from 3.10.2
<alexyk> and from 3.11.0 I get a lovely can't find std_exit.cmx
<alexyk> wait. need to check that
<alexyk> ok, that was the old ocamlopt 3.10, now finally replaced, and I get caml_atom_table with 3.11 again
<alexyk> looks that the mail from 2005 still applies... will test and send to the list
<alexyk> yep, editing asmrun/startup.c fixes it
<alexyk> yay! found a bug in ocaml 3.11 for mac osx! :)
<alexyk> take that, old Europe
<alexyk> now, when I pass a lot of libs to ocamlopt, do I really have to precede each -lsomelib with -cclib?
<flux> yes
<flux> but you don't need to write ocamlopt many times, do you?
<alexyk> flux: I do it in the makefile, but it's kind of verbose to intersperse --cclib between a long -lsomelib list
<flux> alexyk, do you have one application that depends on many c libraries?
<alexyk> now looks like I have to go without godi for 3.11... so I can just install findlib alongside it, right?
<flux> or does it depend on packages that depend on c libs?
<alexyk> yep, I wrap a C++ project which uses like 5 libraries
<flux> ok
<flux> you're writing an ocaml library then?
<alexyk> flux: yep... well, kinda tired, am going to bed... g'night!
alexyk has quit []
alexyk has joined #ocaml
Gionne has joined #ocaml
seafood has quit []
_zack has joined #ocaml
Snark has joined #ocaml
<flux> alexyk, be sure to make it findlib compatible, it is very convenient even for self-written libraries :)
<flux> but yes, good night.. or perhaps good morning, if that's the next time you'll read irc..
Palace_Chan has quit [Client Quit]
love-pingoo has joined #ocaml
marmotine has joined #ocaml
Yoric[DT] has joined #ocaml
olgen has quit []
<Yoric[DT]> hi
Kerris7 has joined #ocaml
CoryDambach has quit [Read error: 113 (No route to host)]
CoryDambach has joined #ocaml
s4tan has joined #ocaml
<s4tan> hi all
vixey has joined #ocaml
<s4tan> if i have the follow type: type a = {n:string; a:foo} and foo = Foo of string | Bar of int
<s4tan> and
<s4tan> let bar = {n="foo"; a=Foo}
<s4tan> sorry my fault
<s4tan> dumb question i resolved it :P
<tsuyoshi> eydaimon: that sqlite versus bdb comparison is a little flawed, as a couple comments at the end point out
<Yoric[DT]> :)
<tsuyoshi> it's using the linear hashing in bdb, which nobody really uses
<tsuyoshi> linear hashing is slower than b-trees unless you have really huge data sets
<tsuyoshi> and if you ever came up with a data set that big, I'd suggest just increasing the page size first
hjpark has joined #ocaml
asabil has joined #ocaml
Kerris7_ has joined #ocaml
Kerris7 has quit [Read error: 54 (Connection reset by peer)]
hkBst has joined #ocaml
Kerris7_ has quit []
sporkmonger has joined #ocaml
sporkmonger has quit []
Smerdyakov has quit ["Leaving"]
Smerdyakov has joined #ocaml
Kerris7 has joined #ocaml
struktured has joined #ocaml
Camarade_Tux has quit [Read error: 110 (Connection timed out)]
Camarade_Tux has joined #ocaml
jeddhaberstro has joined #ocaml
olgen has joined #ocaml
Kerris7_ has joined #ocaml
Kerris7 has quit [Read error: 54 (Connection reset by peer)]
yziquel has joined #ocaml
<yziquel> hi. i had a look at the code of the postgresql binding. concerning objects, i fail to understand the following code at http://paste.lisp.org/display/71752. specifically the fun() -> ... in object(self) construct. Is the a constructor? is this a piece of code that is called when you invoke new connection?
<yziquel> "Is this a" instead of "If the a"...
<yziquel> i understood there were no constructors for objects, so i'm sort of confused...
<mfp> yziquel: let ... in object and fun _ -> object are valid "class expressions"
<Smerdyakov> yziquel, what are you doing with PostgreSQL and OCaml?
<yziquel> mfp: i googled for the fun _ -> object but i still do not understand how it works...
<yziquel> Smerdyakov: gathering data from the net.
<mfp> yziquel: it's a way to control when things are evaluated
<Smerdyakov> yziquel, can you be more specific?
<mfp> yziquel: it's similar to let adder n = fun m -> n + m
<yziquel> mfp: so by doing fun _ -> object you can manage to open a connection and then create the object? is that it? but shouldn't it be more something like let _ = ... in object?
<mfp> let me read that code again...
<yziquel> Smerdyakov: lots of thing, from demographic data, economic data and other personal-purpose data... but for now, i'd like to get ocaml+postgresql working together...
<mfp> in this case, it's used to compute the value of conn_info with the optional parameters that precede the final ()
<Smerdyakov> yziquel, the [fun () -> ...] adds an extra curried argument.
<Smerdyakov> yziquel, that makes it critically different from a [let].
<mfp> this is not the best example because everything will be evaluated when applied to () anyway, but it'd be clearer with
<mfp> class a = let n = Random.int 100 in fun () -> object method x = n end
<mfp> so (new a) is : unit -> a, but n is shared for all instances
rwmjones has quit [Read error: 104 (Connection reset by peer)]
<mfp> as opposed to class a () = let n = Random.int 100 in object method x = n end
<mfp> or class a () = object val n = Random.int 100 method x = n end
<yziquel> mfp: still thinking about it. thanks.
<Smerdyakov> yziquel, just think of a class as a curried function, and then this is no different from curried functions in general.
<mfp> it's really like let adder n = fun m -> n + m
<mfp> or let f n = let m = foo n in fun x -> x + m
<yziquel> ah. ok. this is why there is the () in the example let c = new connection ~conninfo:Sys.argv.(1) ().
<mfp> with optional parameters, you always want a non-optional one after them, and it's often ()
snhmib has joined #ocaml
<yziquel> ok. that's why let _ = ... in object would not work. optional arguments. thanks.
s4tan has quit [Read error: 60 (Operation timed out)]
s4tan has joined #ocaml
dfritz has quit [Read error: 110 (Connection timed out)]
yziquel has left #ocaml []
pango_ has quit [Remote closed the connection]
pango_ has joined #ocaml
hjpark has quit [Remote closed the connection]
Kerris7_ has quit [Read error: 54 (Connection reset by peer)]
Kerris7 has joined #ocaml
blizz2 has joined #ocaml
blizz2 has quit [Client Quit]
snhmib has quit ["Good riddance!"]
Kerris7 has quit [Read error: 60 (Operation timed out)]
snhmib has joined #ocaml
Kerris7 has joined #ocaml
<alexyk> ok, trying again to find a good way to do conditional compilation
<alexyk> I have a program which uses pgocaml to fetch a table from postgres
<alexyk> then I dump it as text and don't need postgres anymore
<alexyk> now that I compiled ocaml 3.11 from source I don't want to recompile pgocaml just yet
<alexyk> the same program should be able to compile with or without pgocaml available, with a function removed and a match branch replaced by failwith -> "unavailable"
<mfp> you can use Camlp4MacroParser
<alexyk> so what do folks do?
<alexyk> mfp: is there a tutorial somewhere?
<mfp> compile with -pp "camlp4o Camlp4MacroParser.cmo -DUSE_POSTGRES" and then use let func _ = IFDEF USE_POSTGRES THEN expression ELSE expression END
<mfp> the only documentation I know of is camlp4/Camlp4Parsers/Camlp4MacroParser.ml
<alexyk> mfp: thanks much!
<mfp> np
vixey has quit ["There exists an infinite set!"]
vixey has joined #ocaml
olgen has quit []
<alexyk> so I tried to compile ocaml 3.11 into a prefix with ./configure --prefix=..., and it didn't take it; it also coudln't build from a separate build directory; and now I have to manually compile stuff for it, I started with findlib... Is it how people migrate? GODI lists 3.10.2 still, and I wonder how long will it take for it to upgrade -- and then is it usually a new tarball, so you have to select and build packages again? Why can't we have a yum for ocaml, or
<Smerdyakov> alexyk, we do. All the usual OCaml stuff is in Debian.
<hcarty> And Fedora and GODI, for that matter...
<alexyk> Smerdyakov: Debian isn't exactly a source-based distro, this leaves mac people and solaris and whoever else dry out of the water
<hcarty> alexyk: When GODI adds 3.11 support, selecting OCaml for rebuild with automatically rebuild the relevant libs as well
<alexyk> hcarty: nice
<Smerdyakov> Big deal. Linux is the default operating system for serious functional programming.
<vixey> alexyk, are you on mac?
<alexyk> still somehow godi feels very clumsy compared to portage or macports
<alexyk> Smerdyakov: Solaris threading kicks Linux's puny li'l arse, so I'd say Solaris is a default system for serious threaded programming
<vixey> lol
<alexyk> and threaded is great with FP
<Smerdyakov> alexyk, this has more to do with software availability than OS design.
<Smerdyakov> Another way of saying it is that this is a social fact, not a theoretical fact.
<alexyk> Smerdyakov: my Solaris box runs 6,000 threads fine where linux chokes with 600-1000
<alexyk> comparable hardware, and creating threads is fast and nice on Solaris, becomes a problem on Linux
<vixey> alexyk, so maybe you should stop arguing about nonsense?
<Smerdyakov> alexyk, I really couldn't care less. I only need maybe three times as many OS threads as I have cores. The rest can be done with lightweight userspace threads.
<Smerdyakov> In general, I think all OSes with significant user bases today suck unspeakably much.
<Smerdyakov> It's all about convenience in having packages available easily for the particular compromise that you choose.
<alexyk> Smerdyakov: I used to running SuSE and CentOS, but always liked the idea of Debian; so you're sayng all ocaml stuff is current in debian nowdays?
<vixey> Smerdyakov, Do you think you might write an OS in the future?
<Smerdyakov> vixey, yes.
<vixey> Smerdyakov, using existing tools?
<Smerdyakov> vixey, very high chance that I'll start in the next 5 years.
<Smerdyakov> vixey, I'm not sure what you mean by that.
<Smerdyakov> alexyk, yes.
<vixey> well Coq basically
<vixey> or Ynat
<alexyk> Smerdyakov: is it because ocaml developers are on Debian?
<Smerdyakov> vixey, I'd probably start out that way.
<vixey> cool
<Smerdyakov> alexyk, it's because Debian is a well-oiled machine.
<Smerdyakov> alexyk, no other distribution for any OS has comparable manpower and infrastructure.
<alexyk> so this newfangled Ubuntu thing popular with kindergarten folks, is it a superset of Debian?
<Smerdyakov> No, Ubuntu lags behind Debian and misses some of the good stuff.
<vixey> alexyk, Can you stop trolling for a moment to answer my question?
<Smerdyakov> I'm not up on the details, though.
<vixey> alexyk, actually nvm
<vixey> no reason I should have to prompt you twice in order to try and help you
<alexyk> vixey: you seem to form questions in pronouncements peppered with qualifications such as "idiotic," which makes one kind of unmotivated to explore them much
<vixey> alexyk, no
<alexyk> ""idiotic" for you might me a necessary compromise for others, which you might try to imagine first as a possibility in reality
<vixey> alexyk, stop talking for a moment and read what I've asked you
<alexyk> vixey: I'm on a mac with macports and godi, yes
jeddhaberstro has quit []
Palace_Chan has joined #ocaml
Camarade_Tux has quit ["Leaving"]
Gionne has quit ["Leaving"]
* alexyk needs to get himself a sony vaio with debian
<alexyk> or an asus eee pc with it
<flux> I use godi even in debian. it was nice to be able to switch to cvs ocaml with relative ease.
<flux> also it's nice to have different systems with more comparable ocaml installations
<flux> also godi apparently is gaining some windows support, which is interesting
<flux> and to add to the insult, I've also installed it on a solaris host! ;)
<alexyk> flux: so you're able to use all godi packages with a CVS ocaml? but then you can'd do ocamlopt, right?
<alexyk> bianry versions will be different
<flux> alexyk, what do you mean I can't do ocamlopt?
<flux> alexyk, godi recompiles everything
<flux> I don't see how ocamlc/ocamlopt is related to this
<alexyk> flux: by default godi has ocaml 3.10.2 now; how do you use with an external ocaml?
<alexyk> godi installs ocamlc/opt in its bin, I thought it's a good thing it's all self-contained
<flux> alexyk, it's not external per se; you can instruct it to switch to CVS ocaml instead of the release
<flux> the old version is gone after that
<flux> of course, one could have multiple godi installations
<flux> for different ocaml versions, if one so wishes
<alexyk> flux: that's really cool! beats installing findlib by hand and making sure makefiles use that
<alexyk> so is it in the godi docs I assume? :)
<flux> I don't think so :)
<flux> I learned it from hm ocamlnat home page perhaps
jeddhaberstro has joined #ocaml
<alexyk> flux: ocamlnat?
<flux> native toplevel
<flux> but I might remember that wrong
<flux> at the time I was taking a look at that
<alexyk> flux: what's the gist? :) define some environment OCAML?
<alexyk> or have it in the path, or something? :)
<flux> no, it was modifying some configuration file
<flux> or perhaps it was possible to do it from within godi_console
<alexyk> flux: ok, will google that
<alexyk> but say you now do cvs up and rebuild ocaml, what do you do in godi top rebuild all?
<flux> "GODI users can simply ask GODI to rebuild the godi-ocaml-src and godi-ocaml after setting OCAML_CVS_CHECKOUT = yes and OCAML_CVS_REVISION = HEAD in the configuration screen for godi-ocaml-src. (Make sure that you have GODI_SECTION = 3.10 in your godi.conf, and do "Update the list of available packages".) "
<alexyk> 3.10 I guess is the current godi stage so we have to keep it even with 3.11...
Snark has quit ["Ex-Chat"]
<alexyk> flux: thx! awesome, will try to recompile my godi
<alexyk> no debian then ;)
<flux> not to say debian packages aren't excellent
<flux> and ubuntu versions only a little bit more buggy versions of them ;) (but perhaps they are catching up; I hope so, because I've got ubuntu on many systems)
<flux> (I think I've submitted one or two ubuntu bugs on those)
<alexyk> flux: yeah, I really want a debian and even a windoze for .net exploration, but has to strictly limit exposure by fixing platforms, and in my case mac is a perfect compromise... if I have to do a server, debian may or may not beat centos (which has all dell server-specific drivers working out of the box); if I'm in a dev shop, the clearly debian is the way
<alexyk> flux: do ubuntu people react to bugs fast, and/or is there a process of porting a current debian package with no fuss?
<flux> I think it's nice that there's a decent ocaml platform for macs too, even though I don't use it. atleast I feel it might be possible to port my software to ocaml more easily ;)
<alexyk> flux: no hiccups on macs at all except some sed issues (fixed in godi now) and this new/old ocamlopt bug I fixed again and sent to the caml-list today
<olegfink> speaking of platforms and such, was there any steps in trying to merge plan9 patches into ocaml mainline?
<olegfink> (there is a patched version of 3.10.0 which works on plan9)
<flux> why?-)
<flux> I'm not sure if it's a great idea to integrate support to dead/hobby os'es into O'Caml HEAD..
<olegfink> dead or hobby?
<olegfink> I'd understand if you said 'research'
<flux> oh, so it's still being used for research?
<flux> because I was under the impression it would not
<olegfink> well, it is... for me.
<flux> :)
alexyk has quit []
<olegfink> people mostly use it for development and NLP nowadays.
<olegfink> but I have that crazy idea that JoCaml is a perfect 'main' system language.
<flux> yeah, I really should take a deep look at JoCaml..
<flux> I suppose JoCaml works OK in the "thousands of independant actors" scenario?
<flux> (compared to using plaing O'Caml threads - it won't work)
<flux> (atleast efficiently)
<olegfink> jocaml provides lightweight threads, any decent implementation should handle 10k-100k well.
<olegfink> my point was that it's really nice to have a functional language as a basis for system programming, but haskell draws in a whole abstraction level which hsa nothing to do with the underlying system's features, and ocaml/jocaml seem like a much more pleasant thing to have in place of C.
asabil has quit [Read error: 110 (Connection timed out)]
<olegfink> flux: hmm, is ocaml thread really that bad?
asabil has joined #ocaml
<olegfink> ah, I got confused
<olegfink> the standard 'threads' library uses posix threads, which is no good of course. There is Lwt, but I guess it's quite similar to what JoCaml uses.
apples` has joined #ocaml
Stefan_vK1 has joined #ocaml
<flux> I don't like Lwt for some reason.. perhaps I would if I knew it better :)
<flux> but I don't see how to implement function val spawn : (unit -> Lwt.t) -> Lwt.t with it
Stefan_vK has quit [Read error: 110 (Connection timed out)]
sporkmonger has joined #ocaml
malc_ has joined #ocaml
love-pingoo has quit [Read error: 110 (Connection timed out)]
anryx has joined #ocaml
pango_ has quit [Remote closed the connection]
pango_ has joined #ocaml
struktured has quit [Read error: 110 (Connection timed out)]
pango_ has quit [Remote closed the connection]
pango_ has joined #ocaml
love-pingoo has joined #ocaml
Camarade_Tux has joined #ocaml
<mfp> flux: what are you trying to do exactly?
<mfp> I assume you're looking for something different from let spawn f = f () ;-)
marmotine has quit ["mv marmotine Laurie"]
struktured has joined #ocaml
alexyk has joined #ocaml
anryx has quit ["Leaving"]
Camarade_Tux has quit ["Leaving"]
jeddhaberstro has quit [Read error: 60 (Operation timed out)]
hkBst has quit [Read error: 104 (Connection reset by peer)]
_zack has quit ["Leaving."]
jeddhaberstro has joined #ocaml
love-pingoo has quit ["Connection reset by pear"]
malc__ has joined #ocaml
vixey has quit ["There exists an infinite set!"]