<invariant>
orbitz, thanks, but that gets me Unbound module Core.Unix.
<invariant>
orbitz, I #required all the core options first.
ttamttam has quit [Remote host closed the connection]
<orbitz>
invariant: Core.Std.Unix Imean
ttamttam has joined #ocaml
<Kakadu>
ocamlfind browser -package core
philed has joined #ocaml
<adrien>
oh nice, I didn't know it had that now =)
osa1 has joined #ocaml
<ousado>
ocamlbrowser .. sweet. maybe I should pay more attention to tools
<invariant>
If you load all packages into ocamlbrowser, searching takes 10 seconds.
<invariant>
It's incredibly slow.
<invariant>
Such a search should go about 1000 times faster.
jamii has joined #ocaml
<adrien>
yup
<ousado>
what is "all packages"?
<invariant>
ousado, all that I have installed.
<invariant>
Which is about 43 packages, which is not a lot.
<ousado>
is there a tool for creating a dependency graph? which function calls which functions?
<adrien>
oug
<adrien>
by maxence guesdon / zogguy
<adrien>
zoggy*
<ousado>
ah oug is the name :)
<ousado>
I would have thought it's a typo without the rest :)
<invariant>
Is there an editor which provides completion on record members?
<invariant>
So, if I write List.iter (fun a -> a.) some_list, which then completes on the members available for a?
osa1 has quit [Ping timeout: 245 seconds]
Playground has quit [Ping timeout: 244 seconds]
emmanuelux has joined #ocaml
jbrown has quit [Remote host closed the connection]
lusory has quit [Ping timeout: 240 seconds]
lusory has joined #ocaml
<invariant>
How can I get a mininum user id (cf. /etc/login.defs)?
<orbitz>
read how the C code does it?
<invariant>
orbitz, which C code? (somewhere in useradd, I suppose)
<orbitz>
i suppose so as well
Kakadu has quit [Ping timeout: 244 seconds]
Kakadu has joined #ocaml
Kakadu has quit []
Kakadu has joined #ocaml
ontologiae has quit [Ping timeout: 252 seconds]
andreypopp has joined #ocaml
ttamttam has quit [Remote host closed the connection]
ttamttam has joined #ocaml
ontologiae has joined #ocaml
andreypopp has quit [Quit: sleep]
mcsquiggedy has joined #ocaml
ontologiae has quit [Ping timeout: 248 seconds]
RagingDave_ has joined #ocaml
RagingDave has quit [Ping timeout: 248 seconds]
<invariant>
How can I eliminate this problem? ocamlfind: Error from package `threads': Missing -thread or -vmthread switch
<invariant>
Done, but it's really silly.
<invariant>
It's a situation where apparently there are two options of which only one is consistent.
<invariant>
In Scheme there is a combinator for that called (amb).
PM has quit [Ping timeout: 246 seconds]
PM has joined #ocaml
thomasga has joined #ocaml
Kakadu has quit []
Kakadu has joined #ocaml
Kakadu has quit [Read error: Connection reset by peer]
Kakadu_ has joined #ocaml
jamii has quit [Read error: No route to host]
dwmw2_gone is now known as dwmw2_SAT
Anarchos has joined #ocaml
thomasga has quit [Quit: Leaving.]
Kakadu has joined #ocaml
Kakadu_ has quit [Read error: Connection reset by peer]
sivoais has joined #ocaml
Kakadu has quit [Client Quit]
cyball has joined #ocaml
<orbitz>
invariant: The error message you pasted tells you how to solve it
<invariant>
orbitz, that's why I said "Done, but it's really silly".
Kakadu has joined #ocaml
chambart has joined #ocaml
Kakadu has quit []
Kakadu has joined #ocaml
milosn_ has joined #ocaml
milosn_ has quit [Client Quit]
ontologiae has joined #ocaml
<invariant>
What do I need to enable an lwt syntax extension? I already have a -package lwt.syntax flag.
Playground has joined #ocaml
ontologiae has quit [Ping timeout: 244 seconds]
<invariant>
Got it.
<mfp>
invariant: -syntax camlp4o
<mfp>
too late :/
mcsquiggedy has quit [Ping timeout: 245 seconds]
cdidd has quit [Remote host closed the connection]
chambart has quit [Ping timeout: 246 seconds]
Yoric has quit [Ping timeout: 246 seconds]
Yoric has joined #ocaml
wmeyer` has joined #ocaml
wmeyer has quit [Ping timeout: 260 seconds]
chambart has joined #ocaml
<invariant>
How many lines of correct OCaml code do you write on a good day?
<troydm>
2
<troydm>
the second is function body
<orbitz>
what does 'correct' mean?
<lenstr>
:D
<invariant>
orbitz, that it does what you want and you don't need to get back to fix it.
<invariant>
I also count equivalency with your Coq models to be correct.
<orbitz>
i don't have coq models. I don't know how many lines of ocaml i write per day, I tend to think a lot and writ elittle since ocaml doens't take much to express things
<invariant>
I spend most time with unrelated activities like getting tools to work or figuring out what parameter goes where.
<invariant>
The programming part is trivial.
<invariant>
Syntax extensions likely also play very badly with editors/IDEs.
<invariant>
In Racket this has been solved, AFAIK.
<invariant>
If you write a syntax extension, you get free Racket IDE modifications.
<invariant>
Smalltalk doesn't have syntax extensions because they didn't know how to handle the IDE problem.
<orbitz>
invariant: getting spun up in Ocaml can be slow but that stuff doesn't change once you learn it so it doens't affect long term lines-of-ocaml-per-day
<orbitz>
I don't use syntax extensiosn much
<invariant>
A syntax extension which would eliminate let completely at the toplevel, now that would be something.
<orbitz>
I don't spend much time in the repl writing code
<invariant>
orbitz, that's not what I mean by top-level.
<orbitz>
right
<invariant>
orbitz, but that's what it means in the OCaml world.
<invariant>
orbitz, sorry about that.
<orbitz>
i'm not sure how important it is to removelet at the toplevel
<orbitz>
it doesn't get in my way at least
<invariant>
orbitz, have you also written Haskell?
<orbitz>
a little
<invariant>
In Haskell you can just say x= 3 instead of let x = 3. The let is a little tiny barrier for introducing an additional function.
<orbitz>
i know, I just don't see 3 characters as a particualrly big stumbling block in my experience
<orbitz>
and a space
<flux>
invariant, the ocaml model of files is the same as if you wrote the file into the interactive toplevel, not so with haskell. in haskell it doesn't work to do a = 4 in the interactive toplevel.
<invariant>
flux, I know that most Haskell toplevels are completely broken.
<invariant>
flux, or rather for the newbies.
<flux>
invariant, to eliminate ambiguousness (without lets) you would probably need to introduce some other separator
<invariant>
I think it makes that community look really stupid, because supposedly Haskell is good for writing language tools.
<invariant>
But here they are without a working interpreter.
<flux>
I mean, this currently legal ocaml: let a x = b x let c = a b -- barring inexisting bindings
<flux>
a x = b x c = a b would be very difficult to parse
<orbitz>
invariant: if you're responding to difficulty in getting spun up in ocaml, it's ok it just take a few days of putting effort in and you're done
<orbitz>
I think there is an eclipse plugin too if you want full IDE
<invariant>
I have used it a bit and the only negative thing I can say about it is that it lacks some commands and arbitrary syntax support.
<invariant>
orbitz, the eclipse plugin has a lot of bugs.
<orbitz>
k
<invariant>
I think the only problem is that it doesn't use camlpsomething for its allowed syntax.
<orbitz>
what do you need syntax extensiosn for?
<invariant>
As a result my (lwt x = foo in bar) didn't work correctly.
<invariant>
I don't really need it, but I thought it looked nicer than >>=.
<orbitz>
I modified tuareg mode at some point to support lwt syntax extensiosn, but then I stopped using syntax extensions so idon't know what happened to it
<orbitz>
I prefer >>= now
<invariant>
I think without do notation, monads in Haskell would never have become main stream.
<orbitz>
maybe
<pippijn>
I like the do notation
<invariant>
The mdo notation was also pretty cool.
<orbitz>
There is pa_monad but i've never actually found it that useful, >>= has always been easy enough
<invariant>
Now they did something to it to have different semantics.
<pippijn>
I don't like pa_monad
<pippijn>
I use it, but very very rarely
<flux>
I prefer the do-notation as well. it's nice when you have code that uses >>= a lot.
<flux>
but if it's a few functions here and there, I don't bother with an extension
<pippijn>
I use it for the option monad in one or two places
<orbitz>
for me >>= justmove the binding name to the end of the line
<pippijn>
>>= feels more scopy
<orbitz>
screw this monad stuff, what ocaml really needs is linear types
<invariant>
I also think it could use bignums by default.
<orbitz>
Nah, the .() syntax is fine there
<invariant>
When was the last time you wrote a program that bignums were too slow?
<invariant>
orbitz, .() is for indexing, no?
<orbitz>
Module.(expr)
<pippijn>
Module.()
<invariant>
orbitz, I am talking about (Int 10000000000000000000)
<orbitz>
invariant: Remember, in general ocaml users are more interested in explicitness, so doing something like bignum by default woudl be frowend upon
<invariant>
I suppose it does propagate.
<orbitz>
also, how woudl you do it/
<invariant>
Or well, does it?
<orbitz>
(+) is fir ints
<orbitz>
(+.) is for floats
<invariant>
let f x = x - y f (Int 100) (Int 100), doesn't work, does it?
<orbitz>
(-) has teh type int -> int -> int
<invariant>
orbitz, I think anonymous type-classes are a good way to go.
<invariant>
orbitz, perhaps I should just put everything in a big functor.
<invariant>
In OCaml that should be about the same.
<orbitz>
That sounds like a bad idea
eikke has joined #ocaml
<invariant>
orbitz, which one? I have so many bad ideas.
<orbitz>
invariant: I can just do Bigint.(of_int 100 - of_int 100) though
<orbitz>
invariant: big functor
<invariant>
orbitz, I mean one in which I can have some module and pass it '+', '-', etc.
<invariant>
Most likely that's also how you understood it.
<orbitz>
I'm not sure what problem that is solving, I suspect not much of one.
<invariant>
I suppose you are right that it's not often the case that one uses the same code with bignums and without.
<flux>
linear typing would be really nice and would completely solve the potential for leaking resources in ocaml
<flux>
at some cost, I suppose
<flux>
(or not the leaking, but that resources can linger around before gc cleans them)
<Anarchos>
invariant what is linear ocaml ? Lambda Calculus extracted from linear logic ?
<invariant>
Actually it describes Limel.
<invariant>
Linear logic is a simple application of modal logic.
<invariant>
In many ways it's an obvious way to program, save for convenience.
<invariant>
Still, that convenience is going to cost your GC time, because you don't need a GC anymore in a linear language.
<orbitz>
I'm not even that concerned about GC cost, that's just an optimziaiton
<orbitz>
I care more about proepr resource management
<flux>
it would make it more robust to write bindings for libraries that require reference counting (qt..)
fab_ has joined #ocaml
<orbitz>
yep
<ousado>
avsm works on linearML or something
<orbitz>
yeah
<flux>
not to mention the small plus of making an actually safe with_file-function (one that cannot leak the fd that's being used)
<ousado>
but linear types are not exactly trivial to work with
<orbitz>
I think being able to specify some things are liner is valuable, LinearML has everything linear
<ousado>
ATS offers both
<flux>
hmm, seems pretty simple to me? but I haven't actualy tried. but I think the biggest thing is that it will reflect to very many features in a language.