JacobEdelman has quit [Quit: Connection closed for inactivity]
<mahem1>
Ug, the hardest thing about programming is naming things...
<mahem1>
I guess is perfectly fine to name a variable "distancesss" for an int list list list?
<teknozulu_>
What do I have to do to be able to compile code that has statements like "type t = M.t with blah"
<Drup>
teknozulu_: that's never correct, context ?
<teknozulu_>
Used a bunch by Jane Street in core and their other libs, its some sort of a syntax extension
<Drup>
ah, this with
jonludlam has quit [Ping timeout: 264 seconds]
<Drup>
right
<Drup>
compile with corebuild, it should work directly
<Drup>
(I guess you are reading RWO ?)
pyon has joined #ocaml
<teknozulu_>
just found that chapter, lets see how this goes
<teknozulu_>
yep corebuild takes care of it, thanks
<Algebr>
I have a lwt based program that is responsible for some networking stuff. What weird is that when there are broken pipes, like ssh in the shell that are working on top of the lwt based program, the lwt program exists with no exceptions or warnings. just exits
types has joined #ocaml
<types>
are there some real world open source examples for lwt thread local storage?
struk|desk is now known as struk|desk|away
madroach has quit [Ping timeout: 246 seconds]
madroach has joined #ocaml
<def`>
Algebr: SIGPIPE
<def`>
you should manually ignore it
<def`>
Sys.(signal sigpipe Sig_ignore)
wolfcore has quit [Read error: Connection reset by peer]
<Algebr>
ah, lame, didn't think of that, thanks!
wolfcore has joined #ocaml
wolfcore is now known as Guest1487
types has quit [Ping timeout: 255 seconds]
manizzle has quit [Ping timeout: 260 seconds]
cody` has quit [Quit: Connection closed for inactivity]
struk|desk|away is now known as struk|desk
FreeBirdLjj has joined #ocaml
palomer has quit [Quit: palomer]
contempt has quit [Disconnected by services]
contempt has joined #ocaml
lobo has quit [Quit: zleep]
BitPuffin|osx has quit [Ping timeout: 245 seconds]
mac10688 has joined #ocaml
<teknozulu_>
Ugh... Can you not pass a module made by a functor to another functor? Or am I just screwing something up
<pierpa>
btw, the html formatting problem I reported has been fixed the same evening by gasche :)
psy_ has quit [Ping timeout: 240 seconds]
badon has joined #ocaml
FreeBird_ has joined #ocaml
struktured has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 255 seconds]
struk|desk is now known as struk|desk|away
Korhonen has quit [Ping timeout: 240 seconds]
Korhonen has joined #ocaml
struk|desk|away is now known as struk|desk
pierpa has quit [Ping timeout: 260 seconds]
<teknozulu_>
I'm getting an unbound module type Worker_impls on line 27 of http://paste.debian.net/354796 , whats the catch
palomer has joined #ocaml
struk|desk is now known as struk|desk|away
johnelse has quit [Ping timeout: 240 seconds]
NingaLeaf has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
FreeBird_ has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #ocaml
johnelse has joined #ocaml
johnelse is now known as Guest36988
NingaLeaf has joined #ocaml
danilo04 has joined #ocaml
mac10688 has quit [Ping timeout: 240 seconds]
struk|desk|away is now known as struk|desk
shinnya has joined #ocaml
FreeBird_ has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 245 seconds]
Bahman has joined #ocaml
Korhoset has joined #ocaml
Korhonen has quit [Read error: Connection reset by peer]
ygrek has quit [Ping timeout: 264 seconds]
NingaLeaf has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
keep_learning has joined #ocaml
JacobEdelman has joined #ocaml
Bahman has quit [Remote host closed the connection]
Bahman has joined #ocaml
Intensity has quit [Remote host closed the connection]
Intensity has joined #ocaml
malc_ has joined #ocaml
darkf has joined #ocaml
struk|desk is now known as struk|desk|away
kushal has joined #ocaml
sbrouf has joined #ocaml
Algebr` has joined #ocaml
Intensity has quit [Remote host closed the connection]
malc_ has quit [Quit: leaving]
lyxia has quit [Read error: Connection reset by peer]
Sorella has quit [Quit: Connection closed for inactivity]
keep_learning has quit [Quit: This computer has gone to sleep]
Intensity has joined #ocaml
jrslepak has quit [Ping timeout: 245 seconds]
<pyon>
Is there any way to include type inequality constraints in module types?
<pyon>
I want to say "these two types are abstract, but internally they're guaranteed to be different".
<pyon>
It's a bit of a kludge, but I need it to make GADTs work, without effectively using a Haskell-style newtype wrapper.
badon has quit [Ping timeout: 240 seconds]
Intensity has quit [Remote host closed the connection]
Intensity has joined #ocaml
badon has joined #ocaml
kushal has quit [Quit: Leaving]
kdas_ has joined #ocaml
kdas_ has quit [Quit: Leaving]
kushal has joined #ocaml
Haudegen has quit [Ping timeout: 265 seconds]
keep_learning has joined #ocaml
JacobEdelman has quit [Quit: Connection closed for inactivity]
jonludlam has joined #ocaml
teknozulu_ has quit [Ping timeout: 260 seconds]
ygrek has joined #ocaml
sbrouf has quit [Ping timeout: 264 seconds]
Haudegen has joined #ocaml
MercurialAlchemi has joined #ocaml
jonludlam has quit [Ping timeout: 240 seconds]
jludlam_ has joined #ocaml
Simn has joined #ocaml
keep_learning has quit [Quit: This computer has gone to sleep]
keep_learning has joined #ocaml
ygrek has quit [Ping timeout: 240 seconds]
<MercurialAlchemi>
I'll never get these US culture wars
<MercurialAlchemi>
so now some guy is trying to fork the already-small F# community because he got it into his head that the adoption of a code of conduct was the dawn of social justice oppression or something like that
<flux>
f# drama?! where?!
<flux>
oh, found the link via reddit ;-)
<MercurialAlchemi>
I mean, the f# community makes the ocaml community looks big
<MercurialAlchemi>
next, he'll probably introduce a parallel stdlib, not tainted by social justice code
yawnt has quit [Changing host]
yawnt has joined #ocaml
<adrien>
"community", not something you see a lot when it comes to MS and Windows
theblatt1 has joined #ocaml
theblatte has quit [Ping timeout: 264 seconds]
<MercurialAlchemi>
eh, you have a big community of believers
<MercurialAlchemi>
C# programmers pray in the direction of Redmond 5 times a day, you know
<adrien>
but that's not a real community :)
<adrien>
more a sect :P
Bahman_ has joined #ocaml
Bahman has quit [Read error: Connection reset by peer]
palomer has quit [Quit: palomer]
<MercurialAlchemi>
it's a bit sad people don't have anything better to do with their time
badon_ has joined #ocaml
badon has quit [Disconnected by services]
badon_ is now known as badon
Algebr` has quit [Ping timeout: 260 seconds]
Kakadu has joined #ocaml
Bahman_ has quit [Remote host closed the connection]
Bahman has joined #ocaml
_andre has joined #ocaml
|jbrown| has joined #ocaml
mort___ has joined #ocaml
struktured has quit [Ping timeout: 240 seconds]
Anarchos has joined #ocaml
struktured has joined #ocaml
sh0t has joined #ocaml
Sorella has joined #ocaml
Guest1487 has quit [Changing host]
Guest1487 has joined #ocaml
Guest1487 is now known as wolfcore
jpdeplaix has quit [Quit: WeeChat 0.4.0]
jpdeplaix has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
<MercurialAlchemi>
anyone has experience with atdgen?
Bahman has quit [Read error: Connection reset by peer]
Bahman has joined #ocaml
<edwin>
MercurialAlchemi: I've used it for one project
<edwin>
for json
<MercurialAlchemi>
I'm trying to turn a JSON response like { ok: bool; error: string } into `Ok | `Error of string
<MercurialAlchemi>
going from barbarism to civilization, in other words
<MercurialAlchemi>
but I'm not sure of the recommended way to do that with atdgen is (if it's even possible)
<MercurialAlchemi>
currently mucking around with wrap/unwrap
i0_gb has joined #ocaml
<i0_gb>
hey
<i0_gb>
so i'm trying to write a generic container, but the items inside have to be OrderedType
Bahman has quit [Quit: Ave atque vale]
<i0_gb>
how do i express something like "type 'a [> OrderedType] m"?
<edwin>
hmm I used objects, but I always turned them into records
<MercurialAlchemi>
i0_gb: you mean they need to be of type SomeOrderedTypeImplementation.t?
<MercurialAlchemi>
well, that's what functors are for
<edwin>
I did something like this with atdgen (there is a list with just one element and I wrap/unwrap the list): type block = (string * blocktargets) list <json repr="object"> wrap <ocaml t="string * blocktargets" wrap="List.hd" unwrap="fun v -> [v]">
<edwin>
although wrap/unwrap is mostly useful for things like this: type ip = string wrap <ocaml t="Ipaddr.t" wrap="Ipaddr.of_string_exn" unwrap="Ipaddr.to_string">
<i0_gb>
MercurialAlchemi: well the same object needs to admit to different generic types, I can't just pass a specific OrderedType into a functor
<i0_gb>
specifically i'm trying to create a (subtype of) Monad that only accepts OrderedType
<i0_gb>
so the signature would be something like "val bind : 'a [> O] m -> ('a -> 'b [>O] m) -> 'b m" or something like that
<i0_gb>
i can't figure out the ocaml syntax to express that, but i'm pretty sure it's possible in haskell/scala
<i0_gb>
for example in haskell i would just write "bind :: (Ord a, Ord b) => m a -> (a -> m b) -> m b"
<i0_gb>
even the trick in https://rosettacode.org/wiki/Constrained_genericity#OCaml doesn't help because the resulting module (after you pass it into the functor) has the pseudo-"generic" type already instantiated to one specific type
<i0_gb>
but for what i want, the function really needs to be generic over all possible types (that are a subtype of Ord)
<MercurialAlchemi>
well, you don't have implicits in ocaml (yet)
<i0_gb>
what do you mean by implicit?
<MercurialAlchemi>
same reason you don't have a generic to_string in ocaml
<gasche>
(I remember your past example where the two types used as GADT parameters had no concrete definition, so no reason *not* to just give them a different constructor each)
<edwin>
apparently you need to define the record itself, and then another type that wraps/unwraps the original
<MercurialAlchemi>
edwin: doesn't seem to compile
<edwin>
atdgen 1.7.1 here
<MercurialAlchemi>
hmm
<MercurialAlchemi>
ok, it works
<MercurialAlchemi>
edwin: thanks a lot
<MercurialAlchemi>
and that's definitely a lot nicer than the original json
<edwin>
if you have lots of these conversions maybe put them in a .ml file
<edwin>
there is also a way to specify a module
<edwin>
instead of wrap/unwrap functions individually
<MercurialAlchemi>
yeah, I saw that, but when I tried, it complained of circular dependencies (I need the _t module in my module to reference the fields of the record)
<MercurialAlchemi>
also, I don't like to spread this stuff in 50 different places
Algebr` has joined #ocaml
Algebr` has quit [Remote host closed the connection]
domsj has joined #ocaml
ggole has joined #ocaml
octachron has joined #ocaml
kushal has quit [Ping timeout: 246 seconds]
Anarchos has joined #ocaml
tane has quit [Ping timeout: 240 seconds]
tane has joined #ocaml
NingaLeaf has joined #ocaml
Haudegen has quit [Ping timeout: 265 seconds]
d0nn1e has quit [Ping timeout: 265 seconds]
d0nn1e has joined #ocaml
tane has quit [Remote host closed the connection]
Haudegen has joined #ocaml
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
lobo has joined #ocaml
malc_ has joined #ocaml
zpe has quit [Ping timeout: 250 seconds]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
tane has joined #ocaml
throwaway-123 has quit [Quit: Leaving.]
malc_ has quit [Quit: leaving]
pierpa has joined #ocaml
ollehar has joined #ocaml
_andre has quit [Ping timeout: 272 seconds]
_andre has joined #ocaml
kushal has joined #ocaml
JacobEdelman has joined #ocaml
Sorella has quit [Quit: Connection closed for inactivity]
ollehar has quit [Ping timeout: 245 seconds]
FreeBird_ has quit [Remote host closed the connection]
pyon has quit [Quit: Loops are hard, let's GOTO shopping!]
keep_learning has quit [Quit: This computer has gone to sleep]
<hcarty>
MercurialAlchemi: You could use ppx_deriving_yojson for your JSON conversion needs
mort___ has quit [Quit: Leaving.]
<MercurialAlchemi>
hcarty: I don't think it does very well when the ocaml structure is very different from the original
<MercurialAlchemi>
does it?
Kariem has joined #ocaml
mort___ has joined #ocaml
palomer has joined #ocaml
<hcarty>
It's comparable to atdgen in my experience, but I suspect atdgen covers more edge cases since it's been around longer and been fairly heavily used
Kariem has quit [Remote host closed the connection]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
<hcarty>
You can also perform the conversion in multiple steps - a more or less direct/vanilla conversion to a temporary value, then perform the conversion to your final type in another step.
<MercurialAlchemi>
hm
<MercurialAlchemi>
I'll have a look into it
<MercurialAlchemi>
I'm terribly happy about "write ocaml in strings to do advanced conversions" part of atdgen
_andre has quit [Quit: leaving]
palomer has quit [Quit: palomer]
palomer has joined #ocaml
lobo has joined #ocaml
mort___ has left #ocaml [#ocaml]
palomer has quit [Quit: palomer]
<mrvn>
Kakadu: just a dummy value because I don't pass the real argc/argv from ocaml yet
dr_toboggan has quit [Remote host closed the connection]
<mrvn>
How do I tell _oasis that I want to use c++ sources?
<mrvn>
the unresolved symbol error seems to be a ctypes problem
kushal has quit [Ping timeout: 264 seconds]
lwzukw has joined #ocaml
lwzukw has quit [Client Quit]
lwzukw has joined #ocaml
kushal has joined #ocaml
Haudegen has quit [Ping timeout: 276 seconds]
devmau has joined #ocaml
<edwin>
interesting Lwt.on_termination seems to execute the [f] in reverse order (last added on_termination first)
<edwin>
I probably shouldn't rely on the order though
<mrvn>
I think you can
ygrek has joined #ocaml
<Algebr>
mrvn: just CSources
<mrvn>
Algebr: that ignores anything ending in .cc
<Algebr>
then in CCopt tell the gcc compiler with -X cpp
<Algebr>
or whatever it is the tell the compiler to read the file as c++ code
<Algebr>
maybe that and write your code as .c. I did similar thing for using .m for objective-c code
<mrvn>
then all c sources are compiled as c++ too (which is OK for me)
<edwin>
the main program will also need to be linked with g++ or at least -lstdc++ (but I think g++ is needed for something initialization related)
<mrvn>
and cclibs needs -lstdc++
<mrvn>
NativeOpt: -cc g++
<mrvn>
ByteOpt: -cc g++
<mrvn>
and after all that my code segfaults in strlen()
<edwin>
who calls strlen?
<mrvn>
QCoreApplication::arguments()
<edwin>
hmm a NULL argv may not be good
<edwin>
I think you need at least the main executable's name there
<edwin>
and then a NULL
<edwin>
what Kakadu said
mau3 has joined #ocaml
<mrvn>
tried that, same error
<edwin>
and argc=1?
<mrvn>
yep
devmau has quit [Quit: devmau]
kushal has quit [Ping timeout: 256 seconds]
Denommus has quit [Quit: yes]
<mrvn>
now this is strange. I've updated libc6 to install libc6-dev and now it works.
Haudegen has joined #ocaml
<mrvn>
Hmm, nothing to do with libc6 update. The dependencies for the stubs are wrong. When I change QApplication_stubs.c then it doesn't get rebuild
<mrvn>
and then it segfaults again. make clean; make test; and it works again
teknozulu has joined #ocaml
<mrvn>
"Warning: The data referred to by argc and argv must stay valid for the entire lifetime of the QCoreApplication object. In addition, argc must be greater than zero and argv must contain at least one valid character string."
<mrvn>
That kind of sucks for ocaml. Means I have to strdup the args and free them when the C++ object gets destroyed at the end, right?
<edwin>
you can use valgrind to find use-after-free errors or the like
<mrvn>
edwin: the ocaml heap won't be freed. just contain other data
<def`>
mrvn: you should just ignore
<def`>
this happens once in the lifetime of the program
<edwin>
can you malloc some stuff?
<mrvn>
def`: no. it gets accessed when you open windows.
<edwin>
or use a global argv
<def`>
mrvn: yes you can just strdup and never free
<mrvn>
edwin: I want to use ocamls argv.
Kakadu has joined #ocaml
jludlam_ has quit [Remote host closed the connection]
<edwin>
make a copy
<edwin>
(in C)
kushal has joined #ocaml
larhat1 has joined #ocaml
BitPuffin|osx has joined #ocaml
<mrvn>
does caml_copy_nativeint create a block pointing to a native int outside the heap?
paradoja has quit [Ping timeout: 240 seconds]
<edwin>
I think anything that returns a value is movable by ocaml gc
octachron has joined #ocaml
tane has quit [Excess Flood]
tane has joined #ocaml
<def`>
yes, movable by gc
<mrvn>
actually no. It crates a block with Custom_tag containing the int
<mrvn>
(which then is movable)
<mrvn>
one less indirection than I hoped
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
mort___ has joined #ocaml
Sorella has joined #ocaml
danilo04 has quit [Ping timeout: 245 seconds]
tane has quit [Excess Flood]
tane has joined #ocaml
NingaLeaf has joined #ocaml
kushal has quit [Quit: Leaving]
NingaLeaf has quit [Ping timeout: 250 seconds]
pyon is now known as semigrou-pyon
sz0 has quit [Quit: Bye.]
semigrou-pyon has quit [Quit: fix config]
tane has quit [Excess Flood]
darkf has quit [Quit: Leaving]
sh0t has quit [Ping timeout: 245 seconds]
tane has joined #ocaml
semigrou-pyon has joined #ocaml
sbrouf has quit [Ping timeout: 276 seconds]
i0_gb has quit [Ping timeout: 252 seconds]
NingaLeaf has joined #ocaml
lwzukw has quit [Quit: leaving]
ely-se has joined #ocaml
sbrouf has joined #ocaml
danilo04 has joined #ocaml
Haudegen has quit [Ping timeout: 265 seconds]
octopus has quit [Quit: WeeChat 0.3.8]
octopus has joined #ocaml
teknozulu has quit [Ping timeout: 276 seconds]
palomer has joined #ocaml
teknozulu has joined #ocaml
Haudegen has joined #ocaml
keep_learning has quit [Quit: This computer has gone to sleep]
teknozulu has quit [Ping timeout: 240 seconds]
* mrvn
adds a "let () = at_exit Gc.full_major" to his module
tane has quit [Ping timeout: 240 seconds]
tane has joined #ocaml
wolfcore has quit [Ping timeout: 240 seconds]
zv has quit [Ping timeout: 240 seconds]
mac10688 has joined #ocaml
wolfcore has joined #ocaml
wolfcore is now known as Guest30380
ollehar has joined #ocaml
teknozulu has joined #ocaml
cody` has joined #ocaml
zv has joined #ocaml
<ollehar>
merry christmas!
contempt has quit [Ping timeout: 256 seconds]
contempt has joined #ocaml
struk|desk is now known as struk|desk|away
Haudegen has quit [Ping timeout: 264 seconds]
struk|desk|away is now known as struk|desk
hcarty has quit [Quit: WeeChat 1.3]
tane has quit [Quit: Verlassend]
Haudegen has joined #ocaml
Korhonen has quit [Read error: Connection reset by peer]
MercurialAlchemi has quit [Ping timeout: 256 seconds]
zpe has quit [Remote host closed the connection]
Korhonen has joined #ocaml
zpe has joined #ocaml
Haudegen has quit [Ping timeout: 245 seconds]
Korhonen has quit [Read error: Connection reset by peer]
Korhoset has joined #ocaml
zpe has quit [Ping timeout: 250 seconds]
ely-se has quit [Quit: Leaving...]
struk|desk is now known as struk|desk|away
Haudegen has joined #ocaml
<pierpa>
what is the name of the function corresponding to :: ?
<Algebr>
cons?
<pierpa>
Error: Unbound value cons
<Algebr>
I meant conceptually
<octachron>
List.cons
<pierpa>
conceptually yes, cons, but in practice?
<pierpa>
List.cons does not exist either
<pierpa>
must I write fun x y -> x::y ?
<octachron>
sorry, only for ocaml >=4.03
<pierpa>
ah! ty
<octachron>
pierpa, since 4.03 is not released, writing your own cons is the way to go
<mrvn>
too bad :: isn't an operator
struk|desk|away is now known as struk|desk
<pierpa>
oki. ty. Yes, I just found out :: is not an operator
manizzle has quit [Ping timeout: 256 seconds]
<pierpa>
a bit unexpected to not find cons somewhere :)
Korhonen has joined #ocaml
Korhoset has quit [Read error: Connection reset by peer]
struk|desk has quit [Ping timeout: 265 seconds]
Korhoset has joined #ocaml
Korhonen has quit [Read error: Connection reset by peer]
octachron has quit [Ping timeout: 245 seconds]
manizzle has joined #ocaml
Korhoset has quit [Read error: Connection reset by peer]
Korhonen has joined #ocaml
octachron has joined #ocaml
<fds>
gasche: I submitted the pull request on the manual. I hope I haven't noobed anything up. :-)
lobo has quit [Quit: leaving]
<octachron>
fds, it looks fine and it build for me. Just by curiosity, I imagine that finding the right file was what took most of your time?
<fds>
octachron: To find the file I used grep -nr and hoped for the best. Obviously there was nothing technically difficult, but it's the first time I've actually used git collaboratively, so I'm a little wary of making a fool of myself.
<fds>
Heh
Kakadu has quit [Remote host closed the connection]