adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml MOOC http://1149.fr/ocaml-mooc | OCaml 4.02.3 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
lobo has quit [Quit: leaving]
Simn has quit [Quit: Leaving]
tane has quit [Quit: Verlassend]
Stalkr has quit [Read error: Connection reset by peer]
mcmillhj has quit [Quit: leaving]
hunteriam has joined #ocaml
nkhodyunya has joined #ocaml
Ravana has quit [Ping timeout: 240 seconds]
Ravana has joined #ocaml
madroach has quit [Ping timeout: 248 seconds]
madroach has joined #ocaml
kakadu has quit [Remote host closed the connection]
<seangrove> Drup: Have you tested No. under xen?
<Drup> not really ^^'
<seangrove> Drup: I'm seeing this https://gist.github.com/sgrove/7bfb82074b4c623ccead - how's this typically debugged?
<seangrove> And thanks for all the help, feel excited that I have a custom site almost ported over with markdown, etc.
<Drup> I have no idea what Xs_protocole is
<seangrove> Xenstore, looks like
<Drup> Ah
<Drup> then it's probably an issue with one of the "files"
<Drup> how do you load the files ? crunch ?
<seangrove> Let me check. I didn't do anything to create the files - I literally did a git clone && mirage configure --xen && make && sudo xl create -c No.xl
<seangrove> The file point makes sense though, yes
<Drup> I really don't know much about xen, sorry
<seangrove> Heh, no problem
<seangrove> Really appreciate all the help so far, has been great. Feel like I'm ~60% of the way to the goal (still have to get jsoo stuff setup)
<Drup> thanksfully, jsoo is completely orthogonal
<Drup> seangrove: the default seems to be default_kv_ro, that won't work in xen
<Drup> hum, wait
<seangrove> I see direct_kv_ro
<Drup> direct* yes
<Drup> but no, that's not it
<Drup> (direct is transformed into crunch under xen)
aantron has joined #ocaml
nkhodyunya has quit [Quit: Leaving.]
foolishmonkey has quit [Quit: Leaving]
wagle has quit [Remote host closed the connection]
wagle has joined #ocaml
wagle has quit [Remote host closed the connection]
wagle has joined #ocaml
blub has joined #ocaml
ygrek_ has joined #ocaml
pierpa has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
blub has left #ocaml ["bye"]
<Algebr> I'm trying to create a C library out of OCaml and C code and getting this at runtime: Symbol not found: _caml_atom_table
<Algebr> and I'm using this invocation: ocamlopt speak_ocaml.ml do_speak.c -output-obj -o example/do_speak.so
<Algebr>
dsheets has joined #ocaml
dsheets has quit [Ping timeout: 252 seconds]
hunteriam has quit [Quit: Connection closed for inactivity]
<seangrove> Is there a library for parsing html, and injecting html into it? I want to convert my markdown into html (have that working already), then inject it in the right place in my html template
<seangrove> I might have a few different places I want to inject it
<seangrove> aantron: Pretty close! Any thoughts on how I might turn <div>{{ title }}</div> into <div>Hello World</div> using Soup given the right Dict/List/etc.?
<seangrove> I could probably use css selectors when writing the html template
<aantron> yes, use selector div:contains("{{ title }}")
<aantron> i normally use selectors, here is a very simple example doing the kind of thing you are asking for: https://github.com/rleonid/bisect_ppx/blob/master/doc/postprocess.ml
<seangrove> Ah, that might be enough to get by for now
<aantron> this program expects HTML converted by omd on stdin, and does some modifications to it
<seangrove> Oh, nice, thanks
<aantron> if you have issues/suggestions, feel free to ping me
<aantron> one question however, if you already have {{ title }} and similar things in your templates, do you really need to parse the HTML?
<aantron> if you can change the syntax, you could hack together a simple template system using simple string replacement with Buffer.add_substitute: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Buffer.html#VALadd_substitute
<seangrove> aantron: The goal is to eventually support handlebars, so I'll stick with the syntax - but may not need to parse it, you're right. But finding all of the user-supplied holes to fill in the template might be easier with some parsing
<seangrove> I haven't implemented a templating system (even a pre-specified one) before, so just starting with a hackish solution and building up from there
<seangrove> Buffer.add_substitude is super interesting, thanks
<aantron> okay. one thing lambda soup wont do well at the moment is duplicates. if you have <div>{{ title }} {{ title }}</div> you will probably have to serialize the "soup" to a string and parse it, to get a copy for each instance. if you need a sane tree duplication function, let me know and i will add it
<aantron> i think its a good argument in favor of string substitution, however :)
<c-c> yes, why would one need to parse the html?
<seangrove> aantron: Thanks for the installation instructions in the README, those are so often missing. Would be great to have just a few simple copy/pastable there as well
<aantron> seangrove: copy/pastable.. examples? i think your message is missing a noun somewhere :)
<seangrove> examples, yes :)
<seangrove> (the gif is obviously awesome as well though)
<aantron> ok, noted to work them in. thanks
<aantron> currently pulling my hair out over a lower-level parser that lambda soup will then be based on
<aantron> ..parsing HTML is infuriating :)
<seangrove> aantron: I'm very, very grateful that *I* don't have to do it!
<seangrove> Is there a way to replace the innertext of a node?
<aantron> right now, call "clear node; "your text" |> parse |> iter (fun child -> append_child node)" is the closest thing
<aantron> well
<aantron> let me fix that
<aantron> clear node; "your text" |> parse |> iter (append_child node)
<aantron> if you find you need some helper a lot, let me know. i might add it to the API. its hard to guess otherwise what is really useful in terms of convenience methods
<aantron> dang
<aantron> ... parse |> children |> iter ...
shinnya has quit [Ping timeout: 260 seconds]
<Algebr> How can I create an OCaml C library that itself is meant to be used in an shared C library? My issue is that I am needing to call caml_startup but in the shared C library thing I'm using I don't have access to argv. I tried giving caml_startup NULL but that was not a good idea, what exactly does caml_startup absolutely need?
copy` has quit [Quit: Connection closed for inactivity]
axiles has joined #ocaml
antkong has joined #ocaml
<def`> Algebr: at least one string, the program name
struk|desk has joined #ocaml
seangrov` has joined #ocaml
seangrove has quit [Ping timeout: 256 seconds]
abbiya has joined #ocaml
xyh has joined #ocaml
<seangrov`> Hopefully I can get jsoo up and running tonight before crashing
slash^ has joined #ocaml
JacobEdelman has joined #ocaml
<seangrov`> Is there a hello world example in jsoo?
<aantron> you mean the setup? because the program is the same, the output should go to the JS console
<seangrov`> Oh, interesting, didn't realize that. Will give it a try.
<aantron> and if you need to print JS values, see module Firebug. i dont know how it looks with ppx, but in the older camlp4 syntax, it was Firebug.console##log(..anything..)
abbiya has quit [Quit: Leaving]
<seangrov`> Wow, that took next to no effort. Very nice
<seangrov`> I'm curious about the ppx syntax as well, trying to avoid camlp4 (since I don't know it, it adds more flags, and seems to be on the way out)
<aantron> it looks pretty similar. see the bottom row of each inference rule http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js
demonimin has joined #ocaml
struk|desk is now known as struk|desk|away
xyh has quit [Remote host closed the connection]
aantron has quit [Remote host closed the connection]
antkong has quit [Quit: antkong]
antkong has joined #ocaml
antkong has quit [Client Quit]
shinnya has joined #ocaml
manizzle has quit [Ping timeout: 240 seconds]
seangrov` has quit [Ping timeout: 256 seconds]
MercurialAlchemi has joined #ocaml
antkong has joined #ocaml
nuuit has joined #ocaml
yawnt has joined #ocaml
kansi has joined #ocaml
yawnt has quit [Changing host]
yawnt has joined #ocaml
madroach has quit [Quit: Lost terminal]
madroach has joined #ocaml
madroach has quit [Read error: Connection reset by peer]
madroach has joined #ocaml
seangrov` has joined #ocaml
nicoo has quit [Ping timeout: 248 seconds]
FreeBirdLjj has joined #ocaml
ygrek_ has quit [Ping timeout: 272 seconds]
seangrov` has quit [Ping timeout: 256 seconds]
Algebr has quit [Ping timeout: 240 seconds]
Anarchos has joined #ocaml
sz0 has quit [Quit: Connection closed for inactivity]
nicoo has joined #ocaml
tane has joined #ocaml
Simn has joined #ocaml
JacobEdelman has quit [Quit: Connection closed for inactivity]
seangrov` has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
ggole has joined #ocaml
silver has joined #ocaml
Haudegen has quit [Ping timeout: 240 seconds]
antkong has quit [Quit: antkong]
darkf has joined #ocaml
Haudegen has joined #ocaml
seangrov` has joined #ocaml
orbifx has joined #ocaml
copy` has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
struk|desk|away is now known as struk|desk
thegameg has quit [Quit: Bye bye.]
Stalkr has joined #ocaml
antkong has joined #ocaml
struk|desk is now known as struk|desk|away
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
<zozozo> when using ocamlbuild, will _tags file in sub-directories (so different from the one from where ocamlbuild is called) be considered or or ignored ?
FreeBirdLjj has quit [Ping timeout: 272 seconds]
<zozozo> nevermind, just read the manual and the answer was there, :p
antkong has quit [Quit: antkong]
seangrov` has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
nkhodyunya has joined #ocaml
foolishmonkey has joined #ocaml
Stalkr has quit [Ping timeout: 248 seconds]
Anarchos has joined #ocaml
seangrov` has joined #ocaml
Haudegen has quit [Ping timeout: 240 seconds]
seangrov` has quit [Ping timeout: 256 seconds]
nkhodyunya has quit [Quit: Leaving.]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 276 seconds]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
Haudegen has joined #ocaml
silver has quit [Quit: rakede]
struk|desk|away is now known as struk|desk
petercommand has quit [Changing host]
petercommand has joined #ocaml
sgnb has quit [Remote host closed the connection]
sgnb has joined #ocaml
pierpa has joined #ocaml
seangrov` has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
struk|desk is now known as struk|desk|away
<pierpa> found two bugs in RWO :)
<Anarchos> pierpa WHAT IS rwo ,
<Anarchos> ?
<pierpa> Real World Ocaml
<pierpa> in 2014. So the book is abandoned
FreeBirdLjj has joined #ocaml
copy` has quit [Quit: Connection closed for inactivity]
lobo has joined #ocaml
<def`> pierpa: no second edition is being worked on
<pierpa> but they could look at the bug reports
octachron has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 245 seconds]
seangrov` has joined #ocaml
Haudegen has quit [Ping timeout: 250 seconds]
lokien_ has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
copy` has joined #ocaml
Haudegen has joined #ocaml
aantron has joined #ocaml
Nairwolf has joined #ocaml
<sspi> how do I use opam switch?
<sspi> I'm trying to use ocaml + multicore + effect - but once I switch I get errors
<aantron> what errors do you get?
<sspi> for example: ocp-indent: no such file or directory
nkhodyunya has joined #ocaml
<aantron> you have to install ocp-indent separately in that switch
<aantron> (and separately in every switch)
<sspi> ah do you get like completely "new" environment? so you have to opam install everything again?
<aantron> yes, basically
<sspi> ah okay, thanks for clarifying! :)
<ggole> There's a way (that I always forget) to install everything in a new switch
<sspi> ggole: do tell :)
<Nairwolf> hi guys, beginner here, I'm writing some basic ocaml code in a file. I wonder if I need to have an entry point to the program (as a "main" function in C)
<aantron> Nairwolf: no, in every file you can have something like "let () = print_endline "hi""
<aantron> to an approximation, top-level values that aren't functions will get executed on startup
<sspi> ggole: tnx!
<Nairwolf> aantron: okay, so I have defined some function, i can use at the end something like that ? "let () = my_foo(arg)" ?
<aantron> yes, exactly :)
<Nairwolf> okay, thank you
<aantron> to be more precise, every top-level expression gets evaluated at startup, some just happen to produce functions without causing side-effects
<octachron> aantron, toplevel expressions producing functions? Do you mean let bindings?
<Nairwolf> hum, I see
<Nairwolf> the order of top-level expression matters ?
<aantron> yes, it matters
<Nairwolf> oh !
<aantron> octachron: yes, the expression in the let binding. a top-level let binding is not itself an expression, unlike let...in...
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
<sspi> seems too much is breaking with my opam switch :-/
FreeBirdLjj has joined #ocaml
silver has joined #ocaml
demus has joined #ocaml
sh0t has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 240 seconds]
seangrov` has joined #ocaml
seangrov` has quit [Ping timeout: 256 seconds]
orbifx has quit [Ping timeout: 240 seconds]
Mercuria1Alchemi has joined #ocaml
orbifx has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 240 seconds]
MercurialAlchemi has joined #ocaml
orbifx has quit [Ping timeout: 240 seconds]
cnu- has quit [Ping timeout: 240 seconds]
Mercuria1Alchemi has quit [Ping timeout: 250 seconds]
cnu- has joined #ocaml
shinnya has quit [Ping timeout: 248 seconds]
struk|desk|away is now known as struk|desk
seangrov` has joined #ocaml
malc_ has joined #ocaml
kansi has quit [Ping timeout: 248 seconds]
Anarchos has joined #ocaml
antkong has joined #ocaml
struk|desk is now known as struk|desk|away
antkong_ has joined #ocaml
malc_ has quit [Quit: leaving]
DubiousCarrot has joined #ocaml
struk|desk|away is now known as struk|desk
lokien_ has quit [Quit: Connection closed for inactivity]
<fds> It would be nice if they corrected mistakes in the online version of RWO and future printings.
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
<pierpa> they don't even acknowledge them
* fds nudges yminsky.
<yminsky> Sigh.
<yminsky> Most of the complaints are about failures of compilation. I have a lot of work done towards doing a completely revised version, but for various reasons it has been delayed.
<yminsky> Once it's out, the new version will mostly use Core_kernel (instead of Core, hence more portable), everything should build cleanly and we should be able to keep it up to date pretty easily. This shouldn't be too hard, but we also need to move it to PPX, now that the world has largely moved on from camlp4.
dhil has joined #ocaml
<yminsky> I'm hoping to get it out this year. But I too am sad about the delays.
<pierpa> yminsky: btw, the one I spotted is: let average x y = x + y / 2 :D
<yminsky> Hah!
<pierpa> :)
<fds> Hm, that sounds pretty nice. I hope you're planning to go through the same drafting process so I can contribute this time!
<fds> And may I ask what the delays are?
<yminsky> Basically it's around updating the tooling for running all the samples. There's also a mess around extracting the goop that it was turned into when our nice markdown was converted into docbook for O'Reilly, and then that was edited and fixed further. Our old toolchain didn't work at all at that point, so it had to be reconstructed. And we've all been
<yminsky> pretty busy...
<seangrov`> If I've pinned a package (xenstore in this case) to a local path, how do I trigger a rebuild of that package (from the package I'm working on that depends on it) when I've edited it
<aantron> opam update xenstore && opam upgrade xenstore
<aantron> not strictly sure if you need to do the update first, try it without
<seangrov`> aantron: Didn't need it, just `opam upgrade` worked - thanks!
<seangrov`> That said, it took awhile to recompile.
<aantron> cool, good to know :)
<seangrov`> yminsky: I was pretty shocked you said you didn't want a better REPL - coming from the clojure world, I'm continually struggling to get anything resembling a passing interactive dev experience
<yminsky> For me, Merlin provides most if the instability I want.
<yminsky> Eek.
<aantron> :D
<yminsky> Most of the interactivity I want.
<fds> What an advertisement!
<yminsky> Though it provides some instability too
<seangrov`> hehe
<seangrov`> Merlin is definitely great, but the edit -> recompile -> restart cycle is pretty rough for lots of applications, especially UIs
<seangrov`> I'm used to something close to figwheel - instantly eval a block or even save a file, update the running app without losing state
<seangrov`> Perhaps it's just a function of different domains?
<pierpa> or maybe it's because OCaml is not Lisp or Erlang
<pierpa> this has pros and cons
<seangrov`> pierpa: Not sure about the pros of an exaggerated time-to-results workflow.
<seangrov`> I'm certainly interested in exploring OCaml more, been putting in a lot of time, and will likely launch our next internal service with it, but just somethign I've found difficult. There are plenty of aspects of OCaml to really appreciate though.
<pierpa> you gain a prevedible environment, not depending on the history of your interaction
FreeBirdLjj has joined #ocaml
<seangrov`> pierpa: Oh certainly, yes. That's a lovely thing.
<seangrov`> I'm not clear how the recompile cycle helps with that though, vs e.g. hot-code-loading
<seangrov`> Other than all the tooling expects a full stop-the-world cycle
<pierpa> btw, I'm a lisper and understand your request. It's just a different workflow
<seangrov`> Fair enough - maybe I'll get used to it
<seangrov`> And if I don't, maybe I can improve it for me a bit anyway
<pierpa> btw, are you using the byte code compiler for developing? or native?
<pierpa> byte code is faster and more development friendly
<seangrov`> Native right now to get started (have my Mirage setup 90% of the way finished), will check out bytecode later today
<pierpa> ah, ok. I don't know about Mirage development requirements
<seangrov`> pierpa: If I'm working on e.g. a site in OCaml and I add a new route, the only way to get it to respond to it is to do a full cycle? Or can I somehow use utop/something-cider|slime-ish to eval the new route in?
<pierpa> I don't know. I understand this is annoying
<seangrov`> pierpa: No worries, I'm still learning, just checking if there's an obviously better way.
FreeBirdLjj has quit [Ping timeout: 240 seconds]
struk|desk is now known as struk|desk|away
koshmar has joined #ocaml
ygrek_ has joined #ocaml
<ggole> There's no lisp-style redefinition, no
<ggole> You can provide explicit redefinition points using references, but of course that's clumsy and requires prior planning.
Haudegen has quit [Ping timeout: 245 seconds]
demus has quit [Quit: This computer has gone to sleep]
kakadu has joined #ocaml
demus has joined #ocaml
yawnt has quit [Ping timeout: 245 seconds]
shinnya has joined #ocaml
Haudegen has joined #ocaml
antkong_ has quit [Quit: antkong_]
FreeBirdLjj has joined #ocaml
<seangrov`> Still destroys state on every reload, but I can build a library to hot load the js code, I think https://www.dropbox.com/s/rcvcnto29dkq14k/goma_1.mp4?dl=0
FreeBirdLjj has quit [Ping timeout: 240 seconds]
ggole has quit [Ping timeout: 252 seconds]
<seangrov`> Now onto integrating React.js stuff!
octachron has quit [Ping timeout: 260 seconds]
scrabcakes has joined #ocaml
<scrabcakes> is there a way to write something like "try expr with E -> E else if no error ..."
demus has quit [Quit: This computer has gone to sleep]
yawnt has joined #ocaml
yawnt has quit [Ping timeout: 272 seconds]
<copy`> scrabcakes: match (try Some expr with E -> None) with | Some x -> … | None -> …
keto has joined #ocaml
keto has quit [Client Quit]
<zozozo> scrabcakes: since 4.02.3, you can do : 'match expr with exception E -> | x -> (* no error, let's continue *) ...'
<copy`> I didn't know that, nice
<seangrov`> How do I get merlin to recognize jsoo's ppx_js syntax?
btsync has joined #ocaml
<copy`> seangrov`: Add the ocamlfind package to .merlin
<seangrov`> copy`: Ok, so just a normal PKG directive, no EXT entry needed?
<copy`> I think so
<seangrov`> Great, I was adding a bunch of stuff under EXT, I'll go back to trying PKG entries
yawnt has joined #ocaml
asm89 has joined #ocaml
yawnt has quit [Ping timeout: 240 seconds]
<asm89> I'm trying to build the sum.ml examle from the realworldocaml book, but I'm getting an error when I use corebuild.
<asm89> > ocamlfind: Package `bin_prot.syntax' not found
<asm89> My google fu is failing me on this one. Any hints for troubleshooting?
<asm89> opam shows that the bin_prot package is installed
<scrabcakes> copy`: cheers. zozozo: ahhhh I tried that but missed the exception keyword and got stuck for like an hour haha. cheers
<aantron> asm89: what happens if you do ocamlfind list | grep bin_prot ?
<btsync> Hi, I have a question regarding an assignment I have. Since it's a homework I just need a hint how I should proceed. I have to implement a parallel List.map function which applys the given function in a single thread for every listelement. I already have the thread creation implemented but my problem is building the resulting list. Since I have to use Event.select on the events my threads are sending I have
<btsync> the question how I am able to assemble the results of my threads in such a way that the resulting list is in the right order. My theory is that I should somehow need to influence the way Event.select works, but I'm not sure if that is possible.
<seangrov`> Right now I'm using this to compile my jsoo stuff: "ocamlfind ocamlc -package js_of_ocaml -syntax camlp4o -package js_of_ocaml.syntax -linkpkg -o client.byte client.ml" - I'd like to drop the camlp4o syntax (if possible) and switch to ppx. Does that require a -syntax flag?
<aantron> seangrov`: i believe not
<asm89> aantron: this is the output: http://pastebin.com/61cxBxW3
<aantron> looks like there has been a name change, can you change it to pa_bin_prot.syntax?
demus has joined #ocaml
<asm89> aantron: can I teach corebuild about that? sorry it's my first time using this tooling
<aantron> asm89: hopefully someone else can help, ive never used corebuild. i dont know if you have files local to your example that you can grep and edit for package dependencies
<Drup> yminsky: for the revision, could you remove the whole "open Core.Std inside .ocamlinit"
<Drup> I stoped counting the number of beginners that are confused about the type of List.map"
<asm89> aantron: I'll poke around, thanks :)
<asm89> confusing though, there is bin_prot, pa_bin_prot and ppx_bin_prot, all from jane street
<asm89> heh, am I running a too fresh of the mill ocaml version? :P
<aantron> yeah, this is due to the ongoing transition from camlp4 (packages often named pa_*) to ppx (packages often names ppx_*)
<vpm_> asm89: I guess it will be in the next core release, but you could build from master meanwhile with opam pin
<yminsky> Bin_prot is the actual library. Pa_bin_prot is the old style (camlp4-based) syntax extension. Ppx_bin_prot is the newer ppx based syntax extension.
<aantron> bin_prot is probably a common runtime module for both
<aantron> listen to yminksy :)
<yminsky> So, yeah, kind of confusing, I admit.
<asm89> vpm_: I applied that patch to `which corebuild` and now I'm fine
haesbaert has joined #ocaml
<yminsky> But the naming is at least consistent. And going forward, there's only ppx for syntax extensions.
<asm89> thanks for the broader explanation as well!
malc_ has joined #ocaml
Algebr has joined #ocaml
<seangrov`> So looking at http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js, I think I should be able to do e.g. Html.window##.my_value - but I get the error that "Error: '##.' is not a valid value identifier."
Algebr is now known as Guest89776
<aantron> first guess is that the extension is not actually being applied
<aantron> what are you building with? tags/ocamlfind command line?
<seangrov`> aantron:
<seangrov`> heh, `ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -o client.byte client.ml`
<aantron> i think you need js_of_ocaml.ppx
<aantron> should be able to drop the .syntax one, that should be camlp4... try it
<seangrov`> So the message above is from emacs/merlin, and the error from that line is: "Parse error: [label] expected after "##" (in [jsmeth])"
<seangrov`> Ok, let me try dropping it..
<seangrov`> Ok, so now emacs/merlin and `ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -linkpkg -o client.byte client.ml` give the same eror: `Error: '##.' is not a valid value identifier.`
<seangrov`> Nice that they agree at least :)
<aantron> you need js_of_ocaml.ppx somewhere in there
<aantron> hehe
mcmillhj has joined #ocaml
<aantron> js_of_ocaml.ppx also automatically pulls in js_of_ocaml, so you may want to drop that.. or maybe not :)
<Drup> .syntax is camlp4, yes
nkhodyunya has quit [Read error: Connection reset by peer]
nkhodyunya1 has joined #ocaml
<seangrov`> aantron: Yup, that did it! Thanks!
<seangrov`> Interesting that to yminsky's point they have ppx_*, and jsoo is *.ppx
<seangrov`> No convention around that yet, I suppose?
<aantron> well, jsoo is using a subpackage
<aantron> but i guess there are multiple conventions, none of which are so strictly followed..
<yminsky> The ppx_ convention is followed by all Jane Street libraries, but I don't think there's a widely accepted convention.
<Drup> seangrov`: ocamlfind package must be in a "hierarchy"
<Drup> so, foo.bar.baz
<Drup> most opam packages are in ppx_*
<aantron> Drup: but this introduces the distinction between an opam package and a findlib package
<Drup> yes it does, and that's not specific to ppx
<aantron> right
sillyotter has joined #ocaml
<aantron> typically if some opam package has a main package and an optional syntax extension, it will be called "foo" in opam, the main findlib package will be "foo", but there will be subpackages like "foo.ppx"
<aantron> whereas if the point of the whole opam package is to be a ppx extension, it will have ppx somewhere in its name, like ppx_
sillyotter has quit [Client Quit]
<seangrov`> aantron: Ok, makes a bit of sense - I'll almost certainly remember that, but good to know what to look for
<aantron> seangrov`, each opam package typically provides one or more findlib (ocamlfind) packages
Anarchos has joined #ocaml
<Drup> seangrov`: about the interactive loop, can't you automate this ?
<Drup> (obuild can build automatically when something changes, iirc)
<seangrov`> Drup: Yeah, to some degree as I did with the js video above. But on the backend, maintaining state will be tough
<Drup> We have a solution for that in ocsigen, but it doesn't port to xen
<Drup> :/
<seangrov`> Drup: Oh sure, not worried about doing it with a xen backend right now, this is almost entirely for dev-time
<seangrov`> Connecting to a live Xen vm would be cool, but I'll leave that for later :)
slash^ has quit [Read error: Connection reset by peer]
<Drup> It basically boils down to "Use a database that has the same API than Hasthbl"
<Drup> which is not very hard
<seangrov`> Hrm, I don't seem to be able to do this: Html.window##.myval - Html.window seems to have a type mismatch
<Drup> that can helps a bit, but still doesn't work in xen
<aantron> seangrov`, i think you will have to show us the message for this one
<seangrov`> Ok, I see the ppx stuff is trying to make sure re: types - pretty cool
<Drup> ah yes, jsoo's syntax extension is typed :]
<yminsky> embarrassingly, I don't know how to enable the various jane-street syntax extensions from within utop. The obvious (#require "ppx_sexp_conv") isn't enough. Anybody know what the correct incantation is?
<Drup> yminsky: that's because of the ppx_core/ppx_deriving interaction
scrabcakes has quit [Ping timeout: 240 seconds]
<yminsky> Ah, interesting.
<demus> could anyone suggest a lib for building GUI app?
DubiousCarrot has quit [Ping timeout: 250 seconds]
<Drup> demus: which plateform ?
<yminsky> Got it. So, #predicates "ppx_driver";; #require "ppx_jane";; seems to do the trick.
<yminsky> And there's hopefully a better solution coming in the next week or two.
<demus> mac os x but i'd prefer cross platform one
<yminsky> Lovely.
<Drup> I'm afraid lablgtk2 doesn't look very native on mac os
<aantron> Drup, Algebr``, said something to the contrary recently. perhaps he will confirm/refresh
<Drup> Algebr`` uses js_of_ocaml + node.js though
<Drup> it works well, apparently
<demus> Drup: it's better to take something like electron from github, right?
<Drup> electron ?
<Drup> No idea
rand has joined #ocaml
rand is now known as rand__
dhil has quit [Ping timeout: 240 seconds]
scrabcakes has joined #ocaml
malc_ has quit [Quit: leaving]
scrabcakes has quit [Remote host closed the connection]
DubiousCarrot has joined #ocaml
rand__ has quit [Quit: leaving]
mcmillhj has quit [Quit: Lost terminal]
rand has joined #ocaml
rand is now known as Guest45571
<seangrov`> demus: I suspect js_of_ocaml + ReactNative will be good for Desktop stuff eventually but it's still very early days on that front
Guest45571 has quit [Client Quit]
rand_ has joined #ocaml
<demus> Drup: seangrov`: thanks
<seangrov`> demus: The ReactNative stuff has a better story for iOS/Android right now, Cocoa (not CocoaTouch) is still experiemntal, just checked
<Drup> demus: if you wait a bit, Algebr`` can give you his experience, it did a lot of work on node.js
<Drup> he*
<seangrov`> Ah, ok, didn't realize Algebr`` was fxfactorial. Good to put a nick to a username.
<Drup> people keep using different nicks !
<sspi> not cool people, not cool
<seangrov`> Hrm, no idea on this `Error: The type of this expression, < displayName : string Js.readonly_prop; render : ('_a -> 'b) Js.readonly_prop > Js.t, contains type variables that cannot be generalized`
<aantron> did you define render? if so, how?
<seangrov`> val render = (fun _ -> react_create_element [| inj @@ jss "div"; inj @@ div_opts; inj @@ jss "Text in div"|])
rand_ has quit [Quit: leaving]
<seangrov`> (working off some example code from another repo, tweaking it as I go)
rand_ has joined #ocaml
<Drup> that looks like such a terrible API o_o
FreeBirdLjj has joined #ocaml
rand_ has quit [Client Quit]
<seangrov`> Drup: Hehe, just building things up, bit by bit, it's not my end goal :)
<seangrov`> Or rather, that's not the finished product
<Drup> Do you have a good reason not to use Tyxml_js ?
<seangrov`> Drup: Using Reactjs is very important for me - I have a lot of experience with it, and wnt to use it.
<Drup> anyway, it's very hard to answer your question without the whole code.
<seangrov`> Drup: No worries, just the first time seeing "x contains type variables that cannot be generalized" error
<Drup> that's very easy to get
<Drup> put "let x = ref None" in a file alone
FreeBirdLjj has quit [Ping timeout: 260 seconds]
<seangrov`> Hrm, intersting!
bugabinga has quit [Remote host closed the connection]
<Drup> seangrov`: what does the basic API for reactjs looks like ?
<seangrov`> Just look at the first CommentBox component example
<seangrov`> (it uses jsx, which mixes html with js, but you should be able to grok it easily enough)
<Drup> I'm not interested by that, I want the no-sugar version, with only the functions in the API
cyraxjoe has quit [K-Lined]
<Drup> I don't want a tutorial :D
bugabinga has joined #ocaml
lokien_ has joined #ocaml
<seangrov`> Drup: Yeah, sorry, just saying that if you search for tutorial1-raw.js there, you'll see a complete example
antkong has joined #ocaml
<Drup> I might be able to do magic for you
<seangrov`> It's React.createClass(js-object with displayname : string and render : fun) keys, and then ReactDom.Render(said class, dom element to render into)
<Drup> how do you update ?
<seangrov`> Ah, that's pretty far above my head right now I think. I was hoping to build up to it.
<seangrov`> Drup, you call render again with new data
<Drup> ok
dsheets has joined #ocaml
dsheets has quit [Remote host closed the connection]
<Drup> How do you feel about statically typing html correctness ?
<seangrov`> I like the idea
<Drup> If you manage to do an API that answer this signature: http://ocsigen.org/tyxml/3.6/api/Xml_sigs.T
dsheets has joined #ocaml
<Drup> then you'll have it :)
<Drup> (the signature is a bit big, but it's actually fairly simple)
antkong has quit [Read error: Connection reset by peer]
MercurialAlchemi has quit [Ping timeout: 260 seconds]
<seangrov`> Baby steps, baby steps. Just trying to get some basic stuff rendering, then I'd like to grow it into a nicer system. That way I can iterate and learn along the way.
<Drup> Sure
Nairwolf has quit [Quit: WeeChat 1.4]
<Guest89776> What was the electron/atom/node question? rereading
Guest89776 is now known as Algebr
rand__ has joined #ocaml
demus has quit [Quit: Leaving]
damason has joined #ocaml
<Algebr> Does opam stuff get symlinked into /usr/local/include as well?
dsheets has quit [Remote host closed the connection]
teknozulu has joined #ocaml
ygrek_ has quit [Ping timeout: 245 seconds]
rand__ has quit [Quit: leaving]
tane has quit [Quit: Verlassend]
struk|desk|away is now known as struk|desk
seangrov` has quit [Ping timeout: 256 seconds]
seangrov` has joined #ocaml
ygrek has joined #ocaml
ygrek_ has joined #ocaml
ygrek has quit [Ping timeout: 272 seconds]
f[x] has joined #ocaml
ygrek_ has quit [Ping timeout: 245 seconds]
Stalkr has joined #ocaml
Stalkr has quit [Ping timeout: 245 seconds]
FreeBirdLjj has joined #ocaml
btsync has quit [Quit: Lost terminal]
aantron has quit [Remote host closed the connection]
f[x] has quit [Ping timeout: 240 seconds]
silver has quit [Quit: rakede]
nkhodyunya1 has quit [Quit: Leaving.]
demonimin has quit [Remote host closed the connection]
Simn has quit [Quit: Leaving]
struk|desk is now known as struk|desk|away
teknozulu has quit [Ping timeout: 276 seconds]
struk|desk|away is now known as struk|desk
FreeBirdLjj has quit [Ping timeout: 245 seconds]
Algebr has quit [Ping timeout: 252 seconds]
ygrek has joined #ocaml
dhil has joined #ocaml