adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.02.2 announced http://ocaml.org/releases/4.02.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
jbrown has quit [Ping timeout: 260 seconds]
<dmbaturin> linman32: Wrong channel? :)
<linman32> dmbaturin: ok. what is best way to convert multiple types to string? like int,float,list, etc
<dmbaturin> There are no type classes or any other form of ad-hoc polymorphism in ML. You can make a functor that requires its parameter to implement a 'a -> string function though.
<linman32> oh really? how is this done?! haha
<dmbaturin> Also, there's ppx_deriving extension that can generate anything to string functions for you ([@@deriving show]).
AltGr has joined #ocaml
<dmbaturin> The simplest option of all is to just pass an ('a -> string) function as an argument.
<linman32> good idea. thanks
swgillespie has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jao has joined #ocaml
ceryo_ has joined #ocaml
<dmbaturin> linman32: There's a paper about adding a form of ad-hoc polymorphism to ocaml, but it haven't made it into the mainline yet.
ceryo has quit [Ping timeout: 244 seconds]
ncthom91 has joined #ocaml
<ollehar> anyone awake?
cross has quit [Ping timeout: 252 seconds]
keen__________32 has quit [Ping timeout: 240 seconds]
xaimus has quit [Ping timeout: 252 seconds]
<ollehar> was thinking about how the heck to type-infer php functions with optional arguments before definition.
cross has joined #ocaml
<ollehar> foo();
<ollehar> function foo($a = 10) {...}
xaimus has joined #ocaml
keen__________32 has joined #ocaml
ceryo_ has quit [Ping timeout: 250 seconds]
tennix has joined #ocaml
tennix has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
jbrown has joined #ocaml
jonludlam has joined #ocaml
jbrown has quit [Ping timeout: 240 seconds]
ollehar has quit [Quit: ollehar]
manud has quit [Quit: manud]
Shark8 has joined #ocaml
claudiuc has quit [Ping timeout: 244 seconds]
toomuchtvrotsurb has quit [Remote host closed the connection]
jeffmo has joined #ocaml
swgillespie has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
claudiuc has joined #ocaml
jeffmo has quit [Ping timeout: 246 seconds]
linman16 has joined #ocaml
jbrown has joined #ocaml
linman32 has quit [Ping timeout: 252 seconds]
jbrown has quit [Ping timeout: 264 seconds]
MrScout has joined #ocaml
claudiuc has quit [Remote host closed the connection]
jeffmo has joined #ocaml
manud has joined #ocaml
manud has quit [Remote host closed the connection]
psy_ has quit [Ping timeout: 255 seconds]
igoroliveira has quit [Quit: Connection closed for inactivity]
linman16 has quit [Ping timeout: 240 seconds]
troydm has joined #ocaml
ygrek has quit [Ping timeout: 246 seconds]
darkf has joined #ocaml
shinnya has quit [Ping timeout: 264 seconds]
BitPuffin|osx has joined #ocaml
jbrown has joined #ocaml
jeffmo has quit [Read error: Connection reset by peer]
jbrown has quit [Ping timeout: 246 seconds]
jbrown has joined #ocaml
manizzle_ has quit [Ping timeout: 240 seconds]
manizzle has quit [Ping timeout: 265 seconds]
jbrown has quit [Ping timeout: 244 seconds]
jbrown has joined #ocaml
jbrown has quit [Ping timeout: 250 seconds]
Bhavya has joined #ocaml
ygrek has joined #ocaml
ncthom91 has joined #ocaml
huza has joined #ocaml
jbrown has joined #ocaml
ben_1 has joined #ocaml
manizzle has joined #ocaml
manizzle_ has joined #ocaml
c74d3 is now known as c74d
johnf has joined #ocaml
keen__________32 has quit [Read error: Connection reset by peer]
keen__________32 has joined #ocaml
johnf has quit [Read error: Connection reset by peer]
siddharthv_away is now known as siddharthv
kushal has joined #ocaml
jao has quit [Ping timeout: 240 seconds]
Bhavya has quit [Ping timeout: 244 seconds]
psy_ has joined #ocaml
BitPuffin|osx has quit [Ping timeout: 244 seconds]
sepp2k has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ncthom91 has joined #ocaml
TheLemonMan has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Akshay_ has joined #ocaml
Haudegen has quit [Ping timeout: 250 seconds]
kushal has quit [Ping timeout: 244 seconds]
Haudegen has joined #ocaml
Akshay_ has quit [Quit: Leaving]
native_killer has joined #ocaml
huza has quit [Quit: WeeChat 0.3.8]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
native_killer_ has joined #ocaml
rand000 has joined #ocaml
native_killer has quit [Ping timeout: 244 seconds]
dvb_ua has joined #ocaml
ben_2 has joined #ocaml
ben_1 has quit [Ping timeout: 250 seconds]
ben_1 has joined #ocaml
mort___ has joined #ocaml
ia0 has quit [Quit: leaving]
mort___ has quit [Client Quit]
tnguyen has quit [Remote host closed the connection]
mort___ has joined #ocaml
ia0 has joined #ocaml
tnguyen has joined #ocaml
ben_2 has quit [Ping timeout: 260 seconds]
ollehar has joined #ocaml
sh0t has joined #ocaml
zpe has joined #ocaml
mort___ has quit [Quit: Leaving.]
jonludlam has quit [Ping timeout: 240 seconds]
MrScout has quit [Ping timeout: 246 seconds]
bjorkintosh has joined #ocaml
octachron has joined #ocaml
sh0t has quit [Ping timeout: 244 seconds]
octachron has quit [Quit: Leaving]
octachron has joined #ocaml
dsheets has quit [Ping timeout: 244 seconds]
dsheets has joined #ocaml
Hannibal_Smith has quit [Quit: Leaving]
Hannibal_Smith has joined #ocaml
MercurialAlchemi has joined #ocaml
_native_killer_ has joined #ocaml
native_killer_ has quit [Ping timeout: 244 seconds]
64MADGKDO has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 246 seconds]
ygrek has quit [Ping timeout: 256 seconds]
creichert has quit [Ping timeout: 260 seconds]
ben_1 has quit [Quit: Leaving.]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
ollehar has quit [Ping timeout: 244 seconds]
kushal has joined #ocaml
dsheets has quit [Ping timeout: 244 seconds]
ollehar has joined #ocaml
64MADGKDO has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ollehar has quit [Ping timeout: 256 seconds]
yomimono has joined #ocaml
Hannibal_Smith has quit [Quit: Leaving]
nullcat has joined #ocaml
nullcat has quit [Read error: Connection reset by peer]
dsheets has joined #ocaml
ollehar has joined #ocaml
TheLemonMan has joined #ocaml
Bhavya has joined #ocaml
<ollehar> on how to infer function sig in PHP, when there is no special syntax for optional arguments
<ollehar> infer from function usage, that is. from definition should be easy (there they have specific syntax).
<ollehar> thanks in advance
<rks`> ollehar: why don't you just sort the functions before typing?
<ollehar> rks`: hm, that would imply a two-phase algorithm?
<rks`> yes
<rks`> 1/ sorting 2/ typing
<ollehar> good idea, I'll think about it.
<ollehar> btw, why doesn't ocaml this?
<ollehar> (because I don't think it does, right?)
<rks`> (btw "function usage, that is. from definition" seems dubious)
BitPuffin|osx has joined #ocaml
<rks`> it doesn't need to because the functions are already ordered
<ollehar> oh, right :)
<rks`> btw, my solution doesn't work if you have mutually recursive functions :)
<ollehar> yeah, I was thinking about that.
<ollehar> but I'm building a subset of PHP, so some features might have to go.
<destrius> my general experience with trying to infer types for languages that were not really designed to be well-typed is that it's always going to be really tricky
<ollehar> just need to consider the trade-off.
<companion_cube> ollehar: you intend to beat Hack? :)
<ollehar> destrius: well, there _are_ type-hints in vanilla PHP, and I plan to enforce as many of them as possible.
<destrius> so it's sort of a best effort thing
<ollehar> companion_cube: I'm using hack :) the lexer/parser/ast. but yes, I'm not completely happy with it. basically, I want it to be more "ocaml". and to be able to use it without enforcing an architecture, because convincing people can be hard.
<ollehar> destrius: yeah
<destrius> anyway i think the idea you suggested on SO might work too, but i've not played with php for really long so i can't really help much :)
<rks`> (note that in the case of mutually recursive functions, you have both definitions, so it's still easier than "inferring the type of a function from its use point without knowing the definition")
<companion_cube> ollehar: oh, so you're trying to build on top of hack?
<dmbaturin> ollehar: What are you going to do about things like 3 + "4" (= 7) and 3 + "foo" (= 3)?
<ollehar> companion_cube: yes. they _do_ a lot of type-inferring already, but I'm not using their type-tree atm. might need to soon, though.
<ollehar> dmbaturin: NO type-casts what so ever! 3 + "4" is an type error, just as in ocaml.
<ollehar> *a type error
<dmbaturin> ollehar: "3" + "foo" will also be a type error?
<ollehar> dmbaturin: yes.
<ollehar> + is only for numbers (can't infer float/int in php)
<dmbaturin> I don't remember if there are functions that are perfectly legal for multiple types in PHP (apart from the usual int/float overload).
<dmbaturin> And that cannot be represented as polymorphic.
<ollehar> dmbaturin: hm, you don't mean functions like `empty()` or `isset()`?
<ollehar> companion_cube: (btw, it's not a fork, I just stole some code I needed.)
Haudegen has quit [Ping timeout: 244 seconds]
<dmbaturin> ollehar: Well, these are essentially 'a -> bool, I see no problem here.
<ollehar> dmbaturin: yeah, it should work.
<dmbaturin> I mean something like (+) in python which may mean different things for different types, but doesn't have to be implemented.
<ollehar> dmbaturin: that's true, in Javascript this is the case too, which make things a bit harder. facebook have another project, flow, where they check this. also made in ocaml. :)
<dmbaturin> (3+3 = 6, "foo" + "bar" = "foobar", None + None = type error)
<ollehar> and share a lot of ideas (and probably code) with hack
<ollehar> AND I'd like to do llvm stuff too. but we'll see. :)
Haudegen has joined #ocaml
<dmbaturin> ollehar: There's a paper called "relaxing the value restriction" AFAIR. There were some ideas about deferring final inference until actual values are known.
<ollehar> dmbaturin: interesting, I'll check it out.
<dmbaturin> The underscored type variables (_a, _b, ...) in ocaml come from it.
<flux> soo, building nocrypto fails: cp -p src/native/des/generic.h xen/native/des/generic.h - I don't have permissions to preserve permissions as user. but where does that -p come from? from ocamlbuild?
<flux> grep -R '\b-p\b' . doesn't really give any useful hits
<flux> except from the myocamlbuild binary. it's built in ocamlbuild?
<flux> I remember working this around the last time with a cp wrapper that drops the -p :-)
<flux> great that that "No changes required on OCaml's code." ;), obviously I will change cp? the network mount? nope..
Kakadu has joined #ocaml
dvb_ua has quit [Quit: #mesa]
<ollehar> dmbaturin: oh, haven't seen that before.
tg has quit [Ping timeout: 252 seconds]
tg has joined #ocaml
yomimono has quit [Ping timeout: 264 seconds]
xificurC_ has joined #ocaml
xificurC has quit [Ping timeout: 272 seconds]
jonludlam has joined #ocaml
<ollehar> wait, when building a compiler, you need both ast and type-information from the type-inferrer. How would you traditionally merge these two?
<ollehar> would you build a new ast with type-information attached?
<ollehar> OK, yes, you would, according to rwo. :)
_andre has joined #ocaml
rossberg has quit [Ping timeout: 244 seconds]
ceryo has joined #ocaml
tennix has quit [Ping timeout: 256 seconds]
<theblatte> ollehar: flow and hack share the code of the shared memory thingy used to run concurrent processes
<ollehar> theblatte: that's all? seems they have so much in common :P
<ollehar> you work on the project? do you know if the plan an llvm backend to hack?
rossberg has joined #ocaml
<theblatte> I don't work on the project :)
<ollehar> roger
<theblatte> ollehar: I'm not completely sure but I don't think they share much more code
<ollehar> hm ok
<ollehar> theblatte, where you the guy who worked on infer?
<theblatte> I still am :)
<companion_cube> oh, nice
<ollehar> cool, so you know about hoare logic and that stuff?
<theblatte> isn't llvm backend what hiphop used to do?
<ollehar> do you have any recommended reading?
<theblatte> ollehar: quite
<ollehar> uhm, don't know about hiphop and llvm. thought it compiled to C++.
<theblatte> oh right
* theblatte wasn't at fb at the time ^^
<theblatte> ollehar: reading on static analysis?
<ollehar> yes
<theblatte> the science part of Infer is Cristiano Calcagno, Dino Distefano, Peter W. O'Hearn, and Hongseok Yang. Com-
<theblatte> positional shape analysis by means of bi-abduction.
<theblatte> J. ACM
<theblatte> , 58(6):26, 2011.
<theblatte> hum, pasting never does what I want with linebreaks...
<theblatte> ollehar: so with the old hiphop you can do php -> c++ -> llvm :p
<ollehar> theblatte: ok, but separation logic is the fundament?
<ollehar> php to c++... doesn't that mean they already did (full?) type-inference for php? how could they otherwise transform it to c++?
Haudegen has quit [Ping timeout: 240 seconds]
<ollehar> maybe some trick...
<ollehar> unions and stuff.
<ollehar> why compile c++ to llvm when you can compile it to binary? or does llvm extra optimizations?
<theblatte> ollehar: yup, it's based on separation logic, itself an extension of Hoare logic to have scalable reasoning about the heap
<theblatte> ollehar: you were asking about llvm ;)
<ollehar> theblatte: will read up on it.
<ollehar> I did :) I'm planning to add it to my own project, just wanted to know if fb already does this.
<ollehar> or plan to do it.
<ollehar> theblatte: will you expand infer to cope with php too?
<theblatte> I don't think llvm is on the table since there's hhvm
<ollehar> but couldn't llvm be 10x faster than hhvm? hhvm is only ~2x faster than php, iirc.
<theblatte> ollehar: it's not obvious how much win infer could bring wrt hack
<theblatte> so no plan yet
<theblatte> ollehar: didn't we have this benchmarks discussion last time? iirc the benchmarks were incomplete as it didn't include fully-typed stuff on which hhvm would be even more performant
<theblatte> (because types help jit)
badkins has joined #ocaml
<ollehar> theblatte: right, we did :) and I tried to convert a benchmark to strict hack to see the difference. not done with that yet. :P
<theblatte> 2x seems to be the win with just hhvm, no hack >> http://hhvm.com/blog/7205/wikipedia-on-hhvm
Haudegen has joined #ocaml
grouzen has quit [Ping timeout: 265 seconds]
yomimono has joined #ocaml
<ollehar> theblatte: well, thanks for the info.
<ollehar> :)
<theblatte> yw :)
MercurialAlchemi has joined #ocaml
whirm has joined #ocaml
soultadu has joined #ocaml
acieroid` is now known as acieroid
MercurialAlchemi has quit [Ping timeout: 244 seconds]
ggole has joined #ocaml
AltGr has left #ocaml [#ocaml]
jtfmumm has joined #ocaml
BitPuffin|osx has quit [Ping timeout: 256 seconds]
inr_ has left #ocaml ["bye"]
tennix has joined #ocaml
grouzen has joined #ocaml
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
_native_killer_ has quit [Ping timeout: 244 seconds]
Bhavya has quit [Quit: Quit the channel]
BitPuffin|osx has joined #ocaml
zpe has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
soultadu_ has joined #ocaml
soultadu_ has quit [Client Quit]
soultadu has quit [Ping timeout: 240 seconds]
kushal has quit [Quit: Leaving]
tennix has quit [Ping timeout: 246 seconds]
tennix has joined #ocaml
tristero has quit [Quit: tristero]
tennix has quit [Ping timeout: 240 seconds]
kushal has joined #ocaml
tennix has joined #ocaml
tennix has quit [Ping timeout: 246 seconds]
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has joined #ocaml
mudri has joined #ocaml
<mudri> Hi. Is anyone familiar with compiler-libs?
<mudri> I'm working with Typedtree, and wondering why constructors (in both expressions and patterns) aren't annotated with a full module path.
<mudri> They only have a Longident.t with them, which is something the parser generates (and hence doesn't give a full path).
kolko has joined #ocaml
<Drup> They should have both all the time
<Drup> where do you only have one ?
<Drup> mudri: ^
<ollehar> (any recommended solution to the typed ast problem?)
<mudri> Drup, see the definition for pattern_desc, constructor Tpat_construct.
<Drup> mudri: the Ident.t is inside the constructor_description (defined in Types)
<mudri> Drup: which version?
<mudri> I'm on 4.02.1.
<mudri> It just has cstr_name : string.
<Drup> huum, actually it isn't , weird
<mudri> Also, an Ident.t would only have a name, I think. I'm really looking for a Path.t value somewhere.
<Drup> mudri: look at commit 0b37b27
<mudri> Okay...
<mudri> Ah, I guess the type keeps a Path.t. That could work.
<Drup> yeah
<Drup> It's weird that I remember it was kept there, since 3 years is a long time ago, but ...
<mudri> Wow, yeah.
igoroliveira has joined #ocaml
<Drup> mudri: by pure curiosity, what are you trying to do ?
<mudri> Drup: it's a bit strange. I'm trying to translate a subset of OCaml to CakeML.
<Drup> I see
<mudri> Unlike CakeML, it's unverified (which is rather fortunate).
felipealmeida has quit [Read error: Connection reset by peer]
uris77 has joined #ocaml
felipealmeida has joined #ocaml
linman16 has joined #ocaml
zoetus has joined #ocaml
<zoetus> hello!
<zoetus> can anyone explain to me what the oasis "Test" directive does?
<zoetus> and what happens if you have more than one such directive in your oasis file?
<Drup> it launches a test.
<Drup> you give it a command and it launches it
<Drup> if you have multiple Test directive, it will launch all of them
<zoetus> if i use 'make test', for example?
rand000 has quit [Quit: leaving]
_native_killer_ has joined #ocaml
<Drup> yes
<zoetus> is there a good example out there of how to use pa_ounit with oasis, having multiple "Test" directives?
<zoetus> apparently i'm doing it wrong -- 'make test' only runs a few of my tests, and prints test names (in verbose mode) that are obviously failing, but doesn't execute them
<Drup> I don't know, because I don't use ounit
<Drup> but you can try to do "OPAMTEST=1 opam list --depends-on ounit" in your terminal to have a list of packages using ounit, and see the ones using oasis :)
tennix has quit [Ping timeout: 240 seconds]
linman8 has joined #ocaml
<zoetus> okay, thanks, i'll try that and see what i can find :)
agjohnst has joined #ocaml
linman16 has quit [Ping timeout: 240 seconds]
<ollehar> this maybe got drowned before, so: any recommended solution to the typed ast problem?
<ollehar> with regard to llvm, too.
<Drup> I must have missed the question
tennix has joined #ocaml
<Drup> and I don't see a well formed question in the back log
<ggole> ollehar: you mean, with GADTs?
<ollehar> ggole: that's one way, I guess. never made it, will google.
<ollehar> Drup: well-formed? :) maybe not.
<ggole> One way to do what?
<Drup> Can you repeat the question ? :D
<ggole> Do you want to include type info in an ast? Ensure that asts are well typed?
<ollehar> oh wait... typed ast, as in compiler. first ast has no types, then after type-inference you want to add types to the ast, or build an IR.
<Drup> Define a new ast.
<Drup> It's the simplest
tennix has quit [Ping timeout: 246 seconds]
<ollehar> yeah, especially since the original ast is not mine, it's from hack, and I don't want to mess with it too much.
<Drup> (what does this problem has anything to do with llvm ?)
<ollehar> maybe it doesn't? parser php to ast -> type-check/-infer ast -> generate llvm
<Drup> No
<Drup> php -> ast -> typed ast -> IR -> llvm
<ollehar> why do I need IR in that equation?
<ggole> You might want to do your own transformations
<Drup> because you can't write custom optimisations on the typed ast and writing optimisation on the llvm one is quite painful
<ollehar> ah
<ollehar> and would you do the typed ast with gadt? maybe doesn't matter :P
<Drup> nope nope nope :3
<Drup> (btw, I'm not sure writing your first full compiler on php is the easiest introduction ever :D)
<ggole> GADTs are a rather painful rabbit hole
tennix has joined #ocaml
<ollehar> I know! but, it's what I'm motivated to do right now, since I'm stuck in PHP professionally. and, it's a subset. and a prototype. baby steps. ^^
<ollehar> ggole, ok. I'll just avoid those.
<Drup> you are still stuck with php ?
<Drup> You do realize that the subset you are going to compile is not php at all ?
<ollehar> Drup: not sure... I got fired. had an interview with issuu yesterday, they uses ocaml but wanted front-end people. or, I could just look for a job in Java or whatever. ^^
<ollehar> Drup: what do you mean, no PHP?
<ollehar> *not
<Drup> well, it's going to be a very restricted subset of php ...
<ollehar> no reflection?
<Drup> depends on your typechecker, really, but ... not a lot of things
zoetus has quit [Ping timeout: 246 seconds]
<ollehar> well, you have classes, interfaces. that's enough for a lot of stuff, right?
ncthom91 has joined #ocaml
<Drup> This is similar to saying "Yes, I can compile all of OCaml: The normal ADTs, the modules and the references, that's enough for a lot of stuff, right ?" :)
tane has joined #ocaml
<Drup> Yes, it's enough, but you still just banned a good 80% of the OCaml ecosystem
<ollehar> sure. but you don't have to use the LLVM thingy, maybe just use the linter part for you own code, which I plan to do. the important thing is to enforce a sensible subset which can still be run everywhere and interact with other code. on the surface, I will code PHP, but really it will be another language. mwahaha.
<ollehar> actually, I'm not sure _why_ I'm making the LLVM part, since HHVM plans to do some stuff like this still. I just want to see exactly how much the hacklang screwed up in terms of performance. :P well, it's a work in progress for them, but...
<ollehar> ach, the project will never finish anyway. just another thing to put in your CV :P the scope is too big.
<theblatte> ollehar: if your compiler performs better than hhvm (and handles fb's codebase) you can become the biggest rockstar at fb ;)
<ollehar> theblatte: yeah :D but I will ban `==` etc etc, so. no more pragmatism!
<Drup> ollehar: hhvm's performances are probably due to the fact that they compile pretty much all of php, hence dynamic casts, and so on ...
<ollehar> Drup: true, but they have "strict mode" which is different. can't find benchmarks for it, though. :P
<theblatte> yep, curious to see what a benchmark of strict hack would look like
<ollehar> theblatte: very much so, yes. :)
<theblatte> my guess is that a custom-built jit engine would beat compiled-down llvm any day but I'm happy to be proved wrong
creichert has joined #ocaml
<Drup> theblatte: consider it's facebook's server code we are talking about, an heavy-weight tracing JIT would probably end up having compiled almost optimally the hot-path of the server rather quickly (comparatively to the lifetime of a server build)
def` has quit [Ping timeout: 244 seconds]
<Drup> (llvm-JIT yay :D)
<ollehar> Drup: isn't that exactly what hhvm are working on?
<ollehar> JIT + LLVM
<Drup> very probably
<ollehar> "Integration of LLVM as a further optimization step to make the hottest code run even faster on HHVM. "
<ollehar> from their blog.
<ollehar> anyway, another ast need to be built...
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
xificurC_ has quit [Quit: WeeChat 1.2]
xificurC has joined #ocaml
<ollehar> thanks for the help, all!
octachron has quit [Quit: Leaving]
manizzle_ has quit [Ping timeout: 260 seconds]
manizzle has quit [Ping timeout: 246 seconds]
zpe has quit [Remote host closed the connection]
grouzen has quit [Ping timeout: 246 seconds]
ncthom91 has joined #ocaml
felipealmeida has quit [Ping timeout: 264 seconds]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
dario1 has joined #ocaml
siddharthv is now known as siddharthv_away
linman8 has quit [Ping timeout: 260 seconds]
johnf_ has joined #ocaml
kandu has quit [Quit: leaving]
kandu has joined #ocaml
ygrek has joined #ocaml
ggole has quit [Ping timeout: 244 seconds]
ygrek has quit [Ping timeout: 244 seconds]
Hannibal_Smith has joined #ocaml
felipealmeida has joined #ocaml
manizzle has joined #ocaml
manizzle_ has joined #ocaml
dsheets has quit [Ping timeout: 264 seconds]
bendiken has joined #ocaml
MrScout has joined #ocaml
toomuchtvrotsurb has joined #ocaml
MercurialAlchemi has joined #ocaml
dario1 has quit [Quit: Konversation terminated!]
jwatzman|work has joined #ocaml
sepp2k has quit [Quit: Leaving.]
sp0on has joined #ocaml
sp0on has quit [Ping timeout: 246 seconds]
jao has joined #ocaml
tennix has quit [Ping timeout: 260 seconds]
mudri has quit [Ping timeout: 244 seconds]
MercurialAlchemi has quit [Ping timeout: 260 seconds]
tennix has joined #ocaml
tennix has joined #ocaml
sp0on has joined #ocaml
tennix has quit [Ping timeout: 255 seconds]
yomimono has quit [Ping timeout: 256 seconds]
tennix has joined #ocaml
tennix has joined #ocaml
mearnsh has joined #ocaml
grouzen has joined #ocaml
tennix has quit [Ping timeout: 264 seconds]
mearnsh has quit [*.net *.split]
mearnsh has joined #ocaml
linman8 has joined #ocaml
tennix has joined #ocaml
ygrek has joined #ocaml
tennix has quit [Ping timeout: 272 seconds]
tennix has joined #ocaml
tennix has joined #ocaml
manizzle has quit [Remote host closed the connection]
manizzle_ has quit [Remote host closed the connection]
Haudegen has quit [Ping timeout: 260 seconds]
tennix has quit [Ping timeout: 240 seconds]
c74d has quit [Remote host closed the connection]
tennix has joined #ocaml
Haudegen has joined #ocaml
ollehar has quit [Ping timeout: 250 seconds]
c74d has joined #ocaml
tennix has quit [Ping timeout: 246 seconds]
darkf has quit [Quit: Leaving]
tennix has joined #ocaml
tennix has quit [Ping timeout: 246 seconds]
mudri has joined #ocaml
tennix has joined #ocaml
_native_killer_ has quit [Read error: Connection reset by peer]
tennix has quit [Ping timeout: 246 seconds]
Kakadu has quit [Quit: Page closed]
<smondet> Drup: just in case anybody else hits that, or if there is a plan to write a JSOO p4→ppx guide. There is one case where the compiler did not help me: https://github.com/hammerlab/ketrew/blob/8b5895805cc9db280b777a50d412fca53eae93f1/src/client-joo/protocol_client.ml#L128 → content#message was a prop in p4, and the compiler+ppx accepted it as a method, so it failed at run-time
BitPuffin|osx has quit [Ping timeout: 272 seconds]
<smondet> (it's normal that the compiler cannot detect it since Jsonp.call_custom_url is totally unsafe, but it can be difficult to spot :) )
sh0t has joined #ocaml
adarqui has quit [Quit: Reconnecting]
adarqui_ has joined #ocaml
adarqui_ has quit [Client Quit]
tennix has joined #ocaml
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has quit [Ping timeout: 244 seconds]
slash^ has joined #ocaml
struktured has quit [Ping timeout: 246 seconds]
bernardofpc has quit [Ping timeout: 264 seconds]
toomuchtvrotsurb has quit [Ping timeout: 244 seconds]
kolko_ has joined #ocaml
kolko has quit [Ping timeout: 246 seconds]
tobiasBo1 has quit [Ping timeout: 246 seconds]
tennix has joined #ocaml
Maelan has quit [Ping timeout: 265 seconds]
Maelan has joined #ocaml
tennix has quit [Ping timeout: 260 seconds]
bernardofpc has joined #ocaml
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has joined #ocaml
johnf_ has quit [Read error: Connection reset by peer]
Haudegen has quit [Ping timeout: 246 seconds]
tobiasBo1 has joined #ocaml
tennix has quit [Ping timeout: 240 seconds]
lobo has joined #ocaml
Haudegen has joined #ocaml
ceryo has quit [Quit: Textual IRC Client: www.textualapp.com]
Kakadu has joined #ocaml
tennix has joined #ocaml
tennix has joined #ocaml
ceryo has joined #ocaml
struktured has joined #ocaml
tennix has quit [Ping timeout: 255 seconds]
jeffmo has joined #ocaml
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has joined #ocaml
zoetus has joined #ocaml
<zoetus> is it possible to return a GADT values where the type params are different, from the same function?
tennix has quit [Ping timeout: 246 seconds]
<zoetus> if i have a GADT like: type _ t = | Foo : int t | Bar : string t
<zoetus> and i have a function:
<zoetus> let f = if <coin flip> then Foo 43 else Bar "hello"
<zoetus> basically, i'm curious if you could do something like read a value from stdin, and parse it into a value with a type that is a GADT
bendiken has quit [Max SendQ exceeded]
<zoetus> (the type i gave above should be: type _ t = | Foo : int -> int t | Bar : string -> string t )
tennix has joined #ocaml
fds_ is now known as fds
tennix has quit [Ping timeout: 246 seconds]
shinnya has joined #ocaml
tennix has joined #ocaml
tennix has quit [Ping timeout: 246 seconds]
johnf_ has joined #ocaml
jonludlam has quit [Ping timeout: 240 seconds]
tennix has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
tennix has quit [Ping timeout: 272 seconds]
dsheets has joined #ocaml
swgillespie has joined #ocaml
ceryo has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
claudiuc has joined #ocaml
claudiuc has quit [Read error: Connection reset by peer]
claudiuc has joined #ocaml
octachron has joined #ocaml
def` has joined #ocaml
octachron has quit [Quit: Leaving]
_andre has quit [Quit: leaving]
zoetus has quit [Quit: Page closed]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
struktured has quit [Ping timeout: 265 seconds]
TheLemonMan has joined #ocaml
linman8 has quit [Ping timeout: 246 seconds]
sh0t has quit [Remote host closed the connection]
jonludlam has joined #ocaml
<Shark8> zoetus: Doing something like that can get pretty complex pretty quick, just on the interactions alone... if it even is possible.
sh0t has joined #ocaml
deavidsedice has quit [Ping timeout: 244 seconds]
deavid has joined #ocaml
swgillespie has joined #ocaml
Denommus has joined #ocaml
sh0t has quit [Ping timeout: 272 seconds]
deavid has quit [Ping timeout: 240 seconds]
tane has quit [Quit: Verlassend]
ollehar has joined #ocaml
deavid has joined #ocaml
ygrek has quit [Ping timeout: 244 seconds]
MercurialAlchemi has joined #ocaml
sp0on has quit [Ping timeout: 244 seconds]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
ncthom91 has quit [Quit: Textual IRC Client: www.textualapp.com]
uris77 has quit [Ping timeout: 246 seconds]
mal``` has quit [Ping timeout: 264 seconds]
mal`` has joined #ocaml
<flux> hmm, so is it that MaCaQue doesn't do left/right outer joins?
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has joined #ocaml
ygrek has joined #ocaml
jao has quit [Ping timeout: 240 seconds]
tennix has quit [Ping timeout: 240 seconds]
Haudegen has quit [Ping timeout: 265 seconds]
lobo has quit [Quit: leaving]
BitPuffin|osx has joined #ocaml
Hannibal_Smith has quit [Quit: Leaving]
Kakadu has quit [Remote host closed the connection]
jonludlam has quit [Ping timeout: 250 seconds]
Haudegen has joined #ocaml
<dinosaure>
<ollehar> ugh, unbound module llvm
<ollehar> what am I doing wrong?
<ollehar> + ocamlfind ocamlopt -cc g++ -ccopt -w,@a-4 -package llvm,llvm.bitreader -linkpkg llvm.cmxa llvm.ml -o llvm_test
rand000 has joined #ocaml
<jrslepak> just to make sure, did you install LLVM via OPAM?
<ollehar> jrslepak: yeah, it works in topfind
<ollehar> # #require "llvm";;
<ollehar> /home/olle/.opam/4.02.1/lib/llvm/.: added to search path
<ollehar> /home/olle/.opam/4.02.1/lib/llvm/./llvm.cma: loaded
w0rp has joined #ocaml
* jrslepak shrugs
MercurialAlchemi has quit [Ping timeout: 264 seconds]
<ollehar> mm
<ygrek> check module in toplevel
<ygrek> and show the real error message
<ygrek> "unbound module llvm" cannot be true because module names start from capital letter
MrScout has quit [Quit: Leaving...]
jao has joined #ocaml
<ollehar> ygrek: hi! module is ok in toplevel:
<ollehar> ~/kod/subsetphp$ rlwrap ocaml
<ollehar> OCaml version 4.02.1
<ollehar> # #use "topfind";;
<ollehar> - : unit = ()
<ollehar> - : unit = ()
<ollehar> # #require "llvm";;
<ollehar> /home/olle/.opam/4.02.1/lib/llvm/.: added to search path
<ollehar> /home/olle/.opam/4.02.1/lib/llvm/./llvm.cma: loaded
<ollehar> # open Llvm;;
<ollehar> #
ncthom91 has joined #ocaml
<ollehar> but when compiling with ocamlfind ocamlopt:
<ollehar> Error: Unbound module Llvm
<ollehar> llvm version 3.6
linman8 has joined #ocaml
* jrslepak was never able to get OPAM LLVM to install properly anyway
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<ollehar> a lot of people seems to been having this problem, but none of their solutions work for me right now :P
<theblatte> ollehar: looking at a project that uses llvm, I have -lflags -cc,g++,-cclib,-lffi, don't remember if that's relevant
<ollehar> theblatte: thanks, will try
<jrslepak> FWIW, I don't have -cclib,-lffi there (though I'm using a source build of LLVM instead of the OPAM package)
<Drup> smondet: I don't really understand what you are saying
ncthom91 has quit [Quit: Textual IRC Client: www.textualapp.com]
<Drup> either it was content##message() before, and then it was content##message after, or it was content##message before, and it's content##.message after
<Drup> (and the camlp4_to_js tool does that correctly
<Drup> to_ppx*
swgillespie has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<ygrek> why do you have llvm.cmxa on the command line?
<ygrek> and the file named llvm.ml means module name Llvm - that can conflict with llvm package itself
<ygrek> ollehar, ^
<ollehar> ygrek: just trying things out
<ollehar> will try to rename my own file to something else
swgillespie has joined #ocaml
<ollehar> ygrek: damn, you're right, llvm.ml was the problem ><
<ollehar> thanks you!!
<ollehar> *thank
Denommus has quit [Quit: going home]
Haudegen has quit [Ping timeout: 265 seconds]
<smondet> Drup: yes, I was just saying that in my case, since Jsonp.call returns 'a Js.t the type-checker did not catch my mistake.
linman8 has quit [Ping timeout: 255 seconds]
tennix has joined #ocaml
tennix has quit [Changing host]
tennix has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
grouzen has quit [Ping timeout: 250 seconds]
swgillespie has joined #ocaml
<Drup> smondet: you didn't used the automatic converter ?
Haudegen has joined #ocaml
<smondet> Drup: no, I had done it before you told me it existed
<Drup> fair enough ^^'
tennix has quit [Ping timeout: 265 seconds]
whirm has quit [Quit: WeeChat 1.2]
badkins has quit []
mudri has quit [Quit: Leaving]
rand000 has quit [Quit: leaving]
sp0on has joined #ocaml
nullcatxxx_ has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
sp0on has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
ollehar has quit [Quit: ollehar]
johnf_ has quit [Read error: Connection reset by peer]