ChanServ changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.02.1 announcement at http://ocaml.org/releases/4.02.html | Public channel logs at http://irclog.whitequark.org/ocaml
c355E3B has quit [Quit: Leaving]
javamonn has joined #ocaml
<Algebr> nvm, figured it out
seanmcl has joined #ocaml
AltGr has joined #ocaml
javamonn has quit [Remote host closed the connection]
s1n4 has joined #ocaml
ollehar has joined #ocaml
ollehar1 has quit [Read error: Connection reset by peer]
javamonn has joined #ocaml
<Algebr> Drup: Is there a helper from eliom to open files? I'm doing Lwt_io.open_file and while it works, I have no idea what is the path I should be basing this off of
<Drup> not that I know of
<Drup> it's not really eliom's job, it could be in ocsigenserver maybe
<Algebr> So what's the canonical way to send the contents of a file as a string to the client ?
<Algebr> nvm, found Eliom_registartion.File
javamonn has quit [Remote host closed the connection]
javamonn has joined #ocaml
jonludlam has quit [Ping timeout: 255 seconds]
tianon has quit [Read error: Connection reset by peer]
Algebr has quit [Remote host closed the connection]
tianon has joined #ocaml
nullcat has joined #ocaml
jwatzman|work has quit [Quit: jwatzman|work]
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 252 seconds]
AlexRussia has quit [Ping timeout: 250 seconds]
swgillespie has joined #ocaml
oriba has quit [Quit: oriba]
javamonn has quit [Remote host closed the connection]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
Denommus` is now known as Denommus
badon has joined #ocaml
seanmcl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
javamonn has joined #ocaml
boogie has quit [Remote host closed the connection]
AlexRussia has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
ygrek has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
Denommus has quit [Quit: going home]
seanmcl has joined #ocaml
badkins_ has quit []
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
swgillespie has joined #ocaml
shinnya has quit [Ping timeout: 256 seconds]
seanmcl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
mcclurmc has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
tianon has joined #ocaml
swgillespie has joined #ocaml
AlexRussia has quit [Ping timeout: 250 seconds]
s1n4 has quit [Ping timeout: 264 seconds]
darkf has joined #ocaml
s1n4 has joined #ocaml
boogie has joined #ocaml
mcc has joined #ocaml
boogie has quit [Remote host closed the connection]
<mcc> Hey so, I have this brief snippet of code: https://gist.github.com/mcclure/4a48edcb8db26f07d982 and when I dereference a reference with ! it says "The value rest is not an instance variable"
<mcc> What does this mean?
<pippijn> mcc: := instead of <-
<mcc> oh >_>
MrScout has quit [Remote host closed the connection]
<mcc> thanks!!
<pippijn> alternatively, rest.contents <- more
<pippijn> := is syntax sugar for .contents <-
<mcc> oh, that's interesting
<Drup> the definition of ref and := is in the stdlib, it's not builtin
<pippijn> actually := is not *really* syntax sugar
<pippijn> it's more like a function that takes 'a ref and returns unit
<Drup> it's just an operator :p
<pippijn> val (:=) : 'a ref -> 'a -> unit
<pippijn> yes
<pippijn> Drup: why can't I make an :==?
<mcc> :======
<Drup> syntax issue.
<Drup> :== is simply not authorized syntax for operators
<Drup> := is the only syntax allowed for operators that starts with a :
tianon has quit [Read error: Connection reset by peer]
<Drup> mcc: it was some time seem you hang around, how is emily ? :p
tianon has joined #ocaml
boogie has joined #ocaml
AlexRussia has joined #ocaml
<mcc> Drup: I had to take a bit of a break (I had a booth at the Game Developer Conference!) but I think I am very close to 0.2!
<mcc> It will be about the same as 0.1 but have package loading.
<mcc> I might go directly for attempting C integration next. I am tired of not being able to do anything with the language :D
<mcc> Right now what I am doing is reimplementing Arg. >_>
<mcc> Because... well, because Arg.
<Drup> and you refuse to use cmdliner because you have dollar-operators PTSD ? :p
<mcc> YES!
<mcc> Well, because applicatives. I like how my args are specified now? :P
<mcc> I just… I have a bigger issue with the implementation than the interface.
<Drup> ?
<mcc> I mean, Arg is weird. It cannot handle "=" in arguments. It formats its usage output oddly.
<mcc> But other than that it is what I want.
<Drup> Arg it's not weird, it's old and broken.
<pippijn> broken?
<Drup> it also doesn't respect POSIX norms about long and short options
boogie has quit [Remote host closed the connection]
<Drup> it is positional based
<mcc> what do you mean, about short and long options?
<Drup> and it misses quite a good amount of goodies you expect from a libraries for cli arguments
<mcc> Well, I definitely like that cmdliner would generate my manpage :P
<Drup> mcc one "-" for one letter arguments, two "--" for multiletters argurment
<Drup> and short -aou for -a -o -u when each flag doesn't take arguments
<mcc> ah, yeah
<mcc> for me it just lets me specify however many -s I want. You mean that it doesn't enforce such a rule?
<Drup> mcc: there are other goodies too: you can compose them easily. It does the shorter prefix disambiguation for you, it does intermediate commands, so on ...
<Drup> mcc: yes
kido1412 has joined #ocaml
<Drup> anyway, if you think reimplementing yet another cli arg parsing lib is worth your time ... ;)
<kido1412> Does anyboyd know the symbol `>::` mean? I read this symbol in https://github.com/exercism/xocaml/blob/master/bob/test.ml
<Drup> it's a ounit operator, to define a test iirc
<kido1412> Thank you, @Drup, you help me a lot
javamonn has quit [Remote host closed the connection]
<mcc> drup: it's going surprisingly quick... hey, can cmdliner do env vars?
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
<Drup> I don't think it has facilities for it, no
javamonn has joined #ocaml
<mcc> 'k
sdothum has quit [Quit: ZNC - 1.6.0 - http://znc.in]
ptc has joined #ocaml
javamonn has quit [Remote host closed the connection]
javamonn has joined #ocaml
javamonn has quit [Remote host closed the connection]
ptc has quit [Ping timeout: 244 seconds]
ptc has joined #ocaml
psy_ has quit [Ping timeout: 250 seconds]
ptc has quit [Read error: Connection reset by peer]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
kdef has quit [Quit: Leaving]
ericwa has quit [Remote host closed the connection]
javamonn has joined #ocaml
javamonn has quit [Ping timeout: 248 seconds]
javamonn has joined #ocaml
myyst has joined #ocaml
myst has quit [Ping timeout: 265 seconds]
boogie has joined #ocaml
Algebr has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
<Algebr> Drup: around ?
mcclurmc has quit [Remote host closed the connection]
kdef has joined #ocaml
javamonn has quit [Remote host closed the connection]
Algebr has quit [Ping timeout: 256 seconds]
MrScout has joined #ocaml
badon has quit [Disconnected by services]
badon_ has joined #ocaml
badon_ is now known as badon
struk|desk has quit [Ping timeout: 252 seconds]
struktured has quit [Ping timeout: 256 seconds]
struk|desk has joined #ocaml
struktured has joined #ocaml
kido1412 has quit [Quit: Page closed]
MrScout has quit [Read error: Connection reset by peer]
MrScout has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
ygrek has quit [Remote host closed the connection]
ygrek has joined #ocaml
boogie has quit [Remote host closed the connection]
avsm has joined #ocaml
struktured has quit [Ping timeout: 252 seconds]
tianon has quit [Quit: switching hosts!]
tianon has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
MercurialAlchemi has joined #ocaml
avsm has quit [Quit: Leaving.]
kushal has joined #ocaml
teiresia1 has joined #ocaml
psy_ has joined #ocaml
teiresia1 has quit [Changing host]
teiresia1 has joined #ocaml
teiresias has quit [Ping timeout: 252 seconds]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
siddharthv_away is now known as siddharthv
AlexRussia has quit [Ping timeout: 272 seconds]
ygrek has quit [Ping timeout: 264 seconds]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
thomasga has joined #ocaml
AlexRussia has joined #ocaml
kushal has quit [Ping timeout: 264 seconds]
kdef has quit [Quit: Leaving]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
kushal has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
ygrek has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
matason has joined #ocaml
tianon has joined #ocaml
matason has quit [Ping timeout: 256 seconds]
djellemah has joined #ocaml
Simn has joined #ocaml
matason has joined #ocaml
mcc has quit [Quit: This computer has gone to sleep]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
freling has joined #ocaml
dsheets has joined #ocaml
testcocoon has quit [Quit: Coyote finally caught me]
avsm has joined #ocaml
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
avsm has quit [Quit: Leaving.]
testcocoon has joined #ocaml
oscar_toro has quit [Ping timeout: 265 seconds]
Haudegen has quit [Ping timeout: 264 seconds]
tane has joined #ocaml
mort___ has joined #ocaml
AlexRussia has quit [Ping timeout: 255 seconds]
florian_ has joined #ocaml
Haudegen has joined #ocaml
Algebr has joined #ocaml
Algebr has quit [Ping timeout: 245 seconds]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
larhat has joined #ocaml
<florian_> i need to set filter on a can socket, so i want to pass a list of a record {can_id:int; can_mask:int} to the C code. How can i do that?
AlexRussia has joined #ocaml
<tane> https://github.com/ocamllabs/ocaml-ctypes/wiki/ctypes-tutorial @ florian_ you may find a solution there
<florian_> tane: thanks, but i can not use ctypes for certain reasons
<adrien_znc> even in stubs-generation mode?
octachron has joined #ocaml
<florian_> adrien_znc: yes, i can not use ctypes at all
TheLemonMan has joined #ocaml
mort___ has left #ocaml [#ocaml]
jonludlam has joined #ocaml
peterbb has quit [Ping timeout: 250 seconds]
peterbb has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
larhat has quit [Quit: Leaving.]
SIGILL has quit [Read error: Connection reset by peer]
myyst is now known as myst
SIGILL has joined #ocaml
s1n4 has quit [Ping timeout: 250 seconds]
lordkryss has joined #ocaml
<adrien_znc> florian_: but why?
<florian_> adrien_znc: its a job demand
<Leonidas> such an odd demand
axiles has quit [Quit: Quitte]
<flux> florian_, well, your best bet probably starts here: http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual033.html
ggole has joined #ocaml
<flux> there's also some other non-inria documentation on the subject which I cannot find off-hand..
<flux> it's not going to be complicated, but it's a bit error prone and of course you need to write some C
<flux> and fight with the build system of choice..
testcocoon has quit [Quit: Coyote finally caught me]
<flux> this is maybe the other document I was looking for: http://www.linux-nantes.org/~fmonnier/OCaml/ocaml-wrapping-c.html
milosn has quit [Ping timeout: 252 seconds]
<flux> it's going to be simpler if you can just pass the two numbers to the C code instead of a record
<flux> though only ever-so-slightly ;-)
<florian_> flux: so far i have implemented a c function to set a single filter, but now i need to set multiple filters on a can socket at once so the old way doesnt suffice anymore
<adrien_znc> so, disconnected
<flux> the simplest solution would probably involve using the Bigarray module for passing the data
<adrien_znc> 11:10 < adrien_znc> the thing I don't understand is that ctypes in stubs-generation mode shouldn't impose any constraint
<adrien_znc> 11:10 < adrien_znc> anyway
<adrien_znc> 11:10 < adrien_znc> start with http://www.linux-nantes.org/~fmonnier/OCaml/ocaml-wrapping-c.html if you want to do it by hand
<flux> ..but traversing linked lists isn't going to be difficult either
<flux> florian_, but I don't really have much more help to give you here, unless you have more specific questions
tianon has quit [Read error: Connection reset by peer]
<flux> seems like you're quite far in solving it :)
kakadu has joined #ocaml
tianon has joined #ocaml
<florian_> adrien_znc: its not my decision
<florian_> flux: its fine tuning now :)
AlexRussia has quit [Ping timeout: 256 seconds]
<florian_> is there a way to see the length of a list without traversing it in the C code?
<flux> florian_, I suppose you could call the ocaml function to do it ;-). I doubt it's implemented in C.
testcocoon has joined #ocaml
<mrvn> florian_: a list doesn't store it's length. you have to traverse it
struk|desk has quit [Read error: Connection reset by peer]
struk|desk has joined #ocaml
<florian_> mrvn: i did it the way flux described, passing the list length to the c function
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
govg has quit [Ping timeout: 264 seconds]
<florian_> its working now, thanks guys
govg has joined #ocaml
TheLemonMan has quit [Remote host closed the connection]
<florian_> i am forking a process and want this child process to be terminated in case the parent process dies or gets killed, is that feasible?
avsm has joined #ocaml
<adrien_znc> open a pipe and write to it
<adrien_znc> you'll get sigpipe if the other end dies
<adrien_znc> (you need to read too)
<florian_> adrien_znc: do you have an example somewhere? havent worked with pipes so far
<adrien_znc> Unix.pipe () it gives you two file descriptors, make the write side close-on-exec, fork() and from the parent, close the write side
<adrien_znc> then from the child, regularly write to the pipe
<adrien_znc> from the parent, regularly read from it
AltGr has left #ocaml [#ocaml]
<adrien_znc> you'll probably want to have some non-blocking stuff on them
AltGr has joined #ocaml
AlexRussia has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
govg has quit [Ping timeout: 252 seconds]
govg has joined #ocaml
milosn has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
ghostpl_ has joined #ocaml
milosn has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
teiresia1 is now known as teiresias
govg has quit [Ping timeout: 246 seconds]
govg has joined #ocaml
AltGr has left #ocaml [#ocaml]
freling has quit [Quit: Leaving.]
milosn has joined #ocaml
larhat has joined #ocaml
freling has joined #ocaml
thomasga has quit [Quit: Leaving.]
larhat has quit [Ping timeout: 245 seconds]
larhat has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
sdothum has joined #ocaml
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
lewis1711 has quit [Read error: Connection reset by peer]
milosn has quit [Ping timeout: 256 seconds]
govg has quit [Ping timeout: 252 seconds]
govg has joined #ocaml
dav has joined #ocaml
Guest41125 has quit [Ping timeout: 272 seconds]
ygrek has quit [Ping timeout: 256 seconds]
seanmcl has joined #ocaml
ingsoc has joined #ocaml
milosn has joined #ocaml
govg has quit [Ping timeout: 252 seconds]
govg has joined #ocaml
govg is now known as Guest83620
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
Guest83620 has quit [Ping timeout: 264 seconds]
govg_ has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
govg_ has quit [Ping timeout: 256 seconds]
milosn has joined #ocaml
govg_ has joined #ocaml
_andre has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
avsm has quit [Quit: Leaving.]
milosn has joined #ocaml
Submarine has quit [Remote host closed the connection]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
florian_ has quit [Ping timeout: 252 seconds]
Denommus has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
araujo has joined #ocaml
araujo has joined #ocaml
araujo has quit [Max SendQ exceeded]
araujo has joined #ocaml
araujo has quit [Max SendQ exceeded]
araujo has joined #ocaml
araujo has quit [Quit: Leaving]
Gama11 has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
s1n4 has joined #ocaml
milosn has joined #ocaml
jonludlam has quit [Ping timeout: 264 seconds]
ghostpl_ has quit [Remote host closed the connection]
milosn has quit [Ping timeout: 244 seconds]
jonludlam has joined #ocaml
AlexRussia has quit [Ping timeout: 244 seconds]
thomasga has joined #ocaml
ocp has joined #ocaml
govg_ has quit [Ping timeout: 272 seconds]
govg has joined #ocaml
ghostpl_ has joined #ocaml
govg has quit [Quit: leaving]
govg has joined #ocaml
avsm has joined #ocaml
AlexRussia has joined #ocaml
s1n4 has quit [Quit: leaving]
AlexRussia has quit [Ping timeout: 264 seconds]
mcclurmc has joined #ocaml
thomasga has quit [Quit: Leaving.]
thomasga has joined #ocaml
idegen has joined #ocaml
thomasga has quit [Quit: Leaving.]
siddharthv is now known as siddharthv_away
thomasga has joined #ocaml
milosn has joined #ocaml
kyugyi has joined #ocaml
<kyugyi> .
<kyugyi> did usa covertly supply isis with weapons like they did with al-qaeda to justify creating wars?
<kyugyi> did usa excute the creative mess in the middle east like they said they will, does the creative mess include explosions with uncertain responsibles to create wars?
<kyugyi> plz, send my qs to help limiting usa&israel aggression against others.
<kyugyi> .did usa covertly supply isis with weapons like they did with al-qaeda to justify creating wars?
<kyugyi> did usa excute the creative mess in the middle east like they said they will, does the creative mess include explosions with uncertain responsibles to create wars?
<kyugyi> plz, send my qs to help limiting usa&israel aggression against others.
kyugyi has quit [Excess Flood]
Gama11_ has joined #ocaml
<adrien_znc> commiting IRC suicide by spamming on IRC [X]
Gama11 has quit [Ping timeout: 256 seconds]
dubst3pp4 has joined #ocaml
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
idegen has left #ocaml [#ocaml]
dubst3pp4 has quit [Quit: Ĝis la revido!]
avsm has quit [Quit: Leaving.]
Algebr has joined #ocaml
BitPuffin has joined #ocaml
<Algebr> Drup: if a .js file changes for an ocsigen project, does the whole thing need to be recompiled, that whole install.opt/run.opt?
<Drup> I don't think so.
milosn has quit [Read error: Connection reset by peer]
<Drup> well, re-installed/run, probably yes
<Drup> recompiled, probably not
milosn has joined #ocaml
javamonn has joined #ocaml
struktured has joined #ocaml
slash^ has joined #ocaml
ghostpl_ has quit [Remote host closed the connection]
ghostpl_ has joined #ocaml
mort___ has joined #ocaml
avsm has joined #ocaml
mort___ has quit [Quit: Leaving.]
<djellemah> Hey all. I'm looking for good info on if/when OCaml will have multicore parallelism? Some context: I use Ruby a lot, so I know all about global lock and using fork for CPU-intensive code. TIA
<MercurialAlchemi> djellemah: afaik the best eta is "when it's done"
<Drup> It's being worked on, at least.
mort___ has joined #ocaml
slash^1 has joined #ocaml
araujo has joined #ocaml
martintrojer has quit [Ping timeout: 245 seconds]
slash^ has quit [Ping timeout: 252 seconds]
<flux> djellemah, it's perhaps a bit complicated, but here's a way to try the multicore work: http://kcsrk.info/multicore/opam/ocaml/2015/03/25/opam-switch-to-multicore/
<flux> djellemah, usage: just use normal ocaml threads
<flux> but I imagine there are still many things that are broken, I haven't tried it :-)
<flux> I understand having a GC, having multiple cores and being fast about it is not a simple task.
<def`> It seems to be bytecode only
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
Algebr has quit [Remote host closed the connection]
Denommus` has joined #ocaml
Algebr has joined #ocaml
Denommus has quit [Ping timeout: 256 seconds]
Denommus` is now known as Denommus
<adrien_znc> is the addition of native code support really that difficult once bytecode is handled well?
<Drup> yes
martintrojer has joined #ocaml
<mrvn> how so?
<Drup> because the modifs are not "let's just fix the GC to be concurrent".
<def`> changing code generation and efficient encoding for checking gc invariant
<mrvn> Drup: bummer
<def`> (switch from write barrier to read barrier)
<Drup> (also, last time he did a presentation, a bunch of things were broken: Weak, Lazy, ...)
<Drup> so, WIP :)
<def`> yep
milosn has quit [Ping timeout: 252 seconds]
Algebr has quit [Ping timeout: 244 seconds]
uris77 has joined #ocaml
<djellemah> Great, thanks. That's exactly what I needed to know.
Algebr has joined #ocaml
rwmjones is now known as rwmjones_hol
Submarine has joined #ocaml
lewis1711 has joined #ocaml
<lewis1711> is there a good explination of the string vs bytes thing anywhere? whenever I use a string literal in utop, it tells me the type is bytes. i can print non ASCII characters fine though
<companion_cube> read barrier... this sounds frightening
Sorella has joined #ocaml
<companion_cube> lewis1711: In a first step towards making strings immutable, a type bytes of mutable byte arrays and a supporting library module Bytes were introduced. By default, bytes is a synonymous for string, so existing code that mutates values of type string still compiles, with warnings. Option -safe-string separates the types string and bytes, making strings immutable.
<companion_cube> (since 4.02)
mcclurmc has quit [Remote host closed the connection]
darkf has quit [Quit: Leaving]
<lewis1711> so there's no way of iterating through some non-asscii string by character? ie, String.length "你好“ is 6
<mrvn> I still think it's a mistake how it's implemented.
mcclurmc has joined #ocaml
<companion_cube> lewis1711: you need to use a unicode library
<lewis1711> ah right
<flux> mrvn, how should it have been implemented?
<mrvn> phantom types come to mind.
<mrvn> The problem as I see it is that you have strings that are truely constants, strings that a function is allowed to modify and strings a function must not modify but that may be modified by others.
<flux> with or without polymorphic variants?
<Drup> mrvn: the idea is that the string implementation could possibly change down the road.
<flux> because phantom types with polymorphic variants can be annoying regarding type inference
mcclurmc has quit [Ping timeout: 264 seconds]
<Drup> flux: it would be something along the lines of type 'a string constraint 'a = [< `Read | `Write ]
<mrvn> And that basically means functions should be able to work on different kinds of strings andf only polymorphic variants types allow that
<flux> and the discussion about bytes/strings addressed that case
<mrvn> Drup: = [< `Read | `Write | `Const ]
<mrvn> The bytes/strings only solves half the problem.
<haesbaert> is there a way to ignore ksprintf ? like ifprintf does for kfprintf
<Drup> mrvn: are there operations that are valid on Read and not on Const (and the opposite) ?
<mrvn> Drup: using a string as key in a hashtbl. A `Read string must be copied.
<Drup> I don't see why
<mrvn> because it might be changed and then the hashtbl is broken
<Drup> then it's `Read only, good
<Drup> nothing to do with Const
<mrvn> Drup: The distinction is between "you are not allowed to change the string" and "the string won't change (anymore)"
<flux> drup, so the only way to go from `Write data to `Read data is by copying?
<flux> (well obviously from `Write | `Read to `Read)
<Drup> flux: I guess
<mrvn> flux: you can just drop the `Write
<flux> well, at times it might be undesirable to require copying in that case
<def`> type no type yes [`Write of no] for const string, [`Write of yes] for string one might have a mutable reference to
<Drup> note that I don't like this proposition, and there is a huge thread on the mailing list about it
Submarine has quit [Remote host closed the connection]
<flux> mrvn, but then `Read won't mean `Const, which is what drup was after I understand
<Drup> def`: since there are only two variants, just closing the type is enough
<Drup> you don't even need the distinction
<flux> the best way to propose this kind of thing would have been to actually implement it..
<def`> Drup: couldn't one have a mutable reference to a string, drop the write right by subtyping?
mcclurmc has joined #ocaml
<mrvn> flux: if only everyone had the time. I also suspect implementing `Const properly needs lifetime analysis that ocaml isn't capable of.
<mrvn> flux: specifically to const-ify a string that was mutable before.
<def`> mrvn: my solution fix this
<flux> obviously `Const would be implemented in terms of copying or in terms of const_of_value_unsafe
<flux> and then some day someone might write a compiler pass to disable the copies..
<mrvn> flux: yeah. copying is the workaround for that
blech_ has joined #ocaml
<def`> ("lighter" encoding, [`Write] vs [`Write of [`No]] )
<flux> btw, I wonder if GADTs would bring anything new to the table regarding this?
<def`> variants with appropriate variance anotation provide the right modular analysis
<mrvn> flux: that would using stings ugly
<flux> for example this is slightly relevant and interesting read: https://blogs.janestreet.com/why-gadts-matter-for-performance/
<flux> it has an example of using both arrays and strings for a unified container interface
<mrvn> def`: what solution? `Write of no|yes is just another way of having 3 cases
mcclurmc has quit [Remote host closed the connection]
<def`> ok
<Drup> def`: you can't cast [ `Read | `Write] string to [< `Read] foo
<Drup> s/foo/string
<Drup> even if 'a string is covar
<mrvn> Drup: the string module can
clog has quit [Ping timeout: 264 seconds]
dav has quit [Ping timeout: 250 seconds]
<Drup> mrvn: of course, by copying
mcclurmc has joined #ocaml
<Drup> but you can't cast by doing the identity
<mrvn> Drup: no. it just can because inside the string module the phantomness of the type is known
dav has joined #ocaml
<mrvn> Drup: doesn't mean it should
<def`> Drup: of course, subtyping relation is reversed on polymorphic variants
<def`> make the variable contravariant
<lewis1711> is there a quick and dirty way to play mp3 files in ocaml?
<Drup> and ? why does it even matter what happens inside String ?
<Drup> we only care about the external invariants
<Drup> if you have a [`Read] string, it's not modified, period
<Drup> (assuming it's implemented properly, obviously)
<def`> mrvn: my solution prevent unifying a string expected const with a writable string
<mrvn> Drup: so that means a litteral or freshly copied string
<Drup> mrvn: well, yes ...
<Drup> or used functionally, with concat for example
<mrvn> Drup: and [`Write] is a mutbale string.
<def`> because typechecker will locally reject unifying [`Write] and [`Write of `No] . With `Const the code will still typecheck.
<Drup> that would be mutable only, yes
<Drup> mrvn: you would rather want [`Write | `Read] string, in general
<mrvn> Drup: what makes a string mutable but not by the function?
<def`> Safety relying on you not able to provide a [`Write|`Const]
<mrvn> def`: the string module would ensure that
<mrvn> def`: so not a big deal
<dmbaturin> Can opam install everything I had in previous compiler installation when switching to a newer version?
<Drup> lewis1711: "opam search mp3" ;)
<def`> sure, my solution just provide finer typechecking
<Drup> dmbaturin: opam export/import
<dmbaturin> Drup: Thanks, will have a look.
<mrvn> def`: yours relies on not having a [`Write of (yes | no)]
s1n4 has joined #ocaml
freling has quit [Quit: Leaving.]
<def`> … which cannot exist in OCaml typesystem
<mrvn> def`: yes it can.
<def`> ok
<Drup> it's not inhabited ...
<mrvn> def`: usualy you can't populate it but since it's a phantom type you can
<Drup> no you can't, except if the implementation is crap
<Drup> let us please assume the implementation respect the invariants we define
<mrvn> Drup: same way as the string module returning a [`Write | `Const] string.
<Drup> so, for example, exactly not this sentence,
<mrvn> Drup: but that's what def` claims his approach prevents
<mrvn> unless I misread something
clog has joined #ocaml
<Drup> anyway
<mrvn> 17:27 <@mrvn> Drup: what makes a string mutable but not by the function?
<Drup> which function ?
<mrvn> the called function
<Drup> what the hell are you talking about ?
<mrvn> The third case from above. [`Read] is a immutable string, [`Read|`Write] is a mutable string. But how does the type look like for a string that a function must not change but that might get changed by other code.
<Drup> okay, let's stop there. It's non productive, I have more interesting things to do and you are always dropping assumptions implicitly, which is annoying. This is not the current implementation, and adding a phantom type to string would break a lot of code
<mrvn> ?
<Drup> use functors.
<mrvn> or 3 cases in the phantom type. whatever you use there.
ygrek has joined #ocaml
tianon has quit [Quit: brb]
tianon has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
elfring has joined #ocaml
avsm has quit [Quit: Leaving.]
ollehar1 has joined #ocaml
nojb has joined #ocaml
struktured has quit [Ping timeout: 265 seconds]
ptc has joined #ocaml
boogie has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
nojb has quit [Quit: nojb]
nojb has joined #ocaml
contempt has quit [Ping timeout: 250 seconds]
ghostpl_ has quit [Remote host closed the connection]
Submarine has joined #ocaml
Submarine has joined #ocaml
contempt has joined #ocaml
shinnya has joined #ocaml
milosn has joined #ocaml
ghostpl_ has joined #ocaml
<haesbaert> how do I prevent ksprintf from actually building the fmt ?
<haesbaert> there is no iksprintf or equivalent
<adrien_znc> haesbaert: i variant
<adrien_znc> well
<adrien_znc> :P
<haesbaert> adrien_znc: I can't seem to get it right with ksprintf + ikfprintf
<nojb> haesbaert: if you use -rectypes you can do let rec iksprintf k f = iksprintf which is unifiable with Printf.ksprintf
<nojb> otherwise maybe use Format.ifprintf
<nojb> with Format.str_formatter
<haesbaert> hmm, leme try
<haesbaert> arghh I'm lost
<nojb> what is it ?
<haesbaert> how is Format.ifprintf different than Printf.ifprintf ?
<nojb> Printf.ifprintf prints on an out_channel , Format.ifprintf prints on a Format.formatter
<nojb> the difference is that one cannot manufacture an out_channel out of a string, but you can do it with a Format.formatter
<nojb> the Format gives an unified interface to both channels and string buffers
<nojb> Printf.sprintf and Printf.fprintf on the other hand have different types
<haesbaert> I don't understand why I need this on a conditionally printing
<haesbaert> why do I need continuations ?
<haesbaert> I just want to condionally format an argument and print it
<nojb> You can use iksprintf as explained - only issue is that it is not included in Printf
Gate has joined #ocaml
<haesbaert> and without rectypes my alternative is with Format only
<haesbaert> ?
<nojb> I think so
<nojb> you can also do something with lazy evaluation I guess
<haesbaert> I guess the alternative is to do with Format then
blech_ has quit [Ping timeout: 265 seconds]
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<nojb> do you actually care about the speed difference between building the format and not ?
jwatzman|work has joined #ocaml
<haesbaert> well not so much about the speed
<haesbaert> but it really just feels wrong
<nojb> probably the nicer way to do it is with a little bit of ppx
<nojb> you could see what Lwt does
MrScout has quit [Ping timeout: 256 seconds]
dsheets has quit [Ping timeout: 252 seconds]
<haesbaert> reading now
<nojb> haesbaert: actually in your case there is a much easier solution:
<nojb> let log_maybe ?(pre = "") level fmt =
<nojb> if level then
<nojb> Printf.fprintf stderr ("%s" ^^ fmt ^^ "\n%!") pre
<nojb> else
<nojb> Printf.ifprintf stderr fmt
<haesbaert> hmm what is ^^ ?
<nojb> concatenates format strings - see Pervasives docs
<haesbaert> OHHH
mort___ has quit [Ping timeout: 256 seconds]
olauzon has joined #ocaml
j0sh has quit [Remote host closed the connection]
avsm has joined #ocaml
<haesbaert> nojb: awesome, thanks a lot, that works :D
<nojb> cool
<haesbaert> I've been trying this for the past 5-6 hours :/
seanmcl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Gate has quit [Read error: Connection reset by peer]
Gate has joined #ocaml
jonludlam has quit [Ping timeout: 264 seconds]
larhat has quit [Ping timeout: 252 seconds]
Anarchos has joined #ocaml
alpen has quit [Ping timeout: 256 seconds]
srcerer has joined #ocaml
badkins has joined #ocaml
elfring_ has joined #ocaml
ptc has joined #ocaml
elfring has quit [Ping timeout: 264 seconds]
javamonn has quit [Remote host closed the connection]
AlexRussia has joined #ocaml
javamonn has joined #ocaml
octachron has quit [Quit: Leaving]
MrScout has joined #ocaml
ontologiae has joined #ocaml
Denommus has quit [Quit: restarting Emacs]
Denommus has joined #ocaml
c355E3B has joined #ocaml
elfring_ has quit [Quit: Konversation terminated!]
elfring has joined #ocaml
ocp has quit [Ping timeout: 255 seconds]
agarie has joined #ocaml
WraithM has joined #ocaml
Gate has quit [Ping timeout: 252 seconds]
pyon has quit [Remote host closed the connection]
pyon has joined #ocaml
<Algebr> what does bin usually mean, binary?
tel has joined #ocaml
<cmtptr> waste bin
<Algebr> ?
<cmtptr> yes, in the context of computers I usually recognize bin as short for binary
mcclurmc has joined #ocaml
thomasga has quit [Quit: Leaving.]
<cmtptr> whwhich is kind of goofy when you think about it, because 1. all data on a computer is represented in binary, and 2. how it's physically stored or transferred is really an irrelevant implementation detail
<ollehar1> ounit fetches exceptions like a bitch
ghostpl_ has quit [Remote host closed the connection]
<dmbaturin> cmtptr: Does a binary file stop being binary if you base64 it? :)
matason has quit [Ping timeout: 264 seconds]
<cmtptr> exactly!
<cmtptr> even when it's text, it's still binary data
<dmbaturin> Also, does an EBCDIC-encoded file become binary if you copy it to an ASCII-based system.
<dmbaturin> ollehar1: How do bitches fetch exceptions?
<mrvn> it' always binary.
<mrvn> It only becomes text when you use a stupid 7bit ftp client/server
<mrvn> cmtptr: when you transfer a "text" file then newlines get a conversion adding/stripping carriege return. Which means 99.9% of the time your file is ruined after.
ggole has quit []
ygrek has quit [Ping timeout: 244 seconds]
dsheets has joined #ocaml
nojb has quit [Quit: nojb]
<dmbaturin> mrvn: Some SMTP servers also do this, or worse.
<dmbaturin> USSR standard cyrillic charset was designed to look like a bad transliteration if you strip the 8th bit off.
<mrvn> dmbaturin: they mostly just drop the 8th bit.
kakadu has quit [Quit: Page closed]
kdef has joined #ocaml
<ollehar1> ounit gives me problems with exceptions of exceptions in another module.
<ollehar1> Sentence_problem("", _), where _ is the exception
<ollehar1> Asked this before, not sure there is a solution...
Haudegen has quit [Ping timeout: 250 seconds]
TheLemonMan has joined #ocaml
larhat has joined #ocaml
<ollehar1> more chocolate milk needed...
c355E3B has quit [Ping timeout: 272 seconds]
Haudegen has joined #ocaml
s1n4 has quit [Ping timeout: 245 seconds]
ontologiae has quit [Ping timeout: 255 seconds]
lordkryss has quit [Quit: Connection closed for inactivity]
larhat has quit [Quit: Leaving.]
WraithM has quit [Ping timeout: 256 seconds]
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
slash^1 has quit [Read error: Connection reset by peer]
ghostpl_ has joined #ocaml
pyon is now known as dual-pyon
ghostpl_ has quit [Remote host closed the connection]
ghostpl_ has joined #ocaml
ptc has joined #ocaml
HotTopic has joined #ocaml
HotTopic has left #ocaml [#ocaml]
kakadu has joined #ocaml
bjorkintosh has quit [Quit: Leaving]
WraithM has joined #ocaml
bjorkintosh has joined #ocaml
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
ptc has joined #ocaml
mort___ has joined #ocaml
lewis1711 has quit [Ping timeout: 256 seconds]
Algebr has quit [Remote host closed the connection]
ollehar1 has quit [Quit: ollehar1]
badkins has quit []
thomasga has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
Nijikokun has joined #ocaml
Nijikokun has quit [Max SendQ exceeded]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
Anarchos has joined #ocaml
tel has quit [Ping timeout: 256 seconds]
mcclurmc has joined #ocaml
_andre has quit [Quit: leaving]
agarie has quit [Remote host closed the connection]
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
oscar_toro has joined #ocaml
agarie has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
elfring has quit [Quit: Konversation terminated!]
BitPuffin has quit [Ping timeout: 265 seconds]
ptc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
WraithM has quit [Quit: leaving]
mcclurmc has quit [Remote host closed the connection]
xificurC has joined #ocaml
<adrien> bonne nuit
<adrien> ECHAN
<adrien> good night!
thomasga has quit [Quit: Leaving.]
mcclurmc has joined #ocaml
<adrien> ah, better than the SNCF ones which crash on some random Windows XP stuff
<adrien> (they're also incredibly laggy)
<def`> I've seen one ratp screen trying to boot freebsd, without success
<adrien> grub and freebsd? were they legit ones?
mort___1 has joined #ocaml
<MercurialAlchemi> pirate copies, no doubt :)
mort___1 has left #ocaml [#ocaml]
jonludlam has joined #ocaml
mort___ has quit [Ping timeout: 252 seconds]
freling has joined #ocaml
boogie has quit [Quit: Leaving...]
agarie has quit [Remote host closed the connection]
freling has quit [Quit: Leaving.]
mcclurmc has quit [Remote host closed the connection]
agarie has joined #ocaml
mcclurmc has joined #ocaml
olauzon has quit [Quit: olauzon]
ontologiae has joined #ocaml
govg has quit [Quit: leaving]
xificurC has quit [Ping timeout: 264 seconds]
ollehar1 has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 256 seconds]
BitPuffin has joined #ocaml
govg has joined #ocaml
lordkryss has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
agarie has quit []
Gama11_ has quit [Read error: Connection reset by peer]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<haesbaert> hmm it seems my merlin-refresh doesn't actually rebuilds the cmi
<haesbaert> has anyone faced this ?
<haesbaert> it's kinda annoying since I change a mli, then edit some code that uses, and merlin doesn't pick up the new mli until I try to compile
<haesbaert> merlin-refresh doesn't seem to help
tane has quit [Quit: Verlassend]
uris77 has quit [Ping timeout: 255 seconds]
Simn has quit [Quit: Leaving]
oriba has joined #ocaml
<ollehar1> how to keep stacktrace when re-raising exception?
<ollehar1> this code in ounit:
<ollehar1> with e ->
<ollehar1> clean_exit();
<ollehar1> raise r
Haudegen has quit [Ping timeout: 265 seconds]
javamonn has quit [Remote host closed the connection]
javamonn has joined #ocaml
javamonn has quit [Remote host closed the connection]
<Drup> haesbaert: err, merlin never rebuilds anything
<Drup> you rebuild.
<Drup> merlin picks up stuff after build
<haesbaert> hmm I thought merlin refresh regenerated the cmi files as per: https://github.com/the-lambda-church/merlin/wiki/emacs-from-scratch
<haesbaert> If you have changed the interface of an other module of your project, and want merlin to know about it, you need to refresh its .cmi cache using merlin-refresh (bound to C-c C-u by default).
<haesbaert> so what I'm seeing is the normal behaviour ? I have to manually regenerate the cmi for merlin to pick up
<Drup> that's not what it means :)
<Drup> it means you need to refresh the view of the cmi merlin has internally
<haesbaert> ack
<Drup> because the cmi has changed.
<Drup> have*
ingsoc has quit [Quit: Leaving.]
<haesbaert> somehow it figures the cmi has changed after I rebuild them, I mean without me doing a merlin-refresh
<Drup> yes, merlin has gone cleverer since this was written
<Drup> ( :sky-merlin-net: )
<haesbaert> ahh ok, then I get it. By exclusion I thought merlin-refresh regenerated the cmi, since it seemed to do nothing (as it seems to be not needed anymore)
struktured has joined #ocaml
<ollehar1> use opam to modify source?
<ollehar1> of a package?
kakadu has quit [Remote host closed the connection]
<Drup> what do you mean ?
<ollehar1> drup, want to change some lines in ounit
<ollehar1> can I patch locally?
<Drup> sure
<ollehar1> docs?
<Drup> "opam help source" and "opam help pin"
Haudegen has joined #ocaml
<ollehar1> thanks
k1000 has quit [Quit: k1000]
ptc has joined #ocaml
ontologiae has quit [Ping timeout: 250 seconds]
dsheets has quit [Ping timeout: 256 seconds]
k1000 has joined #ocaml
keen_ has joined #ocaml
ollehar1 has quit [Quit: ollehar1]
jonludlam has quit [Ping timeout: 265 seconds]
ptc has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
avsm has quit [Quit: Leaving.]
avsm has joined #ocaml
avsm has quit [Client Quit]
oriba has quit [Quit: oriba]
alpen has joined #ocaml
keen__ has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
keen_ has quit [Ping timeout: 252 seconds]