<snhmib>
is it possible to write this without going t:typ:type:typ everywhere?
<edwin>
companion_cube: would be interesting to see how oasis+ocamlbuild compares with oasis+omake on your project. for ocamlbuild I usually use AlphaFeatures: compiled_setup_ml and ./configure --override ocamlbuildflags '-j\ 0'. I haven't tried the new omake PR for oasis yet
Simn has joined #ocaml
Sim_n has quit [Ping timeout: 240 seconds]
infinity0 has quit [Ping timeout: 248 seconds]
<companion_cube>
-j0 picks the parallelism level automatically?
<companion_cube>
edwin: heh, I should try this (I already use xocamlbuildargs)
warp has joined #ocaml
Haudegen has quit [Ping timeout: 250 seconds]
infinity0 has joined #ocaml
<edwin>
companion_cube: -j0 uses unlimited parallelism, kind of like make -j
slicefd has joined #ocaml
<edwin>
I usually avoid make -j cause it runs way too many jobs, but I haven't had problems with ocamlbuild running too many jobs
<edwin>
I thought it was based on the manpage, what is the difference?
jwatzman|work has joined #ocaml
<companion_cube>
-j 0 does improve a bit my build time
<flux>
so why is ocamlbuild slow for -j again? is this something that could be addressed with caching?
<companion_cube>
I need to compare with omake
<edwin>
the way it runs ocamldep could probably be improved
<companion_cube>
and I feel like it recompiles too much
<companion_cube>
maybe it's also oasis' fault, I'm not sure
<flux>
sometimes I wish it compiled more, ie. when I wish to reproduce a file warnings and make a dummy edit & revert it to save the file, but ocamlbuild won't rebuild it.. :)
<adrien>
edwin: -j means infinite, -j0 means auto
<adrien>
iirc
<adrien>
I need to check :P
<adrien>
well, I don't have a reference for that actually
<companion_cube>
still, ocamlbuild recompiles lots of .cmi that should not
<edwin>
I was referring to make -j vs ocamlbuild -j0, if ocamlbuild's -j0 actually means auto then its even better :)
<edwin>
probably not the only reason why ocamlbuild is slower than omake though
orbifx has joined #ocaml
<orbifx>
can output_value only take one type of input? or can it vary during runtime?
Haudegen has joined #ocaml
Sim_n has joined #ocaml
<Drup>
orbifx: You should read the documentation of the Marshal module
<zozozo>
orbifx: it can take anyhting as argument, so you should be able to do something like: output_value stdout 1; output_value stdout [2;3;4]; ...
<octachron>
which mean that it is not really type-safe
<orbifx>
Drup: was looking for quick answer to progress with my code, should go back to read it later indeed.
<orbifx>
zozozo, octachron: thanks.
<orbifx>
I'll put my type-unsafety hard-hat on :P
Simn has quit [Ping timeout: 240 seconds]
<orbifx>
Can a type be partially applied?
<companion_cube>
marshall isn't safe at all
<orbifx>
companion_cube: ?
<companion_cube>
well you can make OCaml segfault using Marshal :)
<orbifx>
everytime? :P
<flux>
just get out what you put in and you're fine.
<octachron>
companion_cube, as far as I know, you cannot segfault with just output_value, isn'it? It is the demarshalling that is truly unsafe
<companion_cube>
yes indeed
<companion_cube>
but never demarshalling makes Marshal slightly useless
<octachron>
or in other words, there is exactly one type safe implementation of function of type out_channel -> 'a -> unit: "f _out _ = ()"
<orbifx>
so long I match the types correctly I should be fine, right?
<edwin>
and if nothing corrupts your data before you input it again
<companion_cube>
no, it can write any constant to the channel
<reynir>
uh-oh! I made a mistake
<reynir>
I was making a quick change in the opam repository and wanted to test it so I used the new opam binary. Now ~/.opam reports a newer version that the opam I have installed
<ggole>
octachron: magic polymorphic functions means that isn't really true
<companion_cube>
you... you mean (=) is a lie? ;_;
<ggole>
eg, you could use = to write a boolean indicating whether the argument is a NaN
<reynir>
Any ideas how I can recover?
<flux>
reynir, yes, restore backups.. :-)
<octachron>
companion_cube, right. rather "f _out _ = g out"
<flux>
(sorry)
<companion_cube>
heh
<reynir>
:(
<reynir>
Can't I use the new opam to dump a list of packages, wipe ~/.opam and reinstall?
ia0 has quit [Quit: reboot]
<companion_cube>
opam switch export/import, I think
<octachron>
ggole, magic polymorphic functions more or less assume that you have not an 'a but an 'a ocaml_value and know something about the ocaml value representation, isn'it?
<companion_cube>
be prepared to compile though
<flux>
reynir, btw, you could do what I do, for future: put your .opam in git
<flux>
reynir, and then forget to ever commit it..
<ggole>
Yeah, they break parametricity by inspecting the representation
<companion_cube>
not the whole dir?!
<flux>
is there some opam hook I could use to auto-commit?
<flux>
companion_cube, sure, why not?
<companion_cube>
it's big
<companion_cube>
putting that many binaries into git...
<flux>
not that many gigabytes.
<flux>
storage is cheap :
<flux>
:)
<companion_cube>
hmm
ia0 has joined #ocaml
<reynir>
Thanks, I'll try switch export/import :)
<orbifx>
Can a type be partially applied? Curried, like a function?
<edwin>
you could commit from a cronjob, or use an rsnapshot cronjob to have local backups (it uses hardlinks to share files that haven't changed)
seangrove has joined #ocaml
<edwin>
problem is opam might be updating at the same time you snapshot and then it won't be a consistent snapshot
<flux>
orbifx, no
<flux>
orbifx, well, I suppose it depends what you mean. you mean a constructor?
<flux>
constructors cannot be partially applied
<orbifx>
flux: yeah
<flux>
you can of course create aliases to polymorphic types, but I suppose that's not at all what you mean
<flux>
orbifx, typical solution is to create a function for the constructor
<orbifx>
flux: I want to call a different constructor on the same value depending on a condition.
<reynir>
Wee, compiling 93 packages
<flux>
let op a b c = Op (a, b, c)
toolslive has joined #ocaml
<orbifx>
flux: op -> Op ??
<flux>
orbifx, ?
seangrove has quit [Ping timeout: 240 seconds]
<flux>
say your type was type ('a, 'b, 'c) op = Op of ('a * 'b * 'c) then that definition would let you 'partially apply' the constructor
<toolslive>
opam depext conf-libev.4-11 states everything was installed, but opam install conf-libev can't seem to find it. (but there is a /usr/include/ev.h) . anybody any ideas?
<orbifx>
but op and Op would have to be hardcoded?
<orbifx>
can I store the value of the contructor? let c = Contructor ?
kushal has quit [Quit: Leaving]
<ggole>
(non-nullary) constructors aren't values in OCaml
<companion_cube>
and the type system doesn't support partially applied types
simn__ has joined #ocaml
seangrove has joined #ocaml
Sim_n has quit [Ping timeout: 250 seconds]
teknozulu has quit [Ping timeout: 244 seconds]
<orbifx>
okie
<orbifx>
thanks
seangrove has quit [Ping timeout: 250 seconds]
mearnsh has joined #ocaml
_andre has joined #ocaml
seangrove has joined #ocaml
<edwin>
toolslive: there is a log_file here ~/.opam/repo/default/packages/conf-libev/conf-libev.4-11/files/discover.ml, try to print that for more details
Sim_n has joined #ocaml
simn__ has quit [Ping timeout: 240 seconds]
mearnsh is now known as bounb
bounb has quit [Changing host]
bounb has joined #ocaml
seangrove has quit [Ping timeout: 255 seconds]
bounb has left #ocaml ["0"]
<orbifx>
when the compile is complaining "Error: No implementations provided for the following modules", is it asking for .cma file?
<orbifx>
what does it refer to by implementation?
aantron has joined #ocaml
darkf has quit [Quit: Leaving]
<orbifx>
ok, was the order of the modules.. it's important :P
Haudegen has quit [Ping timeout: 252 seconds]
simn__ has joined #ocaml
Sim_n has quit [Ping timeout: 250 seconds]
Haudegen has joined #ocaml
Sim_n has joined #ocaml
seangrov` has joined #ocaml
simn__ has quit [Ping timeout: 240 seconds]
seangrov` has quit [Ping timeout: 252 seconds]
<aantron>
Drup: so what is "wrap" for in tyxml? is it needed for eliom somehow?
<aantron>
perhaps. sanity check: i am looking at list_wrap / Xml_wrap.T.tlist - it seems i will have to replace code that assembles child lists using :: with code that uses Xml_wrap.T.cons (through the (Html5|Svg).Xml.W.cons)
<aantron>
-the*
<Drup>
Yes
<aantron>
oh well. the parse tree dump was briefly beautiful :)
<orbifx>
companion_cube: did you tell me yesterday if you libraries support infinit lists?
<companion_cube>
yes, they do
<companion_cube>
but you shouldn't try to consume an infinite sequence of elements, of course
<companion_cube>
use take_while/take or something like this before
<companion_cube>
unless you are sure the sequence isn't infinite any more
<Drup>
aantron: do your testing with no wraping, we can figure it out later
<companion_cube>
orbifx: e.g. Sequence.repeat 0 or Gen.repeat 0 are infinite lists of 0
<orbifx>
ok
<orbifx>
I might get to use them soon, not sure yet.
<companion_cube>
:)
<aantron>
Drup: speaking of testing, what is the best way for tyxml besides repeated manual examination of cases?
<aantron>
i was considering using ounit or something just for the ppx, but i think you're in a better position to decide this for all of tyxml :)
<Drup>
That's the issue, I'm not sure what to test
<Drup>
Ounit is not going to work if we also want to test things that are forbidden by type checking
<aantron>
it does work, just have to parse compiler output, etc., so its a bit nasty
<Drup>
Well, if you can make it work witout making it awfully complicated, okay
<aantron>
as for what to test, for the rest of tyxml, you could serialize output and check against expectations, and/or run through some HTML validator
<Drup>
The option we choose in js_of_ocaml is to pipe a file to the toplevel and diff the output against the expected one
<Drup>
(like in the compiler)
<Drup>
this also allows to test error messages and locations for the ppx, which is very important
<aantron>
exactly
<aantron>
the ppx would greatly benefit from testing i think
<Drup>
Oh, we need to test the ppx, at least for locations
<aantron>
i will hold off on it for now though, to stay focused on the immediate task
lordf has joined #ocaml
antkong has quit [Quit: antkong]
lordf has quit [Read error: Connection reset by peer]
struk|desk|away is now known as struk|desk
BitPuffin has joined #ocaml
<reynir>
companion_cube: Thanks for the tip regard opam switch {ex,im}port, it worked :)
seangrov` has joined #ocaml
toolslive has quit [Ping timeout: 240 seconds]
simn__ has joined #ocaml
<octachron>
Drup, what is the best way to report dead links on Eliom main page?
<companion_cube>
rob pike explains how cool it is to hand-write a lexer in Go, if I remember correctly
<Drup>
Yeah
Sim_n has quit [Ping timeout: 250 seconds]
<Drup>
Right, I don't want to waste time argue with that :)
<companion_cube>
you would have to argue with rob pike anyway
<Drup>
Precisely my point :D
<companion_cube>
it would probably degenerate into error handling, polymorphism and nil
<companion_cube>
*shivers*
<Harzilein>
i remember how that was mentioned. i think it's some kind of nih drive, so it might not be rational. but imagine i have my hand written toy lexer and some motivation might vanish if i were to rewrite it first, instead of seeing it's still in there and i can flush all the rest and start over ;)
<Harzilein>
s/seeing/being able to see/
<companion_cube>
you mean it's easier to rewrite rather than modify?
struk|desk is now known as struk|desk|away
jeffmo has joined #ocaml
Associat0r has joined #ocaml
<Harzilein>
companion_cube: i don't want to modify the generated lexer, my (largely fictitious) scenario is the other way around: i have some hand crafted primitives that work nicely, but now i want to use table driven lexing for the more tedious stuff. it'd be nice to be able to integrate their logic with each other
Associat0r has left #ocaml [#ocaml]
seangrov` has joined #ocaml
yunxing has joined #ocaml
<companion_cube>
Harzilein: sounds difficult
<Harzilein>
so you are saying i might not find someone employing such a thing because it'd be tedious in itself?
yunxing_ has quit [Read error: Connection reset by peer]
dhil has quit [Quit: Leaving]
<companion_cube>
well I mean, mixing a generated lookup table with hand-written primitive token lexers sounds difficult
<companion_cube>
unless, say, the handcrafted tokens start with unambiguous characters, or something like this
pierpa has joined #ocaml
Sim_n has joined #ocaml
simn__ has quit [Ping timeout: 240 seconds]
<orbifx>
is there a convention for distinguishing type names for mere values?
<companion_cube>
not afaik, but they do not occur in the same places
<orbifx>
you mean in expressions? Or in files?
<companion_cube>
in expressions
<orbifx>
ok
copy` has joined #ocaml
noplamodo has quit [Changing host]
noplamodo has joined #ocaml
eeks_ has joined #ocaml
larhat has quit [Quit: Leaving.]
larhat has joined #ocaml
larhat has quit [Client Quit]
simn__ has joined #ocaml
Sim_n has quit [Ping timeout: 250 seconds]
Mercuria1Alchemi has joined #ocaml
antkong has joined #ocaml
sz0 has joined #ocaml
antkong has quit [Ping timeout: 244 seconds]
seangrov` has quit [Ping timeout: 252 seconds]
seangrov` has joined #ocaml
seangrov` has quit [Remote host closed the connection]
th5 has joined #ocaml
seangrov` has joined #ocaml
Sim_n has joined #ocaml
simn__ has quit [Ping timeout: 240 seconds]
seangrov` has quit [Remote host closed the connection]
seangrov` has joined #ocaml
seangrov` has quit [Remote host closed the connection]
Algebr` has joined #ocaml
<flux>
well, there is actually the convention of sharing names.. :)
<Drup>
module Foo : FOO = struct let foo : foo = Foo end
<zozozo>
companion_cube: do you plan on testing your test generator ?
malc_ has joined #ocaml
<companion_cube>
sure, with a random test generator generator à la quickcheck
toolslive has quit [Ping timeout: 250 seconds]
tftio has joined #ocaml
<aantron>
Drup: one thing worth testing is compilation, since some of the apparently lesser-used svg attributes have polymorphic variant tags that dont match sets accepted by elements (missing underscores and the like)
<aantron>
im finding some right now and going to add to the pull request
<Drup>
aantron: I fixed so many of thoses ...
<Drup>
Yes
octachron has quit [Quit: Leaving]
<Drup>
Ideally, this should be quite easy to check statically
<Drup>
(with your crawler, I mean)
<aantron>
well my crawler isnt going to make an effort to check these against element sets, its only goal is to provide the minimum information necessary for the ppx to build a parse tree that passes children to elements correctly, and the like
<aantron>
but i suppose it can be modified or expanded upon..
tftio has quit [Client Quit]
<aantron>
but it seems to me that it may be better to enumerate if possible, since there are other things worth testing besides the types matching up (like the output of printing)
lokien has joined #ocaml
<Drup>
Yes
<lokien>
how to substitute a "for i in ..." loop here?
tftio has joined #ocaml
<lokien>
List.iter?
<Leonidas>
I was thinking of taking data from a socket and putting it in a queue and then running another lwt process to take data out from a queue. That's what I would've done with threads. But when using preemption in lwt, does that even make sense?
<Leonidas>
lokien: "here"? where?
<lokien>
Leonidas: in ocaml, sorry
<aantron>
where in ocaml?
<lokien>
in the ocaml code
<lokien>
:^(
<Leonidas>
lokien: depends, sometimes it's .iter, sometimes it's .map
<aantron>
ocaml has for loops also
<Leonidas>
sometimes you also just want to reduce/fold.
<Drup>
And sometimes it's still for :D
<Leonidas>
True :)
<lokien>
what about doing something for each char in a string?
toolslive has joined #ocaml
<Leonidas>
Though I can never remember the for syntax
<aantron>
lokien: for more efficient representation i guess
ollehar has joined #ocaml
<aantron>
also it used to be mutable
<lokien>
aantron: ocaml, better than c!
<Drup>
String as list of chars is an idea that sounds good but is absolutely terrible in practice
<Drup>
(Haskelians are still paying the price of that one)
<lokien>
Drup: why is that?
<Drup>
It's slow as hell
<Leonidas>
Drup: yes, I am getting a Lwt_stream.t out and .iter over it wanting to enqueue, but maybe the idea of enqueing doesn't make sense in the first place.
<aantron>
lokien: think how a list is represented and how much you use strings and how
<lokien>
Drup: good reason
lordf has joined #ocaml
<Drup>
Leonidas: well, if you imediatly launch a task in the background, yes, no need to queue
<Drup>
Just launch the task
<Leonidas>
Drup: ok, thanks.
<Drup>
However, if you want to preserve strict ordering, it's not a bad idea
<Leonidas>
no, the ordering does not matter much
alexst has joined #ocaml
<Drup>
Lwt.async might help you too
<lokien>
eh, I wish I was smart enough to actually use ocaml somewhere
<lokien>
thanks guys
<Leonidas>
For some reason, everytime I use Lwt, I end up surprisingly satisfied.
<Leonidas>
Drup: will look into it, thanks!
<Drup>
lokien: you barely started a few weeks ago, you are doing fine. ^^'
<lokien>
Drup: I looked at the caml4p tutorial
<lokien>
<:expr< $uid:m$.iter $f$ $e$ >>
<Drup>
Don't look at camlp4
<lokien>
gawd, how are you parsing stuff like this in your head
<lokien>
Drup: give me stuff to look at
<Drup>
You read RWO already ?
<lokien>
no, I was trying to do stuff and dropping to RWO when I needed something
<lokien>
examples in RWO are too complicated for me when I'm reading from cover to cover
<Drup>
what are you interested in ?
jwatzman|work has quit [Quit: jwatzman|work]
shinnya has quit [Ping timeout: 240 seconds]
<lokien>
I was in 2D games, now in whatever, to be honest
<lokien>
(too much stuff to figure out in an unpopular language for a beginner)
<lokien>
(.. to do 2d games)
<Drup>
The cairo API in OCaml is fine, if you like to draw things.
<lokien>
too complicated, still. I'd like to do some cli scripts or sth
<lokien>
just for fun/to learn
<Drup>
You can do that too, the Arg module is easy to use
<hcarty>
At this point, what is the best/proper way to use unsigned integers in OCaml? The uint library? ctype's uint support? Pretend that Int32.t and Int64.t aren't signed when I want an unsigned integer?
<lokien>
but.. what to do? :D
<hcarty>
This is specifically for reading values from disk in some arbitrary raw format.
<ggole>
hcarty: do you need unsigned operators or just a bag of a certain number of bits?
<aantron>
lokien: as an alternative to Arg, the Cmdliner library is pretty sick to play with
<Drup>
aantron: not for a beginner ^^
<Drup>
lokien pick a utility you like/use and redo it in ocaml ?
<toolslive>
@hcarty what are you doing with the unsigned ints ?
<aantron>
i guess i can see how it might be difficult to get at first, but there are examples, and the results are quite nice
<lokien>
Drup: but it looks sick
<lokien>
Drup: maybe I'll implement some of the unix commands in it?
<lokien>
faster than bash!
<hcarty>
ggole, toolslive: A bag of bits which need to compare correctly and, in some cases, uses as an offset in a separate file
JacobEdelman_ has joined #ocaml
<Leonidas>
Cmdliner is good but it's quite magical. If it weren't for the fact that it compiles, I wouldn't believe my code is doing the right thing
<hcarty>
s/uses/be used/
<toolslive>
so the sign doesn't matter ?!
<hcarty>
The sign does in the lookup case
<lokien>
Leonidas: magic in ocaml? ew
tftio has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<hcarty>
lokien: It's not actual magic, just feels like it
<Drup>
But which color of magic is it ? :]
<toolslive>
suppose you use an int, how can it become negative?
<hcarty>
Blue, like infinity
<ggole>
hcarty: I suppose use ocaml-uint then
<hcarty>
toolslive: read 4 bytes as an Int32.t, you could end up with a negative value
<aantron>
now i am using to write something for tyxml
<aantron>
= lots of checking back and forth between the html and svg specs and various ocaml files
<lokien>
aantron: is it less horrific now?
<aantron>
for all the messy, ugly, inconsistent attribute names, types, exceptional situations, etc
<aantron>
the ocaml version? its logically as awful as the natural language version, but slightly better than natural language because at least it is possible to compile and test it :)
<aantron>
..and its hidden behind some interface
<Drup>
aantron: fontFace
<Drup>
This one makes me cross eyes everytime
<aantron>
lol
<Drup>
ಠ_ಠ
<aantron>
Drup: what happens on 16 march? if not secret :)
<aantron>
or 15 march :)
<Drup>
aantron: icfp deadline
<aantron>
ah
<Drup>
wow, I think they changed fontFace to font-face
<lokien>
fontFace looks like a twitch emote
<malc_>
ggole has quit []
<Drup>
aantron: can you repush/rebase your PR ?
<aantron>
Drup: what are you subitting, if not secret?
<aantron>
okay. thought i just did
<Drup>
you did, but jenkins is really unhappy about it
<aantron>
i noticed, not sure why. hmm.
Haudegen has joined #ocaml
<aantron>
how does one re-push? i could fudge it by twiddling the commit timestamp, but is there some legitimate way you know of?
<aantron>
can you just ask jenkins to rebuild?
<Drup>
I cannot é_è
<Drup>
just rebase on master
<Drup>
it should work
<aantron>
its already based on master and git push -f after rebase does nothing
<Algebr>
does opam have some kind of perl dependency?
<aantron>
(after checking the remote of course)
<aantron>
anyway i will do an amend
<Drup>
aantron: Actually, I'm going to merge the other 2 PR now
<aantron>
so.. is the ppx going to be for 4.0?
<Drup>
yes
<Drup>
Which is going to be next version
<aantron>
ok, cool
nojb has quit [Ping timeout: 240 seconds]
<aantron>
Algebr: on my os x system it seems to have a python dependency, but not perl
<Algebr>
I have this on linux: PERL5LIB=/home/gar/.opam/working/lib/perl5
<aantron>
(using macports)
tftio has joined #ocaml
bobthenameless has quit [Ping timeout: 250 seconds]
<aantron>
interesting, i have something similar
<aantron>
but i have no such directory
<aantron>
perhaps it is for packages that have perl scripts included? speculating
<aantron>
(i mean no directory as mentioned in my PERL5LIB)
yunxing has joined #ocaml
alpen has quit [Ping timeout: 240 seconds]
larhat has joined #ocaml
bobthenameless has joined #ocaml
tftio has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<aantron>
i would prefer you not replace `On | `Off by bool
<Drup>
Ah ?
<aantron>
right now the ppx uses this variant to know that "on" and "off" are the possible values
<aantron>
i could still handle it if you made it into a bool, but with a special-case annotation
sh0t has quit [Ping timeout: 250 seconds]
<Drup>
huum
cyraxjoe has quit [Quit: I'm out!]
<aantron>
right now "bool wrap" means to the ppx "expect strings true or false, and apply string_of_bool"
<Drup>
It's really more convenient for users
cyraxjoe has joined #ocaml
<aantron>
fair enough
<Drup>
I'm fine with annotating tyxml's type with this kind of things
<Drup>
like bool wrap [@onoff]
<aantron>
everything else will be picked up automatically i think. i might have to make a 1 line change
<aantron>
yeah, i already have annotations like that, so it will be fine
<Drup>
ok
<Drup>
I'm going through the various we added since I did the patch, to replace similar things
<aantron>
the main reason for `On `Off in my opinion though, even to the user
<aantron>
is that this attribute does require stirngs "on" "off" not "true" "false"
<Drup>
I'm happy to see that I'm not the only one that word
<Drup>
:D
<aantron>
it just helps to train the user somehow :)
<aantron>
what do you mean?
<aantron>
if the same user is writing html using tyxml, they will have to remember not to write "true" or "false" (though the ppx will yell at them if they do). for consistency, it may make sense to keep it as `On | `Off in the types
<Drup>
I keep forgetting words in my sentences
Haudegen has quit [Ping timeout: 276 seconds]
<aantron>
using the ppx* i mean
<Drup>
Yeah
<Drup>
but if you have a bool signals coming from something else, you can plug it directly
<aantron>
freaking html people
<Drup>
I would agree with you if tyxml was only a static description language, but it's not the case, you can use signals and interactive things
<aantron>
great design from the working groups..
<aantron>
:)
<Drup>
Eh, that's usual
alexst has quit [Ping timeout: 252 seconds]
<aantron>
Drup: i wasnt able to parse: "I'm happy to see that I'm not the only one that word"
<Drup>
Yes, that's the point, it's a joke x)
<lokien>
Drup: what's the recommended way of getting ocaml? I'm on ubuntu. github, to be up-to-date?
<Drup>
Certainly not github
<aantron>
lokien: ppa/avsm
<lokien>
(recent format and I'm reinstalling everything)
<Algebr>
avsm does a great service to everyone with that ppa
<lokien>
okay, I'll use it :)
<Drup>
Yeah, it contains opam too
nojb has joined #ocaml
alexst has joined #ocaml
ollehar has quit [Quit: ollehar]
Haudegen has joined #ocaml
ygrek has joined #ocaml
Denommus has quit [Ping timeout: 244 seconds]
lokien_ has quit [Quit: Connection closed for inactivity]
tftio has joined #ocaml
alexst_ has joined #ocaml
alexst has quit [Ping timeout: 276 seconds]
larhat has quit [Quit: Leaving.]
hanshenrik__ has quit [Ping timeout: 240 seconds]
teknozulu has joined #ocaml
toolslive has quit [Ping timeout: 240 seconds]
Anarchos has joined #ocaml
hcarty has quit [Quit: WeeChat 1.4]
Jane-PC has quit [Read error: Connection reset by peer]
Jane-PC has joined #ocaml
antkong has joined #ocaml
alexst_ has quit [Ping timeout: 244 seconds]
JacobEdelman_ has quit [Quit: Connection closed for inactivity]
toolslive has joined #ocaml
tftio has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
slash^ has quit [Read error: Connection reset by peer]
orbifx has joined #ocaml
antkong has quit [Quit: antkong]
teknozulu has quit [Ping timeout: 244 seconds]
smandy2 has quit [Remote host closed the connection]
alpen has joined #ocaml
yunxing has quit [Remote host closed the connection]
sh0t has joined #ocaml
tftio has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
al-maisan has joined #ocaml
_andre has quit [Quit: leaving]
tftio has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tftio has joined #ocaml
yunxing has joined #ocaml
sillyotter has joined #ocaml
sillyotter has quit [Client Quit]
malc_ has quit [Quit: ERC (IRC client for Emacs 25.0.50.2)]
<lokien>
utop "counter" breaks on solarized light terminal theme :^(
<lokien>
and I consider it as a serious issue
<orbifx>
:P
<lokien>
seriously, invisible counter drives me nuts
<lokien>
but I don't know if to fill an issue in the solarized project, or utop
<orbifx>
hmm tricky
<orbifx>
i doubt utop will change something unless they have done it seriously wrong.
<orbifx>
maybe start with solarized.
<lokien>
solarized dark is fine, but utop uses the same colour for background and counter text with solarized light.
<aantron>
i doubt utop is aware of how the colors would appear in a theme, sounds like a problem with the theme
teknozulu has joined #ocaml
<lokien>
oh, it's kinda fine with ubuntu's solarized.
Haudegen has quit [Ping timeout: 276 seconds]
<orbifx>
lokien: if you are using tabs you can use a profile suitable for utop
<lokien>
orbifx: too much hassle, honestly. now I have the perfect set-up though :D
Mercuria1Alchemi has quit [Ping timeout: 240 seconds]
nojb has quit [Read error: Connection reset by peer]
<orbifx>
fixed it?
tftio has quit [Max SendQ exceeded]
<lokien>
yeah, I used ubuntu solarized colorscheme for terminal, and regular solarized for vim
<lokien>
when I want to loop over a sequence (string) and accumulate some result.. what is the best way to do so?
<lokien>
List.iter doesn't look like a good option
<lokien>
hm, maybe I'll do this imperatively
<copy`>
containers and core both have String.fold
<lokien>
copy`: I'll try that, thanks :)
BitPuffin has quit [Ping timeout: 276 seconds]
mac10688 has joined #ocaml
Jane-PC has quit [Quit: Leaving]
Haudegen has joined #ocaml
teiresias has joined #ocaml
<lokien>
can I use a tuple as init?
<companion_cube>
you can use any type, it's polymorphic
<lokien>
I was asking about hackathons, because I output ocaml code much slower than python/nim code
caw has joined #ocaml
<lokien>
companion_cube: what is this?
<lokien>
companion_cube: tui library?
ggherdov has joined #ocaml
<companion_cube>
yep
<companion_cube>
it's pretty nice
<Algebr>
lokien: agreed, python is the usual go to for hackathons but it would be nice to use OCaml for hackathons as well
<lokien>
companion_cube: another tui lover? sweet
<companion_cube>
well I don't have a use case for this (yet?)
<lokien>
Algebr: the dream
<lokien>
companion_cube: dwarf fortress v2?
<companion_cube>
:D
<companion_cube>
it would be so much work
<lokien>
you have my axe!
<lokien>
('cause my code's not good enough)
<Drup>
The UI of dwarf fortress is the trivial part :)
copy` has joined #ocaml
<lokien>
yeah. the impressive part is the guy has done it only by himself
hanshenrik has joined #ocaml
<Drup>
No, the impressive part is the dwarf AI and the procedural content generation
sh0t has joined #ocaml
MercurialAlchemi has joined #ocaml
<companion_cube>
and the set of rules that make the game run?
jeroud has joined #ocaml
<Drup>
that set of system is complex, but it's a set of rules, plenty of games have (complex) rules. The procedural content gen, on the other hand ... I don't know any other games that does it like that
john51_ has joined #ocaml
foolishmonkey has quit [Quit: Leaving]
<Drup>
It's not only the map, it generates history over a period span of several centuries, to the details of what you dwarfs received as gift for his birthday. Including religions and dance traditions, it's just ridiculous
<seangrove>
yminsky: Is janestreet using Jenga internally, or is it still alpha internally?
foolishmonkey has joined #ocaml
john51 has quit [Ping timeout: 252 seconds]
<lokien>
Drup: too bad it has the weirdest keybindings in the world
<Drup>
I'm sure he is a vi user :D
<lokien>
me too :D
orbifx has quit [Ping timeout: 240 seconds]
<lokien>
going to sleep though, thank you guys again. goodnight :)
<aantron>
night :)
Kakadu has quit [Remote host closed the connection]