gildor changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 3.12.1 http://bit.ly/nNVIVH
hongboz has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-090423]: i've been blurred!]
hongboz has quit [Remote host closed the connection]
munga has quit [Ping timeout: 260 seconds]
mfp has quit [Read error: Connection reset by peer]
madroach has quit [Ping timeout: 265 seconds]
madroach has joined #ocaml
mfp has joined #ocaml
scri has joined #ocaml
scri has quit [Remote host closed the connection]
hongboz has joined #ocaml
mattrepl has joined #ocaml
hongboz has quit [Remote host closed the connection]
maufred has quit [Read error: Operation timed out]
maufred has joined #ocaml
mattrepl has quit [Quit: mattrepl]
emmanuelux has quit [Ping timeout: 246 seconds]
ankit9 has joined #ocaml
Progster has quit [Ping timeout: 245 seconds]
ulfdoz has joined #ocaml
sivoais has quit [Read error: Connection reset by peer]
sivoais has joined #ocaml
ulfdoz has quit [Ping timeout: 245 seconds]
ulfdoz has joined #ocaml
eni has joined #ocaml
ankit9 has quit [Quit: Leaving]
sgnb` is now known as sgnb
ulfdoz has quit [Ping timeout: 246 seconds]
fschwidom has joined #ocaml
Tobu has quit [Ping timeout: 260 seconds]
eni has quit [Ping timeout: 265 seconds]
ankit9 has joined #ocaml
Tobu has joined #ocaml
cago has joined #ocaml
mika1 has joined #ocaml
pango is now known as pangoafk
djcoin has joined #ocaml
Yoric has joined #ocaml
bddn has quit [Quit: No Ping reply in 180 seconds.]
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
Yoric has quit [Ping timeout: 240 seconds]
Tobu has quit [Ping timeout: 272 seconds]
Tobu has joined #ocaml
fschwidom has quit [Ping timeout: 240 seconds]
eikke has joined #ocaml
Tobu_ has joined #ocaml
Tobu has quit [Ping timeout: 260 seconds]
munga has joined #ocaml
Tobu_ has quit [Ping timeout: 260 seconds]
Tobu has joined #ocaml
Tobu has quit [Ping timeout: 260 seconds]
Tobu has joined #ocaml
Cyanure has joined #ocaml
ontologiae has joined #ocaml
Tobu has quit [Ping timeout: 272 seconds]
Tobu has joined #ocaml
ocp has joined #ocaml
Tobu has quit [Read error: Connection reset by peer]
Tobu has joined #ocaml
sepp2k has joined #ocaml
<yezariaely> official ocaml.vim plugin: When I print the type with <LocalLeader>t then it prints the type correctly, but immediately clears the screen and the type is gone. So if I keep pressing the hotkey, I can finally read the type. Anyone knows a better solution for that?
twigmorewelsh has joined #ocaml
Snark has joined #ocaml
dsheets has quit [Ping timeout: 240 seconds]
<fx_> what is an official ocaml.vim plugin?
micro___ has joined #ocaml
micro___ is now known as micro`
eni has joined #ocaml
Chambart has joined #ocaml
ocp has quit [Quit: Leaving.]
ocp1 has joined #ocaml
<yezariaely> fx_ maybe it is not that official. Thought so.
<yezariaely> however, this now redirects to a bitbucket repo
UncleVasya has joined #ocaml
paolooo has joined #ocaml
samposm_ has joined #ocaml
jonafan_ has joined #ocaml
samposm has quit [Ping timeout: 240 seconds]
jonafan has quit [Ping timeout: 240 seconds]
Sablier has quit [Ping timeout: 240 seconds]
strlen has quit [Ping timeout: 240 seconds]
Derander has quit [Ping timeout: 240 seconds]
pou has quit [Ping timeout: 240 seconds]
pou_ has joined #ocaml
Sablier has joined #ocaml
strlen has joined #ocaml
<fx_> yezariaely, I am using that plugin and it works ok
<fx_> but ftplugin, not indent
Derander has joined #ocaml
samposm_ is now known as samposm
osa1 has joined #ocaml
<yezariaely> fx_: maybe there is a conflict with another plugin. I refer to the ftplugin. So you press \t and it shows you the type of the expression in the status line
ontologiae has quit [Read error: Connection reset by peer]
<yezariaely> ?
<fx_> yes
<fx_> try upgrading vim
ontologiae has joined #ocaml
<yezariaely> this is already the newest one :/
<yezariaely> what plugins do you use?
<yezariaely> can you paste your version of ocaml.vim? maybe there is something differnet?
<fx_> mine is probably different because I didn't update it for long and it has some local mods, but nothing to do with \t handling
ontologiae has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
eikke has quit [Ping timeout: 260 seconds]
eni has quit [Ping timeout: 246 seconds]
Yoric has joined #ocaml
fschwidom has joined #ocaml
ontologi1e has joined #ocaml
ontologiae has quit [Read error: Connection reset by peer]
tib has joined #ocaml
bddn has joined #ocaml
Anarchos has joined #ocaml
dsheets has joined #ocaml
dsheets has quit [Ping timeout: 244 seconds]
ontologiae has joined #ocaml
ontologi1e has quit [Read error: Connection reset by peer]
eni has joined #ocaml
eikke has joined #ocaml
Progster has joined #ocaml
ontologiae has quit [Ping timeout: 244 seconds]
_andre has joined #ocaml
tib has quit [Quit: Quitte]
osa1 has quit [Ping timeout: 268 seconds]
<yezariaely> I have a vsplitted screen. Can I easily switch to a horizontal split?
<yezariaely> If yes, how?
ontologiae has joined #ocaml
osa1 has joined #ocaml
ontologiae has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
BiDOrD has quit [Read error: Operation timed out]
eni has quit [Read error: No route to host]
eni has joined #ocaml
Kakadu has joined #ocaml
<Harzilein> is there any nice example for interaction between several inputs/outputs through lwp?
<Harzilein> basically what i'm trying to do is extend the echo server so i can enumerate client connections in a readline ui and send stuff out to them
<Harzilein> s/echo server/& example/
eni has quit [Ping timeout: 256 seconds]
<Harzilein> s/lwp/lwt/
UncleVasya has quit [Ping timeout: 260 seconds]
Anarchos has quit [Quit: back to real life instead of programming in MMIX]
munga has quit [Remote host closed the connection]
<Harzilein> (i asked this in #ocsigen as well btw)
wtetzner has quit [Remote host closed the connection]
Kakadu_ has joined #ocaml
Kakadu has quit [Ping timeout: 260 seconds]
osa1 has quit [Ping timeout: 264 seconds]
<_andre> i have my code in src/ and i'm writing a test program in test/ for one of the modules of the application
<_andre> is there a way to make oasis find the module?
<_andre> the code in src/ is not a library, so there's no findlib name for it
<Harzilein> oh, sorry, someone in #ocsigen pointed out there'Ãs no echo server example in lwt, what i meant was an example in ocaml-lwip :/
<Harzilein> as i guess that's too exotic to ask much about, i basically want to find out first how i can enumerate the other running threads.
<hcarty> Harzilein: utop or one of it's libraries may have something you can use as a reference
<Harzilein> hcarty: i'll have a look, thanks
<hcarty> Harzilein: One of its dependencies that is
<Harzilein> uhm, what should i look for in the dependencies?
<hcarty> Something related to Lwt? :-)
<Harzilein> or what part of its code would use it
<flux> harzilein, curious project, what are you going to use it for?
<hcarty> flux: It took me a lot longer to get to than I had hoped, but ZMQ is now updated in oasis-db/odb. Which is nice because it means that lwt-zmq is installable again :-)
<flux> hcarty, great :)
<flux> I ended up not needing ZMQ at the moment though :). but it looks quite interesting, should I need to have a system with tons of connections..
<flux> what I ended up with was a stomp server. well, where I currently am at least..
eni has joined #ocaml
<flux> I wonder how big a minimal ipv6 (only) stack would be..
osa1 has joined #ocaml
<hcarty> Harzilein: I haven't read the utop code but I know it uses Lwt to parse input for display and supporting context-sensitive completion in the toplevel.
<Harzilein> flux: the openconnect manpage has long proposed a userspace handler for its ethernet output and i found it sad that such a thing does not seem to exist yet: −S,−−script−tun: Pass traffic to ’script’ program over a UNIX socket, instead of to a kernel tun/tap device. This allows the VPN IP traffic to be handled entirely in userspace, for example by a program which uses lwIP to provide SOCKS access into the VPN.
<Harzilein> flux: so i want to make a nice interface that allows to bind/unbind port forwarders
<Harzilein> and it would be nice if one could drop individual connections too
<flux> harzilein, sounds like a good project!
<flux> harzilein, do you plan on releasing early?-)
<Harzilein> flux: i plan on learning ocaml while dping it, so i guess i won't have something to show for quite a while
<Harzilein> doing*Ã
<flux> it would probably work with ssh tunneling as well
<flux> well, actually not sure if it would be of any benefit :)
<Harzilein> nah, ssh tunneling is on the application layer, while anyconnect forwards layer 2
<flux> a tool for easily setting up iptables rules would be more prudent
<Harzilein> it's so i can connect to my uni's vpn from unprivileged accounts
<Harzilein> for this particular case (getting a main campus address instead of one from my department) there's no ssh alternative
<flux> harzilein, btw, are you familiar with the pre-historic tool called slirp?
<Harzilein> flux: yes. i looked at its code. i don't want to hack on it ;)
<Harzilein> flux: implementing socks inside it would be hard i think
<flux> hacking 20 years old C code can be daunting :)
<Harzilein> flux: for example they set the endpoint for port forwardings when the forwarding is set up, no easy way to make it dynamic
UncleVasya has joined #ocaml
<Harzilein> flux: there's an allegedly easier codebase derived from it based on lwipv6 instead of 4.4bsd, but i don't like lwipv6 as it enforces native threads.
<flux> harzilein, quite a strange requirement for an ip stack..
<flux> it should basically be a state machine, right?
<Harzilein> yeah. maybe it's about timers and handling the tap device.
<flux> but its main target is embedded machines.. first you get to implement threads on it, then the actual app. seems quite a waste.
<flux> hopefully it atleast has made developing lwipv6 easier :)
<Harzilein> lwip is for embedded, lwipv6 is for simulation and educational use
<flux> ah, ok
<Harzilein> as in "academic" use. i think academic use correlates slightly with frivolous use of threads ;)
Kakadu_ has quit [Quit: Leaving]
paolooo has quit [Quit: Page closed]
paolooo has joined #ocaml
ankit9 has quit [Quit: Leaving]
<Harzilein> hmm
<Harzilein> let conns = Array.make 0 None gives me
<Harzilein> Error: The type of this expression, '_a option array,
<Harzilein> contains type variables that cannot be generalized
<Harzilein> do i need to make a type annotation?
hongboz has joined #ocaml
Anarchos has joined #ocaml
<Yoric> Harzilein: Basically, yes.
<Yoric> Your declaration is actually not precise enough that OCaml can determine automatically the type of |conns|.
<flux> harzilein, well, if you make use of the 'conns' at some point elsewhere in the module, it'll turn out ok
<flux> harzilein, alternatively you may create an interface file that doesn't export conns
<flux> for example, in the case of the main module that isn't used from other modules, an empty .mli-file will do
Submarine has joined #ocaml
<Harzilein> oh?
<Harzilein> nice, that worked :)
<flux> harzilein, btw, explicitly 0-element arrays are useles.. an array cannot be resized :)
<Harzilein> so no mutable arrays for me?
mattrepl has joined #ocaml
<Harzilein> oh wait, they are mutable, but cannot be resized?
<thelema> Harzilein: BatVect is a good choice, there's other solutions as well
<flux> the typical data structure for an ocaml program would be a list, in this case a list packaged inside a mutable record. you could make your array dereferenced as well with let conns = ref (Array.make ..) in
<flux> advanced level: don't use mutable data structures at all ;)
<Harzilein> i guess if performance is not important i could just assign the array to a ref, right?
<Harzilein> ah, right
<flux> harzilein, btw, are you planning on indexing the structure by certain index numbers?
<thelema> although batvect is immutable, so you'll still have to use refs to vect.t
<Harzilein> flux: yes
<flux> harzilein, never mind then, carry on :). (of course, there's Map for efficiently expressing object->object-mappings in a functional fashion, but you can get to it later ;))
Cyanure has quit [Remote host closed the connection]
<Harzilein> thats my beef with example code in some libraries btw, they seem to be chosen as to not require "ugly" solutions ;)
<Harzilein> so it's not always clear a non-ugly solution exists
<Harzilein> i guess i'll go with an array ref for now and see how it turns out
<Harzilein> hmm
<Harzilein> the scope of "in" in this expression:
<Harzilein> lwt buf = TCP.read pcb in
<Harzilein> lwt wr = TCP.write pcb buf in
<Harzilein> g ();
<Harzilein> does not extend past the ;, right?
<Harzilein> i could not write conns <- Array.append conns Array.of_list (Some pcb)?
<Harzilein> (after it i mean)
<Harzilein> should i just stick another in after the g ();?
<flux> well.. do you make use of ;; ?
<Harzilein> uh?
<flux> to answer your question: it does extend past the ;
<Harzilein> oh, btw, i guess it should be Array.append conns Array.of_list [Some pcb], i guess just appending an element is not possible?
<flux> and ; is a separator, not an terminator
<flux> harzilein, correct
<flux> harzilein, do you make use of the interactive toplevel?
<Harzilein> yes
<flux> well, there you terminate everything with ;;
<thelema> Array.append conns [|Some pcb|]
<flux> do you use that in code as well?
<Harzilein> no
<flux> well, great, as it's not required at all :)
<Harzilein> thelema: thanks :)
<flux> harzilein, Array.append takes two arrays, appends them together, and returns a new array
<flux> so your code probably looks like: conns := Array.append !conns [|Some pcb|]
<Harzilein> oh, it was :=, not <-
<flux> := is actually an operator that does leftside.contents <- rightside
<Harzilein> and i totally forgot about dereferencing conns
<Harzilein> heh, the appending was easy... now i remember i need to remove the respective pcb on connection close -.-
<flux> harzilein, do you use Batteries?
<thelema> let array_append arr x = arr := Array.append !arr [|x|]
<thelema> but this code will have quadratic complexity if you append many many elements
<Harzilein> flux: so far i don't
<flux> harzilein, well, I should tell you that its Array module has some functions such as filter and filteri that might be useful for you. of course, writing them is half the fun?-)
<Harzilein> flux: well, regarding the "fun" of writing conventient stuff missing in the standard library ocaml sometimes makes me think of forth ;)
<flux> harzilein, then perhaps Batteries is for you :)
<Harzilein> what's the relation between ocamlcore and batteries?
<flux> none
<flux> batteries builds on an older standard library replacement called extlib
<flux> ocamlcore is janestreet's originally internal standard library replacement
<flux> I don't know, but I think ocamlcore maybe applies some philosophy about, say, arguments orders more consistently than extlib/batteries
<flux> but on the other hand extlib/batteries build more on the ocaml standard library (with its quirks..)
<flux> someone can chime in if this is an inaccurate representation of the situation :)
<flux> also I think batteries was probably publically available before janestreet's core was
<Harzilein> hm, builds more on the standard library is a plus in my book, when i first read about batteries i imagined a kitchen sink...
<flux> I think it's likely that has core been published earlier, there might not be batteries. but batteries is great :)
<Yoric> Thanks :)
<Yoric> (well, I haven't contributed to Batteries in ages)
<flux> yoric, do you think you would have started it had janestreet's core been out?-)
<Yoric> Probably not.
osa1 has quit [Ping timeout: 264 seconds]
<Harzilein> apt-get install ocaml-batteries-included says it wants to put another 64M on my system :/
<Harzilein> oh well, i guess if c++ people use boost, i can use batteries ;)
<hongboz> Harzilein: yes, it's quite big, that's why I just copy some files from it
<Harzilein> hongboz: heh, that's the forth approach of adding "things i consider standard" with your code ;)
<Harzilein> are the array enhancements in extlib as well? debian seems to still have it
<flux> some of them are there no doubt
<flux> it is still being maintained, at least as to keep it compiling with recent ocaml versions, probably not otherwise..
<Harzilein> does ocsigen use batteries?
<Harzilein> there's some CPAN like thing i could use to find that out, right?
<flux> I don't think ocsigen uses batteries..
<flux> apt-cache showpkg maybe :)
<flux> actually if I were to write a library actually for others to use, I might steer away from such a big dependency. sadly..
<flux> but with applications I don't mind :)
<Harzilein> well, my code is in main right now and i guess it'd need a different approach (for example regarding complexity of recreating arrays) if used as general purpose code anyway
<hcarty> If installing Batteries pulls 64 megbytes down then it sounds like there may be some dependency bloat in the Debian packages...
<hcarty> *megabytes
<Harzilein> it pulls 15 megabytes that install to 64
<hcarty> Is that just for the Batteries package? Or other dependencies as well?
<Harzilein> and i was explicitely going after the metapackage which also includes camomile
<flux> libbatteries-ocaml-dev package itself is 22 megabytes
<hcarty> Wow
hkBst has quit [Quit: Konversation terminated!]
<flux> it doesn't seem it has that much excess in it
<flux> batteries.cma is 4 megabytes, batteries_uni.cma 3.4 M, it builds up pretty fast..
<hcarty> 27 megabytes here in the installed Batteries tree from odb, so I guess I shouldn't be so shocked.
<flux> so when do we get dynamic linking with proper support for backwards compatibility regarding interfaces?-)
<Harzilein> ah, forgot about it having to deliver both cma and cmx
<Harzilein> i guess 32M is reasonable, again, if compared to boost ;)
ssbr- has quit [Quit: Missingno, I choose you! ... wait, no, shi-]
<Harzilein> okay, got my shiny new batteries, now to look for the battery receptacle ;)
UncleVasya has quit [Quit: UncleVasya]
mika1 has quit [Quit: Leaving.]
<Harzilein> is using lwt with batteries a strange combo?
<Harzilein> ah, i guess i want to use Batteries_uni
cago has quit [*.net *.split]
Obfuscate has quit [*.net *.split]
yezariaely has quit [*.net *.split]
patronus has quit [*.net *.split]
hcarty has quit [*.net *.split]
jonathandav__ has quit [*.net *.split]
<Harzilein> ah, so i write module Array = BatArray
Obfuscate has joined #ocaml
yezariaely has joined #ocaml
patronus has joined #ocaml
hcarty has joined #ocaml
jonathandav__ has joined #ocaml
<Harzilein> hm
<Harzilein> no, that does not seem to work :/
eikke has quit [Ping timeout: 244 seconds]
jonafan_ is now known as jonafan
<Harzilein> with this http://paste.debian.net/186646 i get:
<Harzilein> Error: This function is applied to too many arguments; maybe you forgot a `;'
ontologiae has quit [Read error: Connection reset by peer]
<Harzilein> oh
<Harzilein> argh, i indeed forgot a ; -.-
<Anarchos> Harzilein it happens...
hongboz has quit [Remote host closed the connection]
ontologiae has joined #ocaml
osa1 has joined #ocaml
<Harzilein> hmm...
UncleVasya has joined #ocaml
<Harzilein> i either get Unbound value Array.make with module Array = BatArray or i get a Reference to undefined global `Batteries' when linking while using module Array = Batteries.Array :/
<flux> harzilein, there are two solutions to this problem..
<flux> harzilein, either you pass -thread while compiling, or you use Batteries_uni instead of Batteries
<Harzilein> ah!
ontologi1e has joined #ocaml
ontologiae has quit [Read error: Connection reset by peer]
<Harzilein> could i omit the braces in
<Harzilein> with TCP.Connection_closed -> (print_endline "process_connection: closed"; return ())
<Harzilein> by putting a newline behind the ->?
<flux> hmm
<flux> yes you can
<flux> although the newline has nothing to do with it
ftrvxmtrx has joined #ocaml
<Harzilein> i don't trust vim's ocaml indentation at all :/
tane has joined #ocaml
<Harzilein> sigh, guess i have to write some c code to check two pcbs for equality
<Harzilein> or does something exist that would let me compare the pointers?
mart has quit [Ping timeout: 245 seconds]
<Harzilein> hm, maybe just pretending = works and looking at the output will give me a clue
mart has joined #ocaml
mart has quit [Client Quit]
<Harzilein> hmm
<Harzilein> it did not complain
tib has joined #ocaml
tib has quit [Client Quit]
<thelema> Harzilein: use == for pointer equality
<Harzilein> oh, thanks :)
ftrvxmtrx has quit [Ping timeout: 256 seconds]
ftrvxmtrx has joined #ocaml
sepp2k1 has joined #ocaml
sepp2k has quit [Ping timeout: 264 seconds]
<Harzilein> hmm
<Harzilein> http://paste.debian.net/186664 the pcb does not get removed on connection close :/
<thelema> you probably don't need Pervasives.(==); (==) should suffice.
<thelema> Is there a reason you're using an array of options?
willb has quit [Ping timeout: 244 seconds]
<Harzilein> i guess not, what i really wanted was an array that returns options
<thelema> why an array, even? I don't see you accessing things by location
<Harzilein> so when a connection disappears between looking it up and, say, inspecting it, it'd just return None
<Harzilein> i will later
<thelema> okay...
<Harzilein> currently i only count the connections no matter what happens, later i want to add commands to inspect a connection
<Harzilein> s/what happens/what gets entered/
<thelema> I think you're using filter backwards
<Harzilein> argh, yes
<thelema> your predicate says what stays, not what gets removed
<Harzilein> indeed
<thelema> Instead of filtering on every close; maybe better to filter every n seconds and just set to null on close
<thelema> hmm, you can't set to null on close because of how your pooling is going...
<thelema> because the pooling index isn't available to process_connection
eni has quit [Ping timeout: 244 seconds]
<thelema> oh well, have fun
<Harzilein> i will, i really appreciate the hand holding you gave me :)
Chambart has quit [Ping timeout: 246 seconds]
ontologi1e has quit [Ping timeout: 252 seconds]
<Harzilein> process_connection: closed
<Harzilein> 0
<Harzilein> yay :)
<Harzilein> i'll look into BatArray.Cap.Exceptionless :)
willb has joined #ocaml
Yoric has quit [Ping timeout: 252 seconds]
<thelema> you probably don't need the Cap part, but yes, exceptionless is related to what you want in terms of getting an option out of an array
<Harzilein> hmm... also i think i used an option because i liked to write None when initializing the array
<thelema> Harzilein: yes, you do need a value for initializing an array.
<Harzilein> :/
<thelema> what some people do is wrap the array in the option, so you have an array option ref
<thelema> meaning that the whole array is optional, and you could have None or Some [|... |]
osa1 has quit [Read error: Connection reset by peer]
ftrvxmtrx has quit [Ping timeout: 264 seconds]
<Harzilein> *sigh*, the syntax is getting hairy
<Harzilein> results in
<Harzilein> File "main.ml", line 61, characters 4-20:
<Harzilein> Error: This expression has type unit Lwt.t
<Harzilein> but an expression was expected of type unit
<Harzilein> also i don't know how to make a no-op for the None match to get rid of the warning about the match not being exhaustive
<Qrntz> | None -> ()
<Harzilein> but won't i need another ; outside the match to eat it up?
<thelema> Harzilein: or () around match
<thelema> (match !conns with Some c -> ... | None -> () ); return ()
<Harzilein> it the "this expression" in the error referring to the part before the in or that after?
<thelema> after
<thelema> the expression is literally what's identified by the error; line 61, characters 4-20
<Harzilein> character 4 is a blank, actually
<thelema> That whole thing is a single expression, and for some reason it's being used as both `unit Lwt.t` and `unit`
<Harzilein> vim was eating the "-20" bit
<thelema> columns are counted starting at 0
<Harzilein> i can't actually imagine a unit Lwt.t. unit -> Lwt.t yes...
<thelema> type +'a t: The type of threads returning a result of type 'a.
<thelema> Lwt threads can return a value
<Harzilein> oh, right, hmm...
<thelema> ah, the problem is a () problem with the match on line 42
<thelema> line 47 is part of the | Some theconns -> branch on line 45
<thelema> opposite what your indenting implies
<thelema> ; doesn't end a match
willb has quit [Ping timeout: 245 seconds]
<thelema> solutions: make a function to append to an array option ref
<thelema> or use () around lines 42-46
<Harzilein> should i omit the ; in the function?
jave_ has quit [Read error: Connection reset by peer]
<thelema> you should omit the ; on line 44
<thelema> and move the one on line 46 after the ), if you go that route
<thelema> ; isn't a "statement terminator" as in many languages, it's an expression-chainer
<thelema> more like , in C
jave has joined #ocaml
dsheets has joined #ocaml
willb has joined #ocaml
Yoric has joined #ocaml
<Harzilein> is there some short way to combine is_our_pcb with not? it became quite a misnomer when i had to change == to !=
ocp1 has left #ocaml []
<thelema> let remove_array_element arr x = let i = Array.findi x arr in Array.init (fun j -> if j >= i then arr.(j-1) else arr.(j)) (Array.length arr - 1)
<thelema> argument order untested, probably wrong
<thelema> to answer your question more directly, (is_our_pcb |- not)
<Harzilein> woo, that looks fancy :D
<Qrntz> by the way, sorry if this question was answered before, but what's INRIA's stance on inlining functions passed as arguments to HOFs?
<thelema> Qrntz: they won't write a more advanced inlining routine for the compiler, but would be happy for one to be contributed
<Qrntz> oh, that's something. thanks.
Ptival has joined #ocaml
djcoin has quit [Quit: WeeChat 0.3.2]
Chambart has joined #ocaml
<thelema> Qrntz: iirc, ocamlpro has done some work on the inliner
<thelema> anyone who would come
<thelema> up with a GHC-quality function inliner would be welcome like the Messiah." - Xavier Leroy
Chambart has quit [Ping timeout: 264 seconds]
tane has quit [Quit: Verlassend]
<Qrntz> thelema, compiler programming has always been a kind of black wizardry to me, but thanks for the link — I'll make sure to check it out
pangoafk is now known as pango
<wmeyer`> possibly, you could directly look at GHC inliner
eikke has joined #ocaml
eikke has quit [Remote host closed the connection]
Yoric has quit [Ping timeout: 268 seconds]
Yoric has joined #ocaml
<hcarty> thelema: ocaml-re installs nicely under OCaml 4.00.0 from oasis-db. No patching required, thankfully.
<thelema> nice. it's always great when things work out
<thelema> if only we could get all software to use oasis and oasis-db
<hcarty> Indeed.
<wmeyer`> hcarty: BTW: I tested ocamlbrew on ARM, it works (I had minor problems; e.g. the 512MB was not enough to make ocamlopt compilation happy)
<thelema> except the scary "development version" notices...
<Harzilein> so oasis is the caml equivalent to CPAN i was looking for some hours ago?
<hcarty> thelema: ocamlnet is updated as well, thankfully with minimal patching required
<wmeyer`> hcarty: now it's being used in full production that is
<hcarty> wmeyer`: Excellent! I'm glad to hear it :-)
<thelema> Harzilein: it's one thing like cpan, yes
<Harzilein> are oasis projects restricted to those that use ocamlbuild?
<thelema> Harzilein: not at all
<wmeyer`> thelema: odb.ml also works without flaw (no reasons why it should not)
<wmeyer`> hcarty: yes, thanks for it :-)
<thelema> hcarty: hmm, maybe it would have been better to name the library 're'
<hcarty> wmeyer`: I ran into a similar RAM issue on a VM a short while ago.
<thelema> hcarty: instead of 'regexp'
<hcarty> thelema: I agree. Could be a good item for a pull request :-)
<wmeyer`> hcarty: Thanks for ocamlbrew to be clear - it's much easier to setup a working OCaml that way :-)
<thelema> wmeyer`: great. Thanks for the feedback.
<hcarty> wmeyer`: You're welcome, I'm glad it helps
<hcarty> wmeyer`: thelema and gildor wrote the bulk of the tools that drive it. I just got tired of putting everything together by hand and/or going through the GODI boostrap.
<hcarty> GODI is a wonderful tool, but it requires all-GODI packages in order to work best.
<hcarty> thelema: 'odb.ml re' installs ocaml-re, but it's listed as regexp in the oasis-db web viewer
<thelema> hcarty: yes, this is why the name issue.
<thelema> maybe I just need to bother gildor to show the first findlib name instead of the package name in the odb listing
<hcarty> Harzilein: Just a bit of clarification - oasis is a build tool; oasis-db is the CPAN-like system for uploading packages; odb is a command-line client for installing packages which are available from oasis-db
<thelema> from oasis-db and other sources
<hcarty> Harzilein: What thelema said. You can setup local repositories or install from a VCS or the lcoal file system.
<thelema> my latest trick is allowing just a single URL for the tarball or git repo on the command line.
<thelema> it doesn't always work, but when it does... sweet.
<hcarty> match odb.ml with `cool -> "Yep"
tane has joined #ocaml
<hcarty> thelema: That's quite nice
<thelema> it can get deps only from META files at the moment; the _oasis scraper is pretty poor at the moment
<thelema> that said, if oasis created a META file, as it usually does, ... :)
<wmeyer`> thelema: That's (user_friendlines ^ inf), but when it fails is a big hit of disapointement :-D
<wmeyer`> (or just you picked the wrong package)
<hcarty> thelema: Maybe there is a trick possible with one of the toplevel-related modules to load and use oasis-based libraries when available.
<hcarty> thelema: That would likely simplify the _oasis bits and still limit odb's absolute requirements to OCaml + findlib
<thelema> wmeyer`: yes, some people don't package things according to odb's expectations
<thelema> hcarty: what I'd like is to add a tool (or some command-line options to the oasis tool) to query all findlib dependencies from an _oasis file
<thelema> although... maybe I can install oasis and then #require it within the same script...
<thelema> although is it possible to have a conditional #require? I don't think so...
<wmeyer`> thelema: you can use topfind api for this
<hcarty> wmeyer`: That's what I was hoping
<thelema> wmeyer`: I'll have to dig into that to figure it out. (unless someone sends me a patch that does this)
<hcarty> thelema: Are you using findlib for META file parsing?
<hcarty> thelema: For on-demand #require, it looks like this is what you want - http://projects.camlcity.org/projects/dl/findlib-1.3.3/doc/ref-html/lib/Topfind.html
<thelema> hcarty: I'm not, partly because I also parse META.in files that aren't valid META files
<thelema> I didn't write the parser, it was contributed. If someone wants to contribute a better way...
<thelema> hcarty: load_deeply ["oasis"]
<thelema> although now I have to find the right function in oasis to get the deps...
<wmeyer`> thelema: yes, I hacked it some evening <ashamed>, but you accepted my patches
<hcarty> wmeyer`: Having the feature is better than not :-)
<wmeyer`> still it's dodgy but more than nothing
willb has quit [Ping timeout: 252 seconds]
<wmeyer`> hcarty: I agree, in fact you would be surprised how well it works in practice .. :-) Neural network based on regexp engine - sort of....
tane has quit [Quit: Verlassend]
tane has joined #ocaml
willb has joined #ocaml
<thelema> hcarty: nice. now I have to figure out if I can have that code compiled by ... eww, it looks like I'll have to use the ocaml toplevel library to do this...
<thelema> I can't refer to the oasis code if there's no oasis library, as ocaml will give a compile error
<thelema> so I have to have that routine as a string that gets passed to the ocaml toplevel
<hcarty> That sounds unpleasant.
<thelema> agreed.
<thelema> I wonder if there's even a way to do that which works in 3.12 as well as 4.00
<hcarty> The topfind script may have some hints. I think it's the same across both, but I may be wrong.
<wmeyer`> thelema: perhaps, a package that deals just with your requirments would do
<wmeyer`> (separated from odb.ml)
<wmeyer`> I don't know if that solves the general problem, tho
<thelema> I still think the easiest solution is (unfortunately) to interface with oasis by running an executable
<hcarty> thelema: An odb.ml-installable executable, of course!
<thelema> optional dependencies of ocaml executables, even "scripts" like odb.ml, are ... ugly
<thelema> hcarty: of course. as I said earlier, best if it was just part of oasis package
<hcarty> That's heading (dangerously?) into the world of making odb.ml into a 90% solution
<flux> don't worry, you can still leave the email agent out of it
<thelema> the other thing that would be nice for odb is to re-install dependent libraries.
fschwidom has quit [Ping timeout: 245 seconds]
<thelema> flux: thank you, I know that's how all "grown-up" programs evolve
<thelema> and I want odb to stay as the fun kid.
Chambart has joined #ocaml
<wmeyer`> thelema: it was discussed with Gildor, to provide an oasis dry run option, to get these dependencies, now somebody needs to sit down and write it
<thelema> wmeyer`: maybe when oasis is converted to git.
<wmeyer`> perhaps, i did look at it, oasis is huge and complex.
<thelema> yes, I can't say that gildor applied any principle of "do the simplest thing that could possibly work"
<wmeyer`> just initially tried to mock up something up, but i spend more than i though just grepping through
<thelema> that said, oasis' line count is inflated by gildor's programming style, which is almost one token per line
<wmeyer`> good stuff, but not for evening hack like odb :-)
<thelema> maybe he has a much bigger monitor than I.
<wmeyer`> (i suppose that's why odb is lean)
<wmeyer`> or just use it verticaly
<thelema> odb has gotten fatter; it's almost 800 LoC now.
<thelema> and that's pretty dense lines of code.
<thelema> it goes over the 80 character limit regularly
<ousado> thelema: nice license :)
<thelema> ousado: :) thanks
<wmeyer`> thelema: is there free beer clause too for all the contributors? :)
<thelema> wmeyer`: any that I meet in person, sure. I'll be at OUD, so find me and claim your beer.
<wmeyer`> you'd have one already, if you drunk beer :-)
<thelema> :)
<thelema> wmeyer`: you're encouraged to drink a beer in my honor, if you feel inclined.
<wmeyer`> sure :-)
<wmeyer`> i can do
<hcarty> thelema: Have fun at OUD. I asked too late to get a trip funded this year, but hopefully next.
<hcarty> ICFP/CUFP/OUD looks like an interesting mix this year
<Anarchos> hcarty do you think that if i port ocaml to an exotic assembly, it could interest someone ?
<thelema> Anarchos: unlikely.
<hcarty> Anarchos: Anyone with a platform running that exotic assembly and interested in OCaml. Probably not much beyond that.
<Anarchos> hcarty it is the assembly designed by D. Knuth :)
<wmeyer`> Anarchos: D-CPU port would be interesting
<hcarty> There was a port of OCaml to some simple processor.. PIC-8 or something.
<wmeyer`> Anarchos: yes, he is examples from his book are in this assembler, forgot how it's called
<wmeyer`> Anarchos: it's a nice exercice, apart from that there is always bytecode interpreter
<Anarchos> wmeyer` name is MMIX
<wmeyer`> then you have all the architectures supported by gcc for free
<Anarchos> i am writing the interpreter in assembly by hand...
<wmeyer`> Anarchos: right, sorry, weird memory to names
<Anarchos> hcarty yes i remeber the port to PIC-8
<wmeyer`> Anarchos: you could, it's a subser of Forth
<Anarchos> wmeyer` what is a subset of forth ?
<wmeyer`> Anarchos: stack machine
<wmeyer`> Anarchos: actually it's a great language http://en.wikipedia.org/wiki/Forth_(programming_language)
<wmeyer`> so you bootstrap a Forth intepreter
<wmeyer`> and then write a interpreter in Forth
<wmeyer`> Anarchos: very simple to get from asm -> Forth -> Lisp -> ML
<wmeyer`> completly ingoring C compilers, relying *only* on assembler
<Anarchos> wmeyer` oh i write all in assembly for now. In fact it is not so hard
<wmeyer`> yes, that's what you do
<Anarchos> later i plan to do a c compiler in ocaml, targeting mmix (i know there is a gcc port but i want to learn some compiler techniques too)
<wmeyer`> you will end up implementing 80% of Forth
paolooo has quit [Quit: Page closed]
<wmeyer`> Anarchos: maybe you can use Dragon Framework for that ;-) not really ready for anything yet, but I am working.
Yoric has quit [Ping timeout: 246 seconds]
<Anarchos> wmeyer` i read the Dragon, but i find it rather outdated now
_andre has quit [Quit: leaving]
sivoais has quit [Ping timeout: 256 seconds]
<wmeyer`> Anarchos: here you go https://github.com/danmey/DragonKit (advertising myself)
avsm has joined #ocaml
<wmeyer`> Anarchos: still you need to wait a bit for arch to do the backend for mmix
Yoric has joined #ocaml
sivoais has joined #ocaml
<wmeyer`> that's actually what I am working on
<Anarchos> wmeyer` sorry i could'nt find the description of your project
<wmeyer`> Anarchos: true
<wmeyer`> Anarchos: I've not put there anything yet, but will let you know once it's done
<Anarchos> wmeyer` is it an implementation of the dragon book ?
<wmeyer`> Anarchos: no, it's a just a name
<Anarchos> wmeyer` so what it is ?
<wmeyer`> Anarchos: sort of framework to ease pain to develop languages, you can call it compiler framework (like LLVM) because it's not that different
eni has joined #ocaml
Snark has quit [Quit: Quitte]
ontologiae has joined #ocaml
<Anarchos> wmeyer` with CSE, register allocation , tail call optimization and so on ?
eni has quit [Ping timeout: 252 seconds]
<wmeyer`> Anarchos: register allocator is there, rest in progress; current focus is backend generator
ftrvxmtrx has joined #ocaml
<wmeyer`> Anarchos: currently it's bare minimum to JIT compile a simple language, the plan is to generate backends from a DSL
<wmeyer`> once I have the infrastructure we can think about passes
<wmeyer`> and optimisations
<wmeyer`> the most interestint part is not currently on github
eikke has joined #ocaml
<wmeyer`> Arch
<Anarchos> wmeyer` hmmm seems very an ongoing project, i can't rely on that sorry
<Anarchos> wmeyer` but good luck in your programming !
ontologiae has quit [Ping timeout: 248 seconds]
<wmeyer`> Anarchos: thanks
ontologiae has joined #ocaml
ftrvxmtrx has quit [Quit: Leaving]
twigmorewelsh has quit [Ping timeout: 264 seconds]
eni has joined #ocaml
Chambart has quit [Ping timeout: 260 seconds]
UncleVasya has quit [Quit: UncleVasya]
Chambart has joined #ocaml
wmeyer` has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
Pailmaster has joined #ocaml
Pailmaster has left #ocaml []
Yoric has quit [Remote host closed the connection]
Yoric has joined #ocaml
ontologiae has quit [Ping timeout: 240 seconds]
Chambart has quit [Ping timeout: 244 seconds]
eni has quit [Ping timeout: 264 seconds]
tane has quit [Quit: Verlassend]
Yoric has quit [Ping timeout: 244 seconds]
eikke has quit [Ping timeout: 264 seconds]
sepp2k1 has quit [Remote host closed the connection]
xenocons has left #ocaml []
ontologiae has joined #ocaml
emmanuelux has joined #ocaml
ontologiae has quit [Ping timeout: 260 seconds]
osa1 has joined #ocaml
osa1 has quit [Quit: Konversation terminated!]
avsm has quit [Quit: Leaving.]