flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | Grab OCaml 3.10.2 from http://caml.inria.fr/ocaml/release.html (featuring new camlp4 and more!)
thelema has quit [Read error: 110 (Connection timed out)]
tomh has quit ["http://www.mibbit.com ajax IRC Client"]
dobblego has quit ["Leaving"]
postalchris has quit [Read error: 110 (Connection timed out)]
Axioplase has quit ["brb"]
dobblego has joined #ocaml
<tsuyoshi> Int_val will work.. it's just an int
Axioplase has joined #ocaml
Morphous has quit [Read error: 110 (Connection timed out)]
Morphous has joined #ocaml
Ched- has quit [Read error: 110 (Connection timed out)]
Ched- has joined #ocaml
O_Menda has joined #ocaml
postalchris has joined #ocaml
structured has joined #ocaml
thelema has joined #ocaml
O_Menda has quit [Remote closed the connection]
postalchris has quit ["Leaving."]
netx has joined #ocaml
hardcopy has left #ocaml []
marmotine has quit ["Quitte"]
seafood has quit []
sporkmonger has joined #ocaml
seafood has joined #ocaml
seafood has quit []
bohanlon has joined #ocaml
nuncanada has joined #ocaml
AxleLonghorn has joined #ocaml
AxleLonghorn has left #ocaml []
r0bby has quit [Client Quit]
r0bby has joined #ocaml
seafood has joined #ocaml
structured has quit [Read error: 104 (Connection reset by peer)]
RobertFischer has quit ["Taking off -- check out http://smokejumperit.com and http://enfranchisedmind.com/blog/"]
seafood has quit []
dobblego has quit ["Leaving"]
dobblego has joined #ocaml
seafood has joined #ocaml
seafood has quit [Client Quit]
seafood has joined #ocaml
cmeme has quit ["Client terminated by server"]
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<flux> Int_val?
cmeme has quit []
cmeme has joined #ocaml
Ched- has quit [Remote closed the connection]
seafood has quit []
cmeme has quit []
cmeme has joined #ocaml
seafood has joined #ocaml
seafood has left #ocaml []
seafood has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<palomer> how do I do this:
<palomer> let _ =
<palomer> match () with
<palomer> () when 3 = 4
<palomer> | () -> print_endline "eh"
cmeme has quit []
cmeme has joined #ocaml
<palomer> http://ocaml.pastebin.at/163 <--this is even stranger
<palomer> thelema, someone sent me a simpler test case, if you're interested
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
nuncanada has quit ["Leaving"]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<flux> I don't think you can
<flux> let _ = let f () = print_endline "eh" in math () with () when 3 = 4 -> f () | () -> f ()
<flux> palomer, it's not, really
<flux> palomer, it means: match () with | ( () | () ) when 3 = 4 -> ..
<flux> palomer, compiler will give you warnings..
<flux> palomer, as will toplevel (CVS atleast)
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<palomer> hrmph
<palomer> but it would be soo useful!
cmeme has quit []
cmeme has joined #ocaml
<flux> well, at times yes
<flux> and perhaps it could even be introduced without breaking backwards compatibility with proper precedencies
<flux> write a syntax extension for it ;)
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<palomer> I should!
Axioplase has quit ["leaving"]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<palomer> hrmph
<palomer> there's nothing similar to group_by for lists anywhere, right?
cmeme has quit []
cmeme has joined #ocaml
<palomer> implemented, if anyone is interested:
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
filp has joined #ocaml
<flux> isn't that O(n^2)?
cmeme has quit []
cmeme has joined #ocaml
<palomer> yes
<palomer> is there a way to do better?
<flux> sort by the predicate?
<flux> then linearly find places where the predicate holds true or something
<palomer> true, true
Sparkles has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<palomer> but, to quote many an obnoxious people "premature optimization is the root of all evil"
<palomer> man, I wish there was a really easy to use ocaml profiler
<palomer> looks like I'll have to do it manually
<palomer> where's the function to get the current time in milliseconds?
<flux> Unix.gettimeofday ()
<flux> it doesn't exactly match your specification though
cmeme has quit []
cmeme has joined #ocaml
<seafood> Does anyone know how to refer to a record field *inside* a module?
<seafood> Usually you write something like "{ a_field = 1 }" to create a value of record.
<seafood> What do you do when it's inside a module?
<seafood> { M.a_field = 1} doesn't work (where M is a module).
<flux> well, it does :)
<flux> work, that is
<flux> perhaps you have some other problem
<flux> are you taking into account that each file introduces a new module, no matter what modules are defined in it?
<seafood> Hmmm. I got told it was a syntax error in the OCaml toplevel
<flux> module M = struct type a = { i : int } end;;
<flux> { M.i = 42 };;
<flux> works?
cmeme has quit []
cmeme has joined #ocaml
<seafood> flux: Man, weird. It does work
<seafood> I don't know *what* I was doing before.
<seafood> Thanks.
cmeme has quit []
cmeme has joined #ocaml
<seafood> flux: I know there are strong type checking based reasons for the fact that you can't reuse field_names in two records in the same module.
<seafood> But god it's annoying.
<flux> seafood, yes..
<flux> seafood, if you need to do that a lot at certain spots, you can use local module declarations: let module U = Unix in { something manipulating the time structure } for instance
<flux> or you can get pa_openin, which allows syntax open Unix in <expression>
<seafood> I'm writing a C binding where many of the structures have the same field names.
<flux> well, you can put them to their own modules
<flux> or do what I do: prefix the fields with a one or two-character prefix..
<seafood> Yes, I was considering that (as you can tell from earlier) :)
<flux> say, type date_time = { dt_hh : int; dt_mm : int } etc
<seafood> Yeah, I usually use that method.
<seafood> I'll probably go with that.
cmeme has quit []
<flux> seafood, or you could use the object system :)
<flux> but that will take pattern matching away..
<seafood> No thanks :)
cmeme has joined #ocaml
<flux> idea: someone implement pattern matching with objects :)
<seafood> I don't use the O in OCaml much :)
<flux> it can be immensely relaxing to be able to do object#foo instead of Object.foo object ;)
<seafood> Yes, I can see that.
<seafood> But I want pattern matching.
<seafood> Thanks for all your help.
<flux> happy hacking
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
rwmjones has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
OChameau has joined #ocaml
Yoric[DT] has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<Yoric[DT]> hi
hkBst has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
Snark has joined #ocaml
cmeme has quit [Client Quit]
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<vixey> hi Yoric[DT]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<Yoric[DT]> Smerdyakov: ping
r0bby has quit [Connection timed out]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
adu has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
tty56 has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
adu has quit []
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
petchema has quit [Remote closed the connection]
cmeme has quit []
cmeme has joined #ocaml
tomh has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
jdh30 has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
petchema has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
sporkmonger has quit []
cmeme has joined #ocaml
Linktim has joined #ocaml
cmeme has quit [Connection reset by peer]
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
Linktim_ has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
sporkmonger has joined #ocaml
l_a_m has joined #ocaml
Linktim has quit [Connection timed out]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
Linktim- has joined #ocaml
tty56_ has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
LordMetroid has joined #ocaml
petchema_ has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
tty56 has quit [Read error: 110 (Connection timed out)]
cmeme has quit []
cmeme has joined #ocaml
petchema has quit [Read error: 110 (Connection timed out)]
Linktim_ has quit [Read error: 110 (Connection timed out)]
seafood has quit []
cmeme has quit []
cmeme has joined #ocaml
seafood has joined #ocaml
seafood has left #ocaml []
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
<vixey> I can't have mutually recursive types can I?
<vixey> I have to use a variable instead
RobertFischer has joined #ocaml
tty56 has joined #ocaml
<jdh30> vixey: type a = A of b and b = B of a;;
<jdh30> hi Robert
cmeme has quit []
cmeme has joined #ocaml
<vixey> ok thanks
<RobertFischer> jdh30: Hey.
tty56__ has joined #ocaml
<flux> darn, got bitten by top level expression redefination..
cmeme has quit []
cmeme has joined #ocaml
<flux> I had functions 2..9 of form let curry4 f a1 a2 a3 a4 = f (a1, a2, a3, a4), but at curry8 it messed up so that curry7 was redefined to what curry8 would've been
<jdh30> flux: that can be a real PITA. Watch out for it!
<flux> of course, functions such as curryn, compose, identity, const, flip etc would be nice to be in the standard library already ;)
cmeme has quit []
cmeme has joined #ocaml
<RobertFischer> flux: You have 8 argument functions kicking around?
<flux> robertfischer, yep. I'm mapping rows from a database query.
tty56_ has quit [Read error: 110 (Connection timed out)]
<RobertFischer> Wow. Ouch.
<flux> maybe some day I'll write a macro to clean this up slightly..
<RobertFischer> Or at least some kind of type system assist to make sure you don't swap adjacent arguments.
<RobertFischer> That would suck.
<jdh30> flux: We used our own extended stdlib that had autogenerated functions for common operations over tuples. They're very useful. I should release the library...
<flux> I get a bit of that already, as type system checks the number of tuples, and the types of adjacent tuples may actually be different
cmeme has quit []
<flux> hm, adjacent fields of a tuple
<flux> what do you call them..
<jdh30> Incidentally, I get the impression that more and more people are using OCaml for web programming. Is that right?
cmeme has joined #ocaml
<RobertFischer> jdh30: I'd really like to.
<jdh30> I was just dribbling whilst reading the Ocsigen web page about benchmarking byte vs native.
<RobertFischer> I'm doing some work on mod_caml/Cocanwiki right now, but I wouldn't write my own webapps in OCaml right now.
<flux> actually this is not web programming. but you might still be true.
<flux> s/true/correct/
<jdh30> OCaml's bytecode is already vastly faster than most of the languages used for web programming so maybe OCaml has a good chance to make serious inroads here.
<jdh30> Parallelism is also less of an issue.
<jdh30> Rob: why not OCaml right now?
<jdh30> Rob: libraries?
<vixey> should I use a -> b -> c -> d or a * b * c -> d in a record?
<jdh30> vixey: what do you mean "in a record"?
<jdh30> vixey: can you give more context.
<vixey> type foo = { ... : a -> b -> c > d ; ... }
<Yoric[DT]> that's not much more context :)
<jdh30> Either should be fine but you might consider objects if you have a lot of (member) functions in your records.
<vixey> I guess I should not curry since I always fully apply it
<Yoric[DT]> Usually, whether in or out of records, a -> b -> c -> d is preferred.
<jdh30> Yoric: but it'll have to do. :-)
<vixey> Yoric[DT]: oh why?
<jdh30> vixey: I'd only uncurry if you'll be passing the three arguments around together a lot, e.g. folding with them as an accumulator.
tty56 has quit [Read error: 113 (No route to host)]
cmeme has quit []
cmeme has joined #ocaml
<Yoric[DT]> vixey: slightly more flexible.
<jdh30> Apart from us, LexiFi and CoherentGraphics, who sells OCaml software?
<Yoric[DT]> OCamlCore ?
<jdh30> What do they sell?
filp has quit [Read error: 104 (Connection reset by peer)]
cmeme has quit [Connection reset by peer]
cmeme has joined #ocaml
<gildor_> jdh30, Yoric[DT]: for now OCamlCore is selling services
<Yoric[DT]> ok
<jdh30> Their webpage says "it works!". I am very happy for them but none the wiser. ;-)
<Yoric[DT]> MLState ?
<gildor_> the website is on a CDROM for now
<Yoric[DT]> No, I mean MLState intends to sell OCaml software.
<gildor_> I have too much work to put it online
<jdh30> Cool. What do they do?
<gildor_> MLstate -> web site
<jdh30> French -> English? :-)
<flux> jdh30, google :)
<jdh30> They develop a something of zero one solution converges (?) on a unit language.
<jdh30> Hmm
<flux> (I used that)
<jdh30> Ok, so I can't speak french. :-)
<RobertFischer> jdh30: I won't to OCaml right now because frameworks like Grails and Rails let me jump straight into application logic instead of spending a lot of time building up infrastructure.
<jdh30> Rob: I see. Can you specify what kind of infrastructure you would like OCaml to bundle?
<jdh30> "Unlike our competitors who use a stack of layers technological"
<jdh30> Apparently Google doesn't speak French either.
<RobertFischer> jdh30: I don't want OCaml to bundle it. I'd like to have a framework that sits on top of the language and provides the web infrastructure. Shoving it into the language would be overkill.
<jdh30> Rob: Sorry, I didn't mean bundle it into the language.
<jdh30> Rob: What more could OCamlers provide for you?
<jdh30> Rob: That Grails etc. provide?
<RobertFischer> jdh30: The conventional MVC structure of Grails/Rails is a major win for development.
AxleLonghorn has joined #ocaml
cmeme has quit []
<jdh30> Rob: Bearing in mind that I know nothing about web programming...
<jdh30> What is MVC?
AxleLonghorn has left #ocaml []
cmeme has joined #ocaml
<RobertFischer> jdh30: Nearly transparent database mappings is nice, too.
<RobertFischer> jdh30: MVC is the standard architecture for web applications. It stands for "Model-View-Controller", and corresponds to having models that store your business logic, views that are responsible for presentation, and controllers that glue the two together.
<jdh30> I see.
<RobertFischer> jdh30: I think there is a very promising area of research for providing static type guaranties for common web application efforts. Being able to compile and see that a form isn't setting a field on a record which the receiving controller has, for instance. That'd be awesome.
<jdh30> Is "nearly transparent database mappings" possible with static typing?
<jdh30> Rob: Interesting. I thought static typing was a write off for web apps.
<RobertFischer> jdh30: It is right now, but that's a mistake.
<jdh30> Interesting. :-)
<jdh30> And this appears to be what MLState are aiming at...
<RobertFischer> jdh30: And I make a living writing web apps, so I know where lal the pain is.
<jdh30> Right.
<jdh30> May I pick your brains?
<RobertFischer> jdh30: And re: static typing/database -- it's definitely possible. You would have to leverage some metaprogramming (read: camlp4) to do it, but you should be able to type it.
<RobertFischer> jdh30: Of course. Got a link for MLState?
<RobertFischer> jdh30: You can pick my brain until my boss shows up, anyway. He's supposed to be here at 8, but I haven't heard from him yet.
* RobertFischer just realized that "8" means nothing without context. Stupid global society.
<jdh30> mlstate.com IIRC
cmeme has quit []
cmeme has joined #ocaml
<jdh30> Cool. So we're hitting an insurmountable problem that nobody has ever hit before. Ok, that isn't entirely true. Our website is completely static which is almost fine except we have a growing portfolio of selling products and people are more often wanting to buy several at a time.
<RobertFischer> jdh30: My French isn't very good, but I think they're digging at a slightly different spot. They're thinking AJAX <-> webserver directly, without all of the annoying middle stuff. That's a good place to be digging, too.
<jdh30> So we need a shopping cart for one thing and I'm looking for ways to implement that and anything else that might be worthwhile (i.e. boosting sales to make up for my lost time away from F#).
<jdh30> Rob: I have an unread book on AJAX so I still have no idea what it is (and JavaScript and ...).
filp has joined #ocaml
<orbitz> why not just deploy any oll ecommerce tool?
<jdh30> Anyway, I was really surprised to find that web tools appear to be in a state of complete disarray. Ideally I'd like to code our site in OCaml (because it rocks) and I really don't want to go back to using dynamic languages.
<jdh30> orbitz: what is that?
<orbitz> there are lots of shopping cart solutions on freshmeat
<RobertFischer> Thinks like ZenCart, Drupal with ecommerce plug-ins, etc., etc.
<jdh30> What do ecommerce plugins do in that context? Isn't the cart all the ecommerce I need?
<orbitz> i geuss the question is: are you simply tryign to sovle yoru shoppign cart problem or are you trying to push Ocaml as a web language? one can be solved right now
<jdh30> orbitz: I'm just putting feelers out to see what is possible. Ideally, I'd like to run OCaml code (e.g. bytecode) on my server. Code it here and upload it. Then I can take care of everything else myself (e.g. writing the cart).
<mfp> RobertFischer: ocsigen provides the static type guarantees you referred to. What do you see missing, standard templating & ORM solutions?
marmotine has joined #ocaml
<jdh30> I have found millions of carts out there, of course, but they all appear to be poorly written and have no users. So I don't trust them.
<RobertFischer> jdh30: Drop me an e-mail at robert at smokejumperit.com -- I can talk to you more later. But, yes, the web frameworks are pretty much a mess
<jdh30> Also, they are written in some of the most hideous languages I've ever seen...
cmeme has quit [Read error: 104 (Connection reset by peer)]
<jdh30> Rob: Excellent, thanks.
<RobertFischer> mfp: You can e-mail me, too, and we can chat. Maybe Ocsigen has what I need...but when I played with it, I don't think so.
cmeme has joined #ocaml
RobertFischer has left #ocaml []
<mfp> (IMHO most ORMs are worthless past trivial CRUD queries)
<flux> OTOH trivial CRUD covers a lot of apps?-)
<mfp> yes
<mfp> but you know something's wrong you you start to pass SQL snippets as parameters in addition to the normal ones
<mfp> s/you/when/
<orbitz> hah
cmeme has quit []
cmeme has joined #ocaml
<mfp> and I don't see the point of the cutesy DSLs like this:
<mfp> statement = Select[:column1].from[:table1].where { like :column1, "any"; add_clause "(c2 = 'foo')" } which stands for
<mfp> select column1 from table1 where column1 like 'any' and c2 = 'foo'
<mfp> example taken from http://sqldsl.rubyforge.org/
<vixey> mfp: as opposed to what?
<mfp> 1st line vs. 2nd one above
<vixey> If you do string interpolation directly it's very common to forget to espace quotes and so on
<mfp> which can be solved differently with prepared stmts and stuff
<vixey> What are prepared stmts?
cmeme has quit []
<mfp> a SQL expr with placeholders, evaluated once by the DB and "instantiated" with diff param values later
cmeme has joined #ocaml
<flux> I use nowadays: select "SELECT * FROM foo WHERE x=?0" [0, Int "42"]
<flux> but it's not a prepared statement really
<mfp> I use let u = SELECT [User_name = name] users in ... ;-)
<flux> yes ;)
<orbitz> i avoid SQL :)
<vixey> mfp: isn't that exactly the same as the ruby DSL but with different syntax?
<orbitz> but hey, let's get LINQ emebded into Ocaml? who's with me?
<mfp> vixey: no, it's type-safe and checked statically against the DB schema
<mfp> and composable
<vixey> ok
<mfp> it would be pointless if it didn't feature that, which is my point regarding (Ruby) DSLs like the one I mentioned
cmeme has quit []
cmeme has joined #ocaml
<vixey> ok I understand you now
* mfp afk
cmeme has quit []
Linktim_ has joined #ocaml
cmeme has joined #ocaml
Axioplase has joined #ocaml
bluestorm has joined #ocaml
cmeme has quit []
Axioplase has quit [Read error: 104 (Connection reset by peer)]
cmeme has joined #ocaml
cmeme has quit []
Axioplase has joined #ocaml
cmeme has joined #ocaml
bohanlon has quit [Remote closed the connection]
bohanlon has joined #ocaml
Linktim- has quit [Read error: 110 (Connection timed out)]
jdh30 has quit ["using sirc version 2.211+KSIRC/1.3.12"]
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
r0bby has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
tty56__ has quit []
Linktim- has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
lordmetroid_ has joined #ocaml
LordMetroid has quit [Read error: 104 (Connection reset by peer)]
cmeme has quit []
cmeme has joined #ocaml
lordmetroid_ has quit [Client Quit]
LordMetroid has joined #ocaml
lordmetroid_ has joined #ocaml
LordMetroid is now known as Guest56172
cmeme has quit []
cmeme has joined #ocaml
Linktim_ has quit [Read error: 110 (Connection timed out)]
lordmetroid_ is now known as LordMetroid
cmeme has quit []
cmeme has joined #ocaml
Torment is now known as Jedai
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
pango has quit [Remote closed the connection]
pango has joined #ocaml
cmeme has quit [Read error: 104 (Connection reset by peer)]
cmeme has joined #ocaml
rwmjones has quit [Remote closed the connection]
cmeme has quit []
cmeme has joined #ocaml
marmotine has quit [Read error: 110 (Connection timed out)]
<flux> yes, at times I really wish there were refactoring tools for ocaml - been spending the day monadifying a database request library
cmeme has quit []
cmeme has joined #ocaml
* Yoric[DT] is doing about the same thing at this instant.
cmeme has quit []
cmeme has joined #ocaml
struk_atwork has quit [Read error: 104 (Connection reset by peer)]
struk_atwork has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
struk_atwork has quit [Read error: 104 (Connection reset by peer)]
rwmjones has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
Linktim- has quit [Read error: 104 (Connection reset by peer)]
Linktim has joined #ocaml
<bluestorm> flux: what kind of things do you do ? could it not be helped by some camlp4 hackery ?
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit []
cmeme has joined #ocaml
cmeme has quit [Read error: 104 (Connection reset by peer)]
Guest56172 has quit [Client Quit]
marmotine has joined #ocaml
<flux> well, plain old pa_monad could help a bit
<flux> but I can't think of a tool that doesn't work in the type level, that would be able to monadify code
<flux> it would need to determine which functions to convert, and how..
aryx has left #ocaml []
Linktim_ has joined #ocaml
<mfp> flux: what about this: write all the code monadically, add syntax (like perform_nop or something) to specify whether pa_monad has to expand to bind or turn a <-- x; into let a = x in. Then monadifying code involves changing one keyword, recursively.
postalchris has joined #ocaml
<bluestorm> mfp: next good idea : we write all code in a monad transformer, and then choose them on the fly
<mfp> the problem with that is that we have to wrap all the stdlib first
<bluestorm> that was kind of ironic actually :-'
<mfp> is anybody following the Wide Finder 2 story? http://www.tbray.org/ongoing/When/200x/2008/05/01/Wide-Finder-2
munga has joined #ocaml
Linktim has quit [Read error: 110 (Connection timed out)]
<mfp> I ported the log analyzer to OCaml (10X in serial code compared to Scala and Ruby, even though most of the work is in the regular expression engine), and parallelized it with Jon Harrop's fork()-based invoke : ('a -> 'b) -> 'a -> (unit -> 'b)
<mfp> that got me thinking...
<flux> mfp, writing everything monadically is less than ideal..
<mfp> is something like Haskell's concurrency (which will only scale to ~4 cores or so) desirable at all given invoke?
dejones has joined #ocaml
<dejones> Hello, how do you pronounce OCaml? Is it "Oh Camel"?
<bluestorm> sounds fine
<orbitz> mfp: i guess you first have to say what yo uare after. paralleizm and concurrency may not be teh sam ething
<im_a_man> o-ca-mmm-llll
<orbitz> in my sapir-whorf world, erlang is concurrency but not parralleism
<dejones> heh, thanks bluestorm, im_a_man.
<im_a_man> orbit, for parallelism, use cilk
<orbitz> i pronounce it aw-cum-ul
<orbitz> im_a_man: i'm not
<orbitz> i'm responding ot mfp
<mfp> orbitz: hmm I tend to think parallelism implies concurrency (not the other way around), but I think I see what you mean, you're considering the programming model as seen within a single Erlang process?
<orbitz> mfp: more along the lienof how independent the task is. for isntance i think erlang would be for concurrency because you are tendign to do a lto fo communicatino bewteen paths of execution, whereas something liek map reduce is paralleism beacuse you aren't tryign to communicate back and forht
<orbitz> mfp: arbitrary distinction, but IMO a good oen
<mfp> im_a_man: so it's basically C + spawn? no type-level stuff, nothing else?
<im_a_man> Cilk = GNU C + few reserved words
<orbitz> eeep
<orbitz> no thanks:)
<im_a_man> i prefer pure C99 + fork and semaphores of libs
<orbitz> meh
<orbitz> i haven't done much HPC at all, but i can't imagine it's useful withotu distributing it
<mfp> if only JoCaml didn't disallow fork(), it could "scale down" to a multicore system easily in addition to supporting distributed programming
<orbitz> that's be neat
<mfp> (currently, you have to exec() and register the services "manually")
<im_a_man> to open the map of shared file memory, to establish the semaphores, etc.
<orbitz> thoguhts on Fortress?
<mfp> only read a bit about it
<mfp> there's only a preliminary release out, right?
<orbitz> AFAIK yeah
filp has quit ["Bye"]
<Yoric[DT]> Cilk was a little bit more than "few reserved words".
<Yoric[DT]> There's lazy distributed programming hidden somewhere, too.
OChameau has quit ["Leaving"]
netx has quit [Read error: 110 (Connection timed out)]
<im_a_man> or look for a compiler that targets PVM for multicores.
<im_a_man> and improve a little bit the PVM
<hcarty> mfp: Is the code for Jon Harrop's invoke on the mailing list?
rhar has joined #ocaml
<hcarty> mfp: Nevermind, found it
<bluestorm> hcarty: could you lend me an url ? :]
<hcarty> bluestorm: Sure! Just make sure you have it back before dark :-)
<hcarty> Two (slightly?) different versions, I haven't tried either yet
<hcarty> And something similar for a fork'd map: http://yumegakanau.org/blog/2007/06/03/
<bluestorm> hm
<hcarty> I emailed the ocamlp3l folks to see if the project is still being maintained, and I received replies from several developers assuring me that it is
<bluestorm> it could be interesting to create a module maintaining a real thread pool, that would queues more computations instead of creating loads of process
<hcarty> bluestorm: The last link looks like it is going in that direction, though I don't know how complicated it would be to make that happen
Linktim- has joined #ocaml
Linktim_ has quit [Read error: 110 (Connection timed out)]
bla has quit [Read error: 113 (No route to host)]
guillem has joined #ocaml
RobertFischer has joined #ocaml
bla has joined #ocaml
jeremiah has quit [Read error: 104 (Connection reset by peer)]
ygrek has joined #ocaml
LordMetroid has quit [Read error: 104 (Connection reset by peer)]
ygrek has quit [Remote closed the connection]
jeremiah has joined #ocaml
ygrek has joined #ocaml
LordMetroid has joined #ocaml
postalchris has quit [Read error: 110 (Connection timed out)]
RobertFischer has quit []
rhar has quit [Read error: 110 (Connection timed out)]
rhar has joined #ocaml
postalchris has joined #ocaml
<Snark> ghc is better than ocaml on the shootout?
Linktim- has quit [Remote closed the connection]
ygrek has quit [Remote closed the connection]
bluestorm has quit ["Konversation terminated!"]
munga has quit ["Ex-Chat"]
rwmjones has quit ["Closed connection"]
<mfp> Snark: they're about tied on Pentium 4 (small OCaml advantage if you omit thread-ring), OCaml is faster on AMD
<mfp> Snark: the problem with the shootout is the that Haskell code is very unidiomatic --- it essentially does pointer arithmetic at some point...
<vixey> I thought the point of the shootout was to write fast code
<orbitz> IMO the shootout isn't very good at judging languages that come out very close on it
<orbitz> it it gives a reasonable idea for langauges that are very far apart
sporkmonger has quit []
<mfp> Haskell uses a vector of strict doubles and unsafePerformIO
<mfp> planets = unsafePerformIO $ mallocBytes (7 * nbodies * 8) hmmmm
<mfp> heh To be compiled with: O2 -fglasgow-exts -funbox-strict-fields -fbang-patterns -optc-O Don't enable -optc-mfpmath=sse -optc-msse2, this triggers a gcc bug on x86
<mfp> gotta love the the compiler option magic
<orbitz> :)
jeremiah has quit [Read error: 104 (Connection reset by peer)]
<Snark> ouch
<mfp> several of the GHC benchmarks look like that
<mfp> I found an idiomatic (much shorter) version somewhere; it was ~30 times slower...
ygrek has joined #ocaml
mbishop has quit [Read error: 113 (No route to host)]
mbishop has joined #ocaml
jeremiah has joined #ocaml
l_a_m has quit [Remote closed the connection]
ygrek has quit [Remote closed the connection]
yrrucneerg has joined #ocaml
<yrrucneerg> If I am writing a module called "ConfigReader" what should the file be? configReader.ml, ConfigReader.ml or configreader.ml ?
<orbitz> configReader
<orbitz> .ml
Snark has quit ["Ex-Chat"]
<jlouis> heh, category theorists have no use for polymorphism
<jlouis> (T, eta, mu)... "We'll just make eta and mu natural transformations. Problem fixed."
<jlouis> heh
sporkmonger has joined #ocaml
AxleLonghorn has joined #ocaml
AxleLonghorn has left #ocaml []
Yoric[DT] has quit ["Ex-Chat"]
det has quit [Remote closed the connection]
marmotine has quit [Remote closed the connection]
yrrucneerg has quit ["Leaving"]
hkBst has quit ["Konversation terminated!"]
guillem has quit [Remote closed the connection]
LordMetroid has quit ["Leaving"]
LordMetroid has joined #ocaml
postalchris has quit ["Leaving."]
Morphous_ has joined #ocaml
Morphous has quit [Read error: 110 (Connection timed out)]
Axioplase has quit ["reading in the lab, on the couch"]
ppsmimou has quit [Read error: 110 (Connection timed out)]
gim has quit [Read error: 110 (Connection timed out)]
<palomer> it works!
* palomer ponders
<palomer> to word wrap or not to word wrap
<palomer> NOT!
seafood has joined #ocaml
seafood has quit []
xevz has quit [Read error: 110 (Connection timed out)]