<rgrinberg>
tjscanlon: after doingopen Core.Std;; List.length [1;2;3];;
<tjscanlon>
Thanks!
<rgrinberg>
theblatte: well there was an attempt in pfff IIRC :P
<rgrinberg>
common sense prevailed
<theblatte>
heh
waneck has joined #ocaml
<Drup>
theblatte: you would be surprised of what research do in static analysis.
<rgrinberg>
theblatte: is the infer team in menlo park?
<theblatte>
Drup: I know, most of us come from that background ;)
<theblatte>
rgrinberg: no, we're in london, but have one dev in MPK right now
tnguyen has quit [Quit: tnguyen]
enquora has quit [Quit: enquora]
Kakadu has quit []
ollehar has quit [Read error: Connection reset by peer]
walter|r has quit [Remote host closed the connection]
walter|r has joined #ocaml
The_Mad_Pirate has quit [Quit: Konversation terminated!]
ollehar has joined #ocaml
<Drup>
theblatte: I find it terrifying.
<theblatte>
which part in particular?
AltGr has joined #ocaml
<Drup>
the endless reinvention of compiler front end and ad hoc syntax by each tool "just because"
copycat has joined #ocaml
walter|r has quit [Ping timeout: 264 seconds]
<theblatte>
Drup: I think that's because it's much much harder to build something that can run on actual industry code, and that effort is basically not rewarded at all in academia
<Drup>
yes and no
<theblatte>
so people do toy languages instead
<Drup>
there is also a considerable amount of NIH
<Drup>
there are no less than 3 high quality C parser in the french research
<theblatte>
I think that's because plugging to tools that actually parse the whole of C/Java/whatever is hard work
<theblatte>
ah, those
<Drup>
and a ton of very poor quality ones.
<theblatte>
yes, different issue I guess, I don't know where the story there
<theblatte>
I was talking about the poor ones
<Drup>
I don't think plugging into a C parser is that hard, no.
hasket is now known as haskets
<theblatte>
it is because suddently you have to handle the whole of C, not just the subset that you can easily handle
<tjscanlon>
Style question: When defining a helper method for tale recursion, should that helper method be an inner function of the main method?
<tjscanlon>
Or just a separate method?
<tjscanlon>
main method being the one that should be calle
<tjscanlon>
d
<Drup>
not if you are a researcher that has been working on statically analyzing C code your entire career at least, you can manage the effort.
<theblatte>
the plugging itself is not hard, I agree (although for clang we needed to build our own plugin to emit ocaml data structures)
<Drup>
theblatte: You can still fail on construct you don't handle, that's independent
<Drup>
(and the amount of real code you are handling is a whole different question)
<theblatte>
(heh)
<Drup>
(in this aspect, stuff like the termination competition are a real joke)
<theblatte>
Drup: agreed, that's what could be done, but again it takes more time than writing your own toy language
<Drup>
theblatte: except you don't need to do it again
<theblatte>
well you don't need to convince me :)
<Drup>
I'm ranting
<Drup>
:D
<theblatte>
that's a pet ranting subject of mine too, so all is well ;)
<Drup>
I got very annoyed when people presented me stuff from the termination competition with a bunch of ridiculous undefined behavior in it
<theblatte>
tjscanlon: style is subjective I guess; I usually define such functions as inner functions. plus this way they can reuse variables in scope which is often useful
<Drup>
anyway, my career in the domain was short :D
rgrinberg has quit [Ping timeout: 245 seconds]
<theblatte>
Drup: the classic way to get "random values" in academic static analysis is to begin with an uninitialised variable *twitch*
<Drup>
theblatte: yes, that.
<Drup>
oh, surprise, clang doesn't like that
<theblatte>
neither does infer ;)
<Drup>
well, logically
<theblatte>
(although we turn those off by default for now)
keen___ has quit [Read error: Connection reset by peer]
jonludlam has quit [Ping timeout: 250 seconds]
keen___ has joined #ocaml
swgillespie has joined #ocaml
Denommus has quit [Quit: going home]
mort___ has quit [Quit: Leaving.]
copycat has quit [Quit: copycat]
mort___ has joined #ocaml
mort___ has quit [Client Quit]
mort___ has joined #ocaml
copycat has joined #ocaml
haskets is now known as hasket
mort___ has quit [Client Quit]
mort___ has joined #ocaml
<copycat>
hi, i am a newbie to programming. i made a semi-big application in racket that should be finished soon
<pippijn>
racket as in scheme?
<copycat>
i'll like to learn a new language to write a simple webapp
<copycat>
yea, it was super easy to get started. i could install it out of the box from windows and everything worked
<pippijn>
ocaml is a gazillion times faster than racket
<pippijn>
in case you're into that kind of stuff
<copycat>
no, i dont think i even know what "that kind of stuff" means
<pippijn>
"fast code"
<copycat>
like 6 months back, i didnt even know what an OS was
<pippijn>
alright
struktured has joined #ocaml
<pippijn>
sounds cool
<pippijn>
so what does your application do?
<copycat>
i found the ocaml book and it had chapters on the run time system
<copycat>
i thought that was very cool
rgrinberg has joined #ocaml
<copycat>
i dont really see that kind of stuff in the guides/docs
<copycat>
of other languages*
<copycat>
its just a simple graphical editor
<pippijn>
nice
<pippijn>
you can get that done in ocaml fairly easily, too
<pippijn>
maybe 200 lines of code
<pippijn>
probably less
<copycat>
hah, but i want to do a simple website now :)
<pippijn>
ok, talk to Drup
<copycat>
i can't find anything with ctrl-f "web" on the book's contents, so i was just wondering
<Drup>
saying I transitioned to web framework is a bit weird, since I mostly care about programming languages and type system, and the rest is an accident.
<copycat>
i guess it's cute, but it sounds scary hard
tjscanlon has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Drup>
oh no, it's really
<Drup>
really not*
tjscanlon has joined #ocaml
<copycat>
how do you guys get exposed to these more and more abstract software and programming concepts?
<copycat>
from an essay i read online: "At Viaweb, software included fairly big applications that users talked to directly, programs that those programs used, programs that ran constantly in the background looking for problems, programs that tried to restart things if they broke, programs that ran occasionally to compile statistics or build indexes for searches .... ..... ...."
<copycat>
i have no idea where to even begin or understand how such programs work
<copycat>
i guess what i want to say is a lot of these programming is magic to me and i hope to understand such stuff
<copycat>
and i tohught learning ocaml might be a step towards such understanding
<rgrinberg>
just so i understand, this means shipping a custom curl like utility in binary form with opam?
xificurC has quit [Read error: Connection reset by peer]
xificurC has joined #ocaml
sigjuice has quit [Ping timeout: 265 seconds]
sigjuice has joined #ocaml
copycat has quit [Quit: copycat]
tmtwd has joined #ocaml
sdothum has quit [Ping timeout: 246 seconds]
pyon has quit [Read error: Connection reset by peer]
inf-gropeoid has joined #ocaml
matason has joined #ocaml
<adrien>
why not put the download into a thread? wouldn't that be enough?
<adrien>
plus that should be completely I/O-bound
<adrien>
so no problem even with heavy locking
hasket has joined #ocaml
inf-gropeoid is now known as pyon
nopf has quit [Read error: Connection reset by peer]
vpm has quit [Ping timeout: 264 seconds]
MercurialAlchemi has joined #ocaml
vpm has joined #ocaml
vpm has quit [Ping timeout: 264 seconds]
siddharthv_away is now known as siddharthv
vpm has joined #ocaml
mort___ has quit [Read error: Connection reset by peer]
mort___ has joined #ocaml
hasket has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tmtwd has quit [Quit: Leaving]
oscar_toro has joined #ocaml
waneck has quit [Remote host closed the connection]
scitesy has joined #ocaml
<AltGr>
it's just I'd like to avoid adding threading to the binary, plus we already have a good parallel processes handling.
lyxia has quit [Ping timeout: 252 seconds]
Remyzorg has quit [Ping timeout: 272 seconds]
mort___ has quit [Read error: Connection reset by peer]
mort___1 has joined #ocaml
tmtwd has joined #ocaml
lyxia has joined #ocaml
Remyzorg has joined #ocaml
rgrinberg has quit [Ping timeout: 252 seconds]
A1977494 has joined #ocaml
A1977494 has left #ocaml [#ocaml]
pyon is now known as simplicial-pyon
mort___ has joined #ocaml
stupidjoblessper has joined #ocaml
<stupidjoblessper>
Just looking for advice. How can someone who is almost 30 and never had a job get one? I have been applying(fast food, retail, entry level) just to be told I am not what they are looking for (We have reviewed your application for this position and will be proceeding with other candidates at this time.) or they are not hiring. No interviews. Cannot volunteer as there is no where near too
mort___1 has quit [Read error: Connection reset by peer]
oscar_toro has quit [Ping timeout: 272 seconds]
tmtwd has quit [Quit: Leaving]
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tmtwd has joined #ocaml
Simn has joined #ocaml
Cyanure has joined #ocaml
Cyanure has quit [Remote host closed the connection]
<vincenzoml>
Hi there! I am loading a CSV file representing a very large bi-dimensional matrix of small lists of strings. Bigarrays only accept numeric values so could I ever load such a CSV and how?
<tobiasBora>
smondet: I see... So it's overkill for a program that should run in a few hours I guess
<companion_cube>
they either require to declare types in external files and have some tool generate the code, or annotate the code itself (with camlp4/ppx)
rgrinberg1 has joined #ocaml
rgrinberg has quit [Ping timeout: 246 seconds]
Haudegen has joined #ocaml
rossberg has quit [Ping timeout: 265 seconds]
rgrinberg2 has joined #ocaml
<smondet>
tobiasBora: more hacky but worth mentioning: convert your datastructures to Marshal-friendly ones: list, arrays, records, tuples, variants + basic types
<companion_cube>
also works for json, etc. :)
<companion_cube>
(sound advice, anyway)
rgrinberg1 has quit [Ping timeout: 255 seconds]
rgrinberg2 has quit [Ping timeout: 256 seconds]
xificurC has quit [Quit: WeeChat 1.2]
shinnya has joined #ocaml
enquora has joined #ocaml
rossberg has joined #ocaml
<tobiasBora>
Ok thank you for your advices !
madroach has quit [Read error: Connection reset by peer]
jrmd has joined #ocaml
madroach has joined #ocaml
<tobiasBora>
Sorry to be annoying today, but why can't I find a BigArray.Array2.fill function that takes in argument a *function* ? I'm pretty sure that a loop on Ocaml side would be slower than using a single fill call, no ?
slash^ has joined #ocaml
<companion_cube>
in both cases the function would have to be called on every index?
waneck has joined #ocaml
<tobiasBora>
companion_cube: Yes, but the function needs to be "converted" in Ocaml function -> C function every time no ? (Actually I've never understood how function are coded in memory so maybe I just say bullshit)
<companion_cube>
I don't think all of bigarray is in C
<companion_cube>
oh wait, there is no iter
<companion_cube>
well in that case you probably have to use a loop
<dsheets>
then you don't have to copy as it just maintains cursors into the bigstring
<dsheets>
and there are some iteration-like hofs
badkins has quit [Read error: Connection reset by peer]
<tobiasBora>
companion_cube: Yes indeed there is no iter function, that's why I ask why they didn't write it : is it the same thing to do an ocaml loop than using an iter function ?
rgrinberg2 has joined #ocaml
kdef has quit [Ping timeout: 256 seconds]
<tobiasBora>
dsheets: Nice thank you, it may be usefull.
<tobiasBora>
And it's not possible to perform "classical operations", like *, /,+,-... on a BigArray ? I would like to do the same thing as numpy but in Ocaml (because for the moment, using the * multiplication of numpy is 4 times faster than using an Ocaml loop that fills the array)
octachron has joined #ocaml
Denommus has joined #ocaml
<flux>
does numpy deal with integers?
<octachron>
tobiasBora, you can define your own operations. If you want speed, you probably need to go through a BLAS implementation
Denommus` has joined #ocaml
<tobiasBora>
flux: Yes : float, integer, tuple, and lot's of funny types
ousado has quit [Quit: --]
ousado has joined #ocaml
ousado has quit [Changing host]
ousado has joined #ocaml
Denommus has quit [Ping timeout: 255 seconds]
<flux>
tobiasbora, perhaps you could take a dive and see how nice an API you could write with the implicit modules-branch of OCaml ;-)
<flux>
sadly dimensional types aren't really nice with OCaml yet.
<tobiasBora>
octachron: Not sure to know how to define BLAS implementation. You mean I should use something like that : https://github.com/mmottl/lacaml ?
<tobiasBora>
flux: What is this thing ?
ollehar has joined #ocaml
<octachron>
tobiasBora: or any other blas/lapack binding: A lot of work has been done on these linear algebra implementations in the HPC community
<flux>
numpy itself uses lapack underneath it
<flux>
so it's a proven way to go about it ;)
Denommus` is now known as Denommus
<octachron>
there is no need to reinvent efficient matrix multiplication once again
<flux>
but I must say the lapack ocaml bindings I've tried are not very convenient..
<flux>
at least for my use cases
<flux>
tobiasbora, btw, another super cool idea you should consider so I don't have to ;-) would be to write succinct bindings to the ArrayFire library
<flux>
I don't know how they perform on CPU (though they do have CPU support) but I guess numeric code could fly if you have a GPU..
rgrinberg2 has quit [Ping timeout: 258 seconds]
<tobiasBora>
Hum...
ollehar has quit [Remote host closed the connection]
<flux>
suddenly, even before starting, the scope of the project grew up?-)
<tobiasBora>
With the lacaml library : 5s for ocaml, 3s for python... :-\
MrScout has quit [Read error: Connection reset by peer]
WraithM_ has quit [Ping timeout: 252 seconds]
MrScout has joined #ocaml
badon_ has joined #ocaml
badon has quit [Disconnected by services]
yomimono has left #ocaml ["Leaving"]
badon_ is now known as badon
yomimono has joined #ocaml
badon has quit [Excess Flood]
badon_ has joined #ocaml
badon_ is now known as badon
badon has quit [Excess Flood]
jeffmo has joined #ocaml
badon has joined #ocaml
srenatus has quit [Quit: Connection closed for inactivity]
dsheets has quit [Ping timeout: 245 seconds]
Cyanure has joined #ocaml
MrScout has quit [Ping timeout: 265 seconds]
hasket has joined #ocaml
badon has quit [Disconnected by services]
badon_ has joined #ocaml
djellemah__ has quit [Remote host closed the connection]
jrmd has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
pyon is now known as misanthro-pyon
jprakash has joined #ocaml
7F1AA9MC5 has joined #ocaml
thomasga has quit [Quit: Leaving.]
yomimono has quit [Ping timeout: 245 seconds]
Anarchos has joined #ocaml
TheLemonMan has joined #ocaml
dsheets has joined #ocaml
7F1AA9MC5 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
robink has quit [Ping timeout: 255 seconds]
bezirg has quit [Ping timeout: 256 seconds]
rgrinberg2 is now known as rgrinberg
Palvors has joined #ocaml
sh0t has quit [Ping timeout: 265 seconds]
<Palvors>
hi i have some weird result with (string * int) list .... if I put some negative int in the list and i use List.map to make some code.. that return me positive int.. somebody say why ?
<Palvors>
i I use Emacs .. see my function : let exit_car x y l = List.map (fun ((m,h) : string * int ) ->if m = x then (m,y+h) else (m,h) ) l;;
nullcat has joined #ocaml
<Palvors>
and i call with this : exit_car "DEF456" 7 [ ( "ABC13" , −2); ( "DEF456" , −4); ( "GHI789" , −3 ) ];;
<Palvors>
the result is : - : (string * int) list = [("ABC13", 2); ("DEF456", 11); ("GHI789", 3)]
<Palvors>
anyone see where I make a mistake ?
mcclurmc has joined #ocaml
<paarth>
what is the − symbol? if I change that to - in my repl it works fine.
mk270 has left #ocaml [#ocaml]
badon_ has quit [Ping timeout: 265 seconds]
<Palvors>
it's the result en Emacs ... it's always -: RESULT
<Palvors>
but about my prob in my function.. do you already have this prob with a ( string * int ) list ) .. if you enter a negative int, that return positive int if you apply List.map ?
octachron has joined #ocaml
kushal has quit [Ping timeout: 265 seconds]
Denommus` has joined #ocaml
<paarth>
Palvors, if I run your code I get "Warning 3: deprecated: ISO-Latin1 characters in identifiers"
Denommus has quit [Ping timeout: 245 seconds]
<paarth>
and then "Error: Illegal character (\136) "
<Palvors>
ok
rgrinberg has quit [Ping timeout: 276 seconds]
<Palvors>
so maybe is my version of ocaml you think ?
<Palvors>
i try to run my command in Emacs and that dont make me a warning or error...
<ollehar>
uhm, can I concatenate a string with EOF?
Palvors has quit [Quit: Page closed]
<companion_cube>
EOF? it's not a string
<ollehar>
hm hm hm
<whirm>
hi, is it possible to cross-compile ocaml for arm?
tmtwd has quit [Quit: Leaving]
<Denommus>
how do I express varlist ::= var {',' var} in menhir?
kushal has joined #ocaml
<Denommus>
(I already have the token COMMA)
<Denommus>
(and the type var)
<companion_cube>
there is a sep_list(COMMA, var) or something like this
<companion_cube>
check in the manual, it has special macros for lists
<whirm>
will it work if I modify the configure script to set the correct values instead of trying to run test binaries compiled for arm on an amd64 system, will it work or I'm wasting my time?
<Denommus>
companion_cube: separated_list(COMMA, var) is equivalent to var {COMMA var} or to {COMMA var}?
<companion_cube>
there is also separated_nonempty_list
shinnya has quit [Ping timeout: 246 seconds]
<companion_cube>
it's like var, var, var...
rgrinberg has joined #ocaml
<smondet>
Palvors: are you by any chance using the experimental ocaml branch with UTF-8 identifiers ?
MercurialAlchemi has quit [Remote host closed the connection]
<Denommus>
companion_cube: great, thanks!
MercurialAlchemi has joined #ocaml
<ollehar>
so I read string from file and feed it to xml-light, and it complains no end of file :P
<companion_cube>
isn't it rather about unexpected end of file?
<ollehar>
no, the other way ^^
<ollehar>
Error while parsing XML on line 2: End of file expected
<ollehar>
oh wait
<ollehar>
maybe that's what you ment
<SomeDamnBody>
I'm using oasis to build, and I keep getting these warning messages:
<SomeDamnBody>
W: Cannot get variable ocamlfind
<SomeDamnBody>
(as well as some other errors...)
<ollehar>
is ocamlfind installed?
<companion_cube>
ollehar: it probably means that there is some leftover after the end of XML itself?
shum has joined #ocaml
<companion_cube>
but I suppose xml-light's documentation should mention it
<ollehar>
hm will check
<octachron>
Palvors: this looks like an encoding error: could you be mixing an ISO-8859-1 encoding and a utf-8 encoding somewhere?
sdothum has quit [Ping timeout: 276 seconds]
ygrek has quit [Ping timeout: 256 seconds]
<ollehar>
do'h! was escaping html chars in file, but didn't see in browser of course ><
<ollehar>
another problem solved
mearnsh has quit [Ping timeout: 272 seconds]
mearnsh has joined #ocaml
WraithM_ has joined #ocaml
nullcat has quit [Read error: Connection reset by peer]
nullcat_ has joined #ocaml
ggole has quit []
s1n4 has joined #ocaml
_andre has quit [Quit: leaving]
tane has quit [Quit: Verlassend]
hasket has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<SomeDamnBody>
ollehar, yes
<ollehar>
SomeDamnBody: can't help you then, never used oasis :/
<ollehar>
but "variable" ocamlfind sounds strange
kdef has quit [Quit: Leaving]
nullca___ has joined #ocaml
nullcat_ has quit [Read error: Connection reset by peer]
MrScout has joined #ocaml
WraithM_ has quit [Quit: leaving]
<Denommus>
how to do [^\\] in sedlex?
rgrinberg has quit [Ping timeout: 258 seconds]
tmtwd has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
sh0t has quit [Ping timeout: 276 seconds]
Gama11_ has quit [*.net *.split]
Hannibal_Smith has quit [*.net *.split]
adrien_znc has quit [*.net *.split]
paarth has quit [*.net *.split]
Enjolras has quit [*.net *.split]
frawgie has quit [*.net *.split]
cross has quit [*.net *.split]
haesbaert has quit [*.net *.split]
jlouis has quit [*.net *.split]
Intensity has quit [*.net *.split]
Reventlov has quit [*.net *.split]
tumdum has quit [*.net *.split]
jlouis_ has joined #ocaml
paarth has joined #ocaml
Enjolras has joined #ocaml
badkins has quit [Read error: Connection reset by peer]
Reventlov has joined #ocaml
frawgie has joined #ocaml
haesbaert has joined #ocaml
cross_ has joined #ocaml
Hannibal_Smith has joined #ocaml
WraithM_ has joined #ocaml
Gama11 has joined #ocaml
dtscode is now known as ResidentTriscuit
adrien_znc has joined #ocaml
tumdum has joined #ocaml
Algebr has joined #ocaml
Intensity has joined #ocaml
<Algebr>
Why was ocamlbuild created at all? I mean, what is so special about ocaml that it needed its own build tool?
<cmtptr>
what build tool would you use instead?
<cmtptr>
because make sucks
<flux>
algebr, ..have you looked at OCamlMakefile?
<companion_cube>
dependencies and build rules in OCaml make writing makefiles a pain
<companion_cube>
so, specialized build tools are needed
<Algebr>
flux: I did, I like it.
<flux>
algebr, but did you look how it's done?
<Algebr>
Not in depth
<flux>
as a solution OCamlMakefile is fine as solutions go, I've used it for some projects as well
<flux>
but if one is thinking of "I'll whip a small Makefile for this OCaml project", I'm pretty sure it's going to not work, or alternatively it's going to be overzealous about compiling
<flux>
so using OCamlMakefile is basically the only alternative if you want to use make :)
<Algebr>
I just don't understand the utility of ocamlbuild...a build tool that supposedly abtracts some issues of building ocaml which itself has spawned another layer of abstraction to even use it, ie oasis.
<Algebr>
on the face of it, that's nuts.
<flux>
well, Makefile generators are the norm as well..
<flux>
oasis seems to add some non-building related facets such as installing
waneck has quit [Read error: Connection reset by peer]
nullca___ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
jprakash has quit [Ping timeout: 264 seconds]
<flux>
it would be nice of ocamlc had a switch like -MM in gcc
* Algebr
looking up MM
<ia0>
companion_cube: what do you mean by "build rules" ?
<ia0>
flux: +1
Kakadu has joined #ocaml
<flux>
..did OCamlMAkefile in fact do any inter-module dependency analysis?
<cmtptr>
he probably means that a single invokation of ocamlc generates multiple output files, and that's awkward to deal with in make
<Algebr>
I've seen code refer to drivers, like ocamlfind has a driver ability and so do compilers. Is this just another word for exectuable code?
<flux>
I think it just used to mean that ocamlfind can 'drive' ocamlc
<flux>
so when you type ocamlfind ocamlc -package blablab,boblo, it uses ocamlc with some other switches to make it happen
<ia0>
cmtptr: ok I see, thanks!
<Algebr>
flux: ah, makes sense.
<Algebr>
I guess this wouldn't make sense with ocamlc, but can I do something like __asm__(...) in ocamlopt?
<companion_cube>
ia0: the compilation process of ocaml is complicated
<companion_cube>
first build the .cmi, then .cmx, then link stuff, etc.
<cmtptr>
that kind of thing is exactly what make is designed for, though
<companion_cube>
well you need to include dependency files, etc.
<flux>
cmtptr, make really likes when you need a and b to generate c, but not that much about when you have c and one command generates both d and e
<cmtptr>
yeah, I mentioned that earlier
shinnya has joined #ocaml
<ia0>
that's the only problem I would see
<flux>
so it's maybe then designed for but not properly?
<companion_cube>
it's pretty annoying
<ia0>
dependency files and all are just natural
<ia0>
that's already what we do in C
<companion_cube>
in C you only need it for linking, don't you?
<cmtptr>
flux, I also said that make sucks earlier
<companion_cube>
because you don't need to compile .h
<ia0>
but .h modification impacts .c files
<companion_cube>
and then, there's all the pack, lib, etc. stuff
<ia0>
so you have a dependency there
<flux>
algebr, I vaguely remember reading someone writing an inline assembler extension for OCaml.. but I can't find it
<flux>
algebr, probably a better idea to do it via C.
<cmtptr>
also lex and yacc exist in c and are equally complicated to deal with in make since they can generate both .c and .h