adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 4.00.1 http://bit.ly/UHeZyT | http://www.ocaml.org | Public logs at http://tunes.org/~nef/logs/ocaml/
xenocons_ has joined #ocaml
benmachine has quit [Disconnected by services]
benmachine has joined #ocaml
thibault has joined #ocaml
<benmachine> dsheets1: sorry, I suddenly lagged heavily. not sure it's stopped, so I'll worry about this another day
<benmachine> dsheets1: looks like you were on the right track though, I do seem to have two ocamlfinds
milosn_ has quit [*.net *.split]
RagingDave has quit [*.net *.split]
emmanuelux has quit [*.net *.split]
xenocons has quit [*.net *.split]
ImAlsoGreg has quit [*.net *.split]
fayden has quit [*.net *.split]
thizanne has quit [*.net *.split]
milosn has joined #ocaml
thibault is now known as thizanne
fayden has joined #ocaml
ImAlsoGreg has joined #ocaml
RagingDave has joined #ocaml
<dsheets1> benmachine: using opam? remember eval `opam config -env`
Tobu has quit [Ping timeout: 264 seconds]
RagingDave has quit [Quit: Ex-Chat]
xenocons_ is now known as xenocons
eikke has quit [Ping timeout: 248 seconds]
ulfdoz_ has joined #ocaml
ulfdoz has quit [Ping timeout: 248 seconds]
ulfdoz_ is now known as ulfdoz
Tobu has joined #ocaml
adotbrown has quit [Ping timeout: 256 seconds]
Playground has quit [Quit: When I come back, please tell me in what new ways you have decided to be completely wrong.]
Playground has joined #ocaml
mads- has quit [Quit: Leaving]
madroach has quit [Ping timeout: 248 seconds]
madroach has joined #ocaml
adotbrown has joined #ocaml
Playground has quit [Ping timeout: 240 seconds]
ftrvxmtrx has quit [Ping timeout: 248 seconds]
ftrvxmtrx has joined #ocaml
Playground has joined #ocaml
Playground has quit [Quit: When I come back, please tell me in what new ways you have decided to be completely wrong.]
leoncamel has quit [Ping timeout: 252 seconds]
Playground has joined #ocaml
jamii has quit [Ping timeout: 255 seconds]
fayden has quit [Ping timeout: 248 seconds]
cdidd has quit [Ping timeout: 256 seconds]
weie has joined #ocaml
cdidd has joined #ocaml
fayden has joined #ocaml
cdidd has quit [Ping timeout: 256 seconds]
cdidd has joined #ocaml
cdidd has quit [Read error: Connection reset by peer]
cdidd has joined #ocaml
jamii has joined #ocaml
cdidd has quit [Ping timeout: 260 seconds]
cdidd has joined #ocaml
cdidd has quit [Remote host closed the connection]
weie has quit [Quit: Leaving...]
cdidd has joined #ocaml
Playground has quit [Ping timeout: 256 seconds]
Yoric has joined #ocaml
wormphlegm has quit [Read error: Connection reset by peer]
wormphlegm has joined #ocaml
weie has joined #ocaml
mrpantoufle has quit [Ping timeout: 276 seconds]
Demitar_ has joined #ocaml
Demitar has quit [Ping timeout: 246 seconds]
adotbrown has quit [Ping timeout: 260 seconds]
pango is now known as pangoafk
Demitar_ has quit [Ping timeout: 248 seconds]
osa1 has joined #ocaml
<osa1> can anyone help me? I'm trying to use sexplib with ocamlbuild
<osa1> what should I add to my _tags file ?
<orbitz> osa1: the same thing as last time you asked: https://github.com/pygatea/opass/commit/c4ae7ec51ba9e803a5a3a22e395a21062da49ba7
<osa1> orbitz: I had lost that link, I should save it somewhere this time
<osa1> thanks
osa1 has quit [Client Quit]
<wmeyer> morning
<orbitz> mornign
Snark has joined #ocaml
olaf_ has joined #ocaml
andreypopp has joined #ocaml
weie_ has joined #ocaml
weie has quit [Ping timeout: 276 seconds]
myx has joined #ocaml
gour has joined #ocaml
ttamttam has joined #ocaml
ontologiae has joined #ocaml
hkBst has joined #ocaml
adotbrown has joined #ocaml
andreypopp has quit [Quit: sleep]
jamii has quit [Ping timeout: 248 seconds]
AltGr has joined #ocaml
ontologiae has quit [Ping timeout: 255 seconds]
jamii has joined #ocaml
djcoin has joined #ocaml
mika1 has joined #ocaml
jamii has quit [Ping timeout: 246 seconds]
jamii has joined #ocaml
chambart has joined #ocaml
noj_ has joined #ocaml
ontologiae has joined #ocaml
RagingDave has joined #ocaml
jamii has quit [Ping timeout: 264 seconds]
adotbrown has quit [Ping timeout: 264 seconds]
thomasga has joined #ocaml
jamii has joined #ocaml
thomasga has quit [Read error: No route to host]
thomasga1 has joined #ocaml
spearalot has quit [Ping timeout: 276 seconds]
Yoric has quit [Ping timeout: 240 seconds]
gour has quit [Disconnected by services]
gour_ has joined #ocaml
noj_ has quit [Quit: Leaving]
foo303 has quit [Read error: Connection reset by peer]
foo303 has joined #ocaml
eikke has joined #ocaml
gour_ is now known as gour
jamii has quit [Ping timeout: 260 seconds]
jamii has joined #ocaml
Yoric has joined #ocaml
_andre has joined #ocaml
milosn_ has joined #ocaml
milosn has quit [Ping timeout: 245 seconds]
logicgeezer_ has joined #ocaml
_andre has quit [Remote host closed the connection]
_andre has joined #ocaml
mcclurmc has joined #ocaml
HalfMadDad has quit [Ping timeout: 260 seconds]
HalfMadDad has joined #ocaml
Yoric has quit [Quit: Instantbird 1.4a1pre -- http://www.instantbird.com]
Yoric has joined #ocaml
<fasta> Where do I get File.lines_of ?
<fasta> I thought it was in batteries, but I cannot find it there.
RagingDave has quit [Quit: Ex-Chat]
<troydm> well i think it's in batteries
<troydm> BatFile.lines_of
cdidd has quit [Read error: Connection reset by peer]
<troydm> fasta: ^
<fasta> And how can I read the whole stdin?
<fasta> Haskell has nice functions like 'interact' for these kinds of things.
<troydm> no idea, i haven't played with stdin a lot
<troydm> but afaik it's like reading a file
<flux> I seriously doubt 'interact' is very useful even in haskell, except for hello-world-level programs.. there is a similar function do retrieve lines from a channel, I think?
<troydm> yeah there might be some read line from stdin function
<flux> just grep for 'string Enum.t' from the mli files :)
mye has joined #ocaml
<fasta> flux: it's an excellent way to write slightly more complicated shell scripts.
<flux> batIO.mli:val lines_of : input -> string BatEnum.t
<fasta> flux: when you are going to build a simulator for an arbitrary molecule, not so much.
<flux> or: batStd.mli:val input_lines : in_channel -> string BatEnum.t
<flux> fasta, or anything that wishes to keep state along the different interactions..
<fasta> flux: in the type of interact you can run a state monad.
<flux> interact :: (String -> String) -> IO ()
<fasta> flux: oh, wait. You can't :)
<flux> doesn't look like that to me?-o
AltGr has quit [Ping timeout: 245 seconds]
<fasta> flux: but this gives me some kind of iterator. What if I just want to sort all of that according to some custom function? For sort, I need a list of string.
AltGr has joined #ocaml
<flux> fasta, List.of_enum (Std.lines_of stdin) ?
<fasta> flux: yes, is it common that you leave out 'Bat' prefixes?
<flux> fasta, it is, when you have open Batteries at the top of your module
<fasta> flux: where is the module Batteries defined then which exports all these symbols?
<fasta> flux: Because all I am seeing are things like a BatList, a BatFoo, etc.
<flux> fasta, I'm not actually sure.. it's probably generated during compile time and for some reason not installed along the rest of the .ml(i) files..
<fasta> flux: got it already
<flux> fasta, you can type module B = Batteries;; to see the contents of the Batteries module :)
<flux> (but it's A Lot)
milosn_ is now known as milosn
<fasta> flux: actually, I cannot. It gives a stack overflow.
<fasta> flux: in utop.
<flux> oh, wow
<flux> sounds like a bug in utop
<flux> fasta, btw, how have you liked it? I haven't really used it, maybe I should..
<fasta> flux: I quite like it.
<fasta> It would be better if this would come with Emacs, though.
<fasta> Typerex + utop-complete in actually working order would be great.
<fasta> It's just that the last mile effort hasn't been done.
<fasta> They advertise with all kinds of features, but the most important ones don't work.
<fasta> (and these are generally the simplests ones)
<fasta> For Haskell there are also academic tools with such properties.
<fasta> E.g. HaRe.
<fasta> It works on their inputs, but not on actual real-world inputs, making it useless.
<fasta> Hmm, batteries does seem more like a batterypack :)
<fasta> flux: why is Batteries;; illegal?
<fasta> Other than, "it's not allowed by the grammar".
<flux> fasta, what? what would that even mean?
<gour> HaRe is still alive?
<fasta> flux: the equals sign often means that two things are the same.
<fasta> flux: what do you think that it should mean?
<flux> I think Batteries;; as a statement would be non-sensical, expressing nothing useful from the point of view of writing a program
<fasta> flux: yet, in the interpreter you evaluated B;;
<flux> fasta, where did I do that?
<flux> I wouldn't really call the module binding is evaluating anything
<fasta> flux: I was wrong. Ignore.
leoncamel has joined #ocaml
ftrvxmtrx has quit [Quit: Leaving]
thelema has quit [Ping timeout: 276 seconds]
thelema has joined #ocaml
chambart has quit [Ping timeout: 246 seconds]
pangoafk is now known as pango
asmanur_ has joined #ocaml
asmanur has quit [Read error: Operation timed out]
Kakadu has joined #ocaml
ontologiae has quit [Ping timeout: 252 seconds]
<testcocoon> is there a way for one ocaml package to have --keep-build-dir enabled. some uninstaller works only if makeuninstall is executed after ./configure
ftrvxmtrx has joined #ocaml
<thomasga1> testcocoon: export OPAMKEEPBUILDDIR=1
<testcocoon> thomasga1: this is not a package setting. I need this in the package configuration
hkBst_ has joined #ocaml
hkBst_ has quit [Changing host]
hkBst_ has joined #ocaml
hkBst has quit [Read error: Connection reset by peer]
<thomasga1> testcocoon: I don't get your question then
<testcocoon> thomasga1: I'm creating a packge, this package run ./configure. to install I'm running 'make install' To uninstall I need to run 'make uninstall' but this works only if ./configure was executed.
<testcocoon> thomasga1: so if the build dir is removed make uninstall does not work
<thomasga1> a solution is to create ./configure again in the remove command
<thomasga1> to call sorry
<testcocoon> thomasga1: that whatI'm doing for llvm, but it does not satisfy me. better would be to have the possibility to force keeping the build dir.
<thomasga1> agreed
<thomasga1> you can open a feature request on github then :p
<thomasga1> well, you can indeed add the idea of of per-package option in this issue
<thomasga1> (but this one was for a different use-case where you want a global flag)
<thomasga1> (but that's fine I guess)
<testcocoon> thomasga1: in fact for llvm, I would prefer to execute after the install a 'make clean'. This should reduce the size and keep the configuration.
mye_ has joined #ocaml
ontologiae has joined #ocaml
mye has quit [Ping timeout: 245 seconds]
mye_ is now known as mye
<testcocoon> thomasga1: are you also tinking for specific targets for the documentation?
<thomasga1> there is a 'doc:' for online doc, and 'build-doc:' for the command to run to build the doc
<thomasga1> (it's currently not very well documented unfortunately)
<testcocoon> thomasga1: interesting, did you also define the location of all of docs?
<thomasga1> you mean, the package documentation on the OPAM website ?
<testcocoon> thomasga1: I mean the API documentation of each library installed. so the result of ocamldoc
<thomasga1> %{doc}% ?
<testcocoon> thanks, I will have a try with llvm3.2
weie_ has quit [Quit: Leaving...]
q66 has joined #ocaml
myx has quit [Ping timeout: 264 seconds]
dwmw2_gone is now known as dwmw2
myx has joined #ocaml
hkBst_ has quit [Read error: Connection reset by peer]
<fasta> Warning: one state has shift/reduce conflicts.
<fasta> Warning: one shift/reduce conflict was arbitrarily resolved.
hkBst_ has joined #ocaml
<fasta> How can I get decent warnings from menhir?
<pippijn> fasta: --dump
<pippijn> and --explain
<fasta> pippijn: no effect for either
<fasta> pippijn: ignore that
<pippijn> fasta: you found the files?
<fasta> pippijn: yes
<pippijn> good
<fasta> pippijn: can you have a look at this? I wrote a grammar at the top: http://paste.kde.org/647588/ . The conflicts file doesn't tell me what's wrong.
asmanur_ has quit [Quit: leaving]
hkBst_ has quit [Ping timeout: 276 seconds]
hkBst__ has joined #ocaml
<fasta> I corrected it myself.
<pippijn> that's the best way
<pippijn> I didn't have time, anyway
chambart has joined #ocaml
<thelema> fasta: the batteries.ml file is in the source tree, but it has no corresponding .mli file, as this would be crazy to maintain.
hkBst__ has quit [Remote host closed the connection]
hkBst has joined #ocaml
<fasta> ocamleditor says that it requires: Xml-light (installed at "+xml-light");
<fasta> I installled it via opam. Is that not good enough for it? It cannot find the module Xml at some point.
hkBst has quit [Ping timeout: 245 seconds]
weie has joined #ocaml
<chambart> fasta, I think that xml-light does not provides a META file
<chambart> so you won't find it with ocamlfind
<chambart> It should be possible to add one
<thelema> the "installed at +xml-light" means that xml-light should be installed into `ocamlc -where`/xml-light, without ocamlfind
<thelema> that said, ocamlfind is still a good idea for other apps
<thelema> s/apps/uses/
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
<chambart> hum effectively, sorry
<chambart> but opam installs ocaml libs in lib/ocaml and other in lib/other
<chambart> so so you will have xml-light in "+../xml-light"
hkBst has quit [Excess Flood]
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
ttamttam has quit [Read error: Connection reset by peer]
ttamttam has joined #ocaml
ontologiae has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
nimred has quit [Quit: leaving]
<fasta> thelema, chambart: thanks
munga has joined #ocaml
<munga> I can get a formatter from an out_channel with formatter_of_out_channel . Is there a way to get the out_channel from a formatter ?
<thelema> munga: not in general, because that formatter may be using custom output functions and not a channel
<thelema> you can get those output functions:
<thelema> val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit)
<thelema> or val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit)
<munga> yep ! thanks for the hint !
logicgeezer_ has quit [Remote host closed the connection]
<fasta> How can ulex and menhir be combined?
<fasta> I found a project using it, but it contains way more details than I probably need as a trivial example to get started.
<fasta> menhir generates something of type: (Lexing.lexbuf -> token) -> Lexing.lexbuf. Lexing is probably the one generated by ocamlex, so it seems tied to it.
<fasta> I also some converters, which I suppose one should use then, but it would seem to make more sense if it would compile to something depending on whether or not ulex is desired.
<fasta> saw some*
hkBst_ has joined #ocaml
hkBst has quit [Read error: Connection reset by peer]
<thelema> this is what you saw?
ccasin has joined #ocaml
<fasta> thelema: yeah
<fasta> thelema: lots of noise which is probably not relevant which doesn't help when I just want something trivial running first.
ccasin has quit [Client Quit]
ccasin has joined #ocaml
<fasta> I am thinking of a calculator example.
ccasin has quit [Client Quit]
<fasta> http://gallium.inria.fr/~fpottier/menhir/convert.mli.html shows the functions I likely need, but I have no idea what to do with the return values.
ccasin has joined #ocaml
<thelema> it looks to me that the key is to use the "revised" interface
<fasta> thelema: yes, that was the part I also got, but that's where I would be slightly stuck.
<thelema> and the menhir_with_ulex takes care of the wrapping of both the parser and the lexer so they fit together
<fasta> thelema: in ccss, you mean?
<thelema> yes
<fasta> thelema: yes, but lots of other stuff was happening there too.
<thelema> in the menhir_with_ulex function?
<thelema> position and lexer_maker are needed to wrap the ulex lexer into the "revised" lexer format (unit -> token)
<thelema> the call to traditional2revised converts the parser
<thelema> and there's a little bit of exception tweaking so that the position is available as part of the exception
<thelema> I think you want all that code.
HalfMadDad has quit [Quit: Leaving]
mgodshall has joined #ocaml
Kakadu has quit [Quit: Konversation terminated!]
hkBst_ has quit [Read error: Connection reset by peer]
hkBst has joined #ocaml
jpdeplaix has quit [Ping timeout: 260 seconds]
jpdeplaix has joined #ocaml
eikke has quit [Ping timeout: 256 seconds]
eikke has joined #ocaml
ftrvxmtrx has quit [Quit: Leaving]
tac has joined #ocaml
tane has joined #ocaml
hkBst has quit [Quit: Konversation terminated!]
mika1 has quit [Quit: Leaving.]
_andre has quit [Ping timeout: 256 seconds]
_andre has joined #ocaml
ttamttam has quit [Quit: ttamttam]
djcoin has quit [Quit: WeeChat 0.3.9.2]
Yoric has quit [Ping timeout: 276 seconds]
noj has quit [Remote host closed the connection]
munga has quit [Quit: Ex-Chat]
RagingDave has joined #ocaml
mfp has quit [Ping timeout: 264 seconds]
eikke has quit [Ping timeout: 240 seconds]
ftrvxmtrx has joined #ocaml
mfp has joined #ocaml
ia0 has quit [Ping timeout: 255 seconds]
thomasga1 has quit [Read error: No route to host]
thomasga has joined #ocaml
noj has joined #ocaml
thomasga has quit [Read error: No route to host]
thomasga1 has joined #ocaml
mye_ has joined #ocaml
mye has quit [Ping timeout: 260 seconds]
mye_ is now known as mye
<fasta> When I am in the _build dir of an _oasis project, how can I load a module into utop?
ontologiae has quit [Ping timeout: 255 seconds]
<fasta> Never mind.
<fasta> I am close to 100% sure that [module Ulexing = L] in the ulexing.mli module is wrong.
<fasta> It's supposed to be module L = Ulexing.
<fasta> Ignore me again.
<thelema> no, it's supposed to be ulexing = l
thomasga1 has quit [Read error: No route to host]
thomasga has joined #ocaml
Reventlov has quit [Read error: Operation timed out]
Reventlov has joined #ocaml
Yoric has joined #ocaml
<fasta> How can I find from which package a particular symbol originates when in some toplevel?
<fasta> Same question for a type.
elixey has quit [Remote host closed the connection]
<thelema> can't
<flux> camlspotter tries to answer that question, but not from toplevel
thomasga1 has joined #ocaml
thomasga has quit [Read error: No route to host]
thomasga1 has quit [Read error: No route to host]
thomasga has joined #ocaml
elixey has joined #ocaml
<fasta> Writing a parser using a monadic parser combinator library seems easier than writing separate lexers and parsers in different languages, but I suppose the end result is much times faster.
<fasta> much faster*
thomasga has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Ping timeout: 264 seconds]
thomasga has joined #ocaml
_andre has quit [Quit: leaving]
<orbitz> I use the camlp4 parser stuff, works well for me
cdidd has joined #ocaml
thomasga has quit [Quit: Leaving.]
Demitar has joined #ocaml
<fasta> Based on what rule is let a=1;; valid OCaml? ';;' is nowhere to be found in the OCaml grammar.
<fasta> All I can see is the let a = <foo> in <expr> form.
<wmeyer> I think let and let in is distinguished in the lexer - not checked just a guess
<thelema> module definitions
<fasta> When I write let a=1 in let b= 2 in a;; , it doesn't work. Is this because the build sytem compiles it with a different grammar?
<thelema> fasta: # let a=1 in let b= 2 in a;;
<thelema> Warning 26: unused variable b.
<thelema> - : int = 1
<fasta> thelema: yes, I had the same result in a toplevel.
<thelema> outside the toplevel, it depends on what preceeds it.
<fasta> thelema: open Foo precedes it.
<thelema> odd; "open Foo let a=1 in let b=2 in a;;" should compile
<fasta> thelema: this is the failing command: ocamlfind ocamldep -package extlib -package menhirLib -package pcre -package ulex -modules main.ml > main.ml.depends
<thelema> and the error: syntax error ... where?
<fasta> thelema: on the first in.
<fasta> thelema: the of the file consists of comments, but I could remove them to be on the safe side.
<thelema> oh yeah, toplevel lets don't have in
<thelema> err, phrase lets
<thelema> so let's talk about what ;; does - it ends a phrase
<thelema> which is another name for a module declaration
<thelema> let .. in can be used as an expression
<fasta> I also have true:use_menhir, pkg_extlib, pkg_ulex, pkg_pcre, pkg_menhirLib
<thelema> the libraries that you're using shouldn't matter
tac_ has joined #ocaml
tac has quit [Ping timeout: 245 seconds]
<thelema> hmm, but expressions can be used as declarations... hmm.
<thelema> so let w/o in can be used at toplevel, but not inside anything else
<thelema> (as an expression)
<thelema> but let with in should be usable anywhere, although when using this form, you have to have an expression after the "in"
<fasta> thelema: open Foo<newline><something else> is wrong.
<flux> fasta, you can think of the ;; with a rule: a compilation unit can contain multiple phrases. a phrase is a sequence of top-level statements OR one expression. phrases are separated with a ;;.
<fasta> thelema: open Foo;;<something else> is correct.
<flux> however, I don't see how this supports directly that: http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual023.html
<flux> fasta, you can write complete ocaml programs without ever using ;;
<flux> following the previous rule, they can be composed of only top-level statements
<fasta> flux: so, you would not use open then?
<flux> fasta, of course I would. this is a legal ocaml program, try it: open Printf let _ = printf "hello world\n"
<thelema> open is fine, just don't use "let..in" as a definition, only use "let" (without in) as a phrase
tac_ has quit [Client Quit]
weie has quit [Quit: Leaving...]
<flux> the point is: never use expressions where a top-level statement would do
<flux> and then yuo never need to use ;;
<thelema> flux: the oddity is that ;; is needed before the expression too, which isn't shown in the grammar
<thelema> although it is documented: "Also for compatibility, expr ;; is allowed as a component of a structure, meaning let _ = expr, i.e. evaluate expr for its side-effects. In this case, the ;; of the previous component is not optional."
<flux> thelema, well, looking at the link I gave it gives me an impressino that even top-level statements need to be separated by ;;.
fraggle__ has joined #ocaml
fraggle__ has quit [Client Quit]
<thelema> flux: the {} mean many toplevel-phrases
<flux> thelema, ah, of course, how did I miss that
<flux> but, then it isn't correct
<flux> because that would mean 42 let a = 42 would be legal?
<flux> hmm, actually it is :)
<flux> I learned something new today.
<thelema> # 42 let a = 42;;
<thelema> Error: Syntax error
<thelema> ??
<flux> I just put 42 let a = 42 in foo.ml and it compiled
<flux> [22:26] tion(pts/20):/tmp% ocamlc -o foo foo.ml
<flux> [22:26] tion(pts/20):/tmp% cat foo.ml
<flux> 42 let a = 42
<flux> btw, my toplevel doesn't complain either
<flux> but it is use camlp4
<flux> using, even...
<thelema> odd. More minor differences between the toplevel and compiled
<flux> I think, however, that according to that grammar open Printf 42 should compile, no?
<flux> but the BNF syntax in the manual isn't normative, I suppose; it's documentation, and as any human-written documentation, it can be to-the-point, but wrong
<fasta> I would hope that the documentation determines semantics.
<fasta> If not, what does?
<flux> you need to ask? the ocaml compiler source code does.
<fasta> flux: No, I don't mean that.
<fasta> flux: of course I know that in the end the computer just does what it has been told to do.
<flux> well, documentation is like a second implementation, for humans
<fasta> flux: the problem comes where apparently you don't seem to think that anything deviating from the manual should be fixed asap.
<flux> it's easier to write, sort of, because people fill in the blanks and don't complain about syntax errors
<flux> on the other hand it's more difficult to write, because there are no automated checkers for documentation
<flux> so it tends to be wrong
<flux> or worse, inconsistent
<fasta> How can anyone else write an OCaml compiler then without looking at OCaml source code?
<flux> actually maybe not worse, at least those cases can be detected
<flux> fasta, I think they would end up pretty far, and then find interesting corner cases both in the ocaml implementation and its documentation, then they would ask about them on the mailing list and it would get fixed, somehow
Yoric has quit [Remote host closed the connection]
Yoric has joined #ocaml
tac has joined #ocaml
<flux> example of a corner case: let a = ref 42 in ((incr a; !a), (incr a; !a))
<flux> the documentation doesn't say what the result would be. I'm fine with that :)
<flux> (it could at least tell that it's bad style)
<benmachine> flux: (44, 43), apparently
* benmachine makes a mental note to never ever do that
<flux> indeed, I think it's a good rule not just for computer but for human readers to not put multiple side-effectful expressions into one expression, if the order of the evaluation matters
Playground has joined #ocaml
<benmachine> flux: do you regard reading from a ref to be a side effect, as well as writing to one?
<flux> benmachine, sure. note the 'if' condition :)
<benmachine> ah, fair point :)
<flux> for example this is perfectly fine for me, even though it can be difficult to predict: (Random.int 42, Random.int 42)
<fasta> Is the order of evaluation undefined?
<flux> Or Random.float 1.0 *. Random.float 1.0 for a more realistic example :)
<flux> fasta, as far as I can see, that would be the case
<fasta> flux: if so, then I think this should be a compile time error.
<flux> if someone can prove otherwise, please give me a pointer :)
<flux> fasta, you think my two last examples should be a compile time error?
* benmachine gives flux a null pointer
<fasta> I don't like languages that compile to something without semantics.
<flux> maybe you like SML better then, apparently it has a formal specification
<fasta> I think the best way to create a language is to start with something like Coq and then just add the rest on top of it.
<fasta> Too bad it takes mountains of effort to get anything non-trivial done still.
elixey has quit [Remote host closed the connection]
<orbitz> why not SML? then yo ucan loop forever :)
elixey has joined #ocaml
<fasta> I can't think of any useful program that would need to loop forever.
<orbitz> web server
<fasta> No, I mean unprovable.
<benmachine> orbitz: in the web-server sense, total languages can loop forever
<fasta> A web-server produces useful work.
<flux> I have a Coq-book on my bookshelf. have had it there for years, haven't "found the time"
<benmachine> partially because it's IO and partially because it's productive
<fasta> flux: the Art one?
<flux> fasta, that
<orbitz> ok, i'm just trolling, i don't know anything about coq
<fasta> flux: I think it's a good beginners book.
<flux> fasta, great :)
<fasta> flux: it won't get you to the point to do really useful stuff, however.
<tac> fasta: maybe it would be better to start with something like Coq and take the crap out of it?
<flux> fasta, sad
<fasta> flux: Adam's book will likely do that.
<flux> fasta, is if finished?
<flux> (it)
<flux> I remember seeing some chapters
<fasta> flux: I don't know, but it will certainly keep you occupied until the final release.
<fasta> flux: it has been complete for quite a while.
<fasta> How awesome would it be if a graphics card came with a type describing what it did.
<flux> I suppose I should first go through the Coq'Art book, though, and not skip the exercises either
<fasta> No more crashing computers anymore :)
<flux> well, not without hardware bugs that is
<flux> but I understand proofs for concurrent programs can be notoriously difficult
<flux> and I would still like to be on the pragmatic side and say it's better to have things that are broken, than not to have the things at all
<fasta> flux: the ones on paper are not that hard in my experience.
<orbitz> i've heard rumours that some crazy man had a proof of a concurrent pausless gc
<bitbckt> a _proof_ of one?
<fasta> orbitz: that has been done in the 60s already.
<orbitz> uhh formal proof of a pauseless concurrent gc? i might be lying about the pauselss part, but I don't believ ou
<fasta> It's just that it does cost you performance, but it will be real-time.
<fasta> (as in the kind of stuff you could use to control machines)
<bitbckt> real time and pauseless are not the same.
<fasta> bitbckt: ok, what is the definition of pauseless?
<bitbckt> fasta: at least one mutator is always running.
<bitbckt> it is not "interleaved" like, say, metronome.
<orbitz> I coudl be lyign about the pauseless part. This is CMU lore, this crazy man proved one and then just disappeared
<bitbckt> orbitz: impressive, either way. and definitely crazy. :)
<fasta> bitbckt: I don't think that makes it much more difficult.
<bitbckt> fasta: I work on one. It is.
<fasta> bitbckt: I have implemented terribly complex things; nothing scares me anymore.
<bitbckt> 'grats.
<fasta> (just not in OCaml in case you were wondering)
<orbitz> so have i, i hane't provided a proof of any of them though
<companion_cube> fasta: what's the most commplicated things you've implemented, out of curiosity?
<bitbckt> are we measuring genital size or discussing formal proofs?
<orbitz> a game of "who has the largest vagina" doesn't sound very fun...
<bitbckt> hah
<benmachine> bitbckt: must those be exclusive?
<bitbckt> benmachine: whatever flips your skirt up ;-)
<orbitz> are we going by depth or girth capacity?
<bitbckt> hmm. good point. we should establish the metric by which we measure success first.
<orbitz> is "load capacity" a valid vagina metric?
<bitbckt> "horizontal scalability"
<companion_cube> I was just curious :(
* benmachine hugs companion_cube
Anarchos has joined #ocaml
<orbitz> I once implemented a program so complicated I couldn't get it to work
<bitbckt> I think they make pills for that, now.
<orbitz> ED, Execution Defunction
<fasta> Yeah, apparently 20% of the academic community is on drugs.
<tac> Drugs help. Didn't Erdos teach you anything :P
<orbitz> srsly
<Anarchos> fasta yes : don't try to use Hurd...
<companion_cube> if coffee is a drug, then 99% of the academic community is on drug
<companion_cube> :D
<orbitz> i snort it
<bitbckt> I'm for intravenous administration.
<bitbckt> Preferably involving a hot spoon and an old belt.
smondet has joined #ocaml
mcclurmc has joined #ocaml
<fasta> The Swiss get it for free; no wonder why they are doing well!
<orbitz> that and being a tax haven
<fasta> You can't get naturalized there, can you?
<orbitz> I'm sure the Swiss government will hapily naturalize anyone willing to spend enough
<adrien> I thought the nationality came with the money :P
<bitbckt> The Demographics section of the wiki page implies naturalization is possible.
tac-tics has joined #ocaml
tac has quit [Ping timeout: 245 seconds]
emmanuelux has joined #ocaml
Snark has quit [Quit: Quitte]
osa1 has joined #ocaml
beginner42 has joined #ocaml
* wmeyer sleeping!
<fasta> How do I write ['0'-'9']+ as lxm { INT(int_of_string lxm) } with ulex syntax?
myx has quit [Quit: ушёл]
<fasta> adrien: since you wrote ulex, can you tell me how to bind pattern to a name like ocamllex allows?
chambart has quit [Ping timeout: 252 seconds]
<fasta> Never mind.
<orbitz> 'nevermind' is such a funny phrase
<alej> youre a funny phrase
<orbitz> you're face is a funny phrase
<fasta> orbitz: cancel request better?
<fasta> Problem solved?
<alej> hehe
<orbitz> no, I'm just pointing out that 'never mind' is an odd phrase
<orbitz> you can continue to use it
<orbitz> kind of like how "I couldn't care less" has been shortened to "I could care less"
<beginner42> how can i get rid of compiler errors as, contains type variables that cannot be generalized?
<thelema> beginner42: eta expansion, obviously. :)
<thelema> make your function syntactically a function; add a parameter and apply that parameter on the right
<beginner42> thelema: always there for some advice, thanks :)
<thelema> beginner42: everyone runs into this at some point
osa1 has quit [Quit: Konversation terminated!]
<beginner42> thelema: it hunts me for quite some time, so far i could avoid it
<thelema> right about where they start getting smart about partial application
thomasga has joined #ocaml
<beginner42> thelema: i think i got it now, thank you
<thelema> beginner42: you're welcome
tane has quit [Quit: Verlassend]
beginner42 has quit [Quit: irc2go]
adotbrown has joined #ocaml
mcclurmc has quit [Ping timeout: 245 seconds]
gour has quit [Quit: WeeChat 0.3.8]
Yoric has quit [Ping timeout: 246 seconds]
smondet has quit [Ping timeout: 260 seconds]
AltGr has quit [Quit: Konversation terminated!]
eikke has joined #ocaml
RagingDave has quit [Quit: Ex-Chat]
RagingDave has joined #ocaml
olaf_ has quit [Disconnected by services]
olaf_ has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-090423]: i've been blurred!]
olaf_ has quit [Ping timeout: 260 seconds]
jamii has quit [Read error: No route to host]
leoncamel has quit [Ping timeout: 252 seconds]
eikke has quit [Ping timeout: 260 seconds]
eikke has joined #ocaml
mye has quit [Ping timeout: 245 seconds]
q66 has quit [Quit: Quit]
thomasga has quit [Quit: Leaving.]
pkrnj has joined #ocaml
tac-tics has quit [Ping timeout: 245 seconds]
mgodshall has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
eikke has quit [Ping timeout: 260 seconds]
eikke has joined #ocaml
ben_zen is now known as ben_cat
ben_cat is now known as ben_zen
groovy2shoes has joined #ocaml
<benmachine> so, I'm having ocamlbuild call ocamlfind, but I seem to have two ocamlfinds (one in ~/.opam, one in /usr/bin) and it's choosing the wrong one
<benmachine> what can I do to fix it?
<benmachine> or alternatively, how can I get /usr/bin/ocamlfind to look in ~/.opam for packages
dwmw2 is now known as dwmw2_gone
RagingDave has quit [Quit: Ex-Chat]