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-lang.org | Public logs at http://tunes.org/~nef/logs/ocaml/
lolcathost has quit [Ping timeout: 255 seconds]
<mk270> hello - does oasis support syntax extensions yet?
<wmeyer> mk270: no, it doesn't at the moment, but it's easy to do with _tags
<mk270> wmeyer: isn't doing it with _tags similar to not using oasis in the first place?
<mk270> or at least, it's basically adding an interactive step to what ought to be a non-interactive process, or requiring you to ship the _tags file with your code, rather than generating it with oasis?
<wmeyer> mk270: well, nothing stops you with changing the _tags file outside the oasis sections. The code should be never shipped without generated files anyway
hongboz has joined #ocaml
<wmeyer> mk270: I agree however that there should be a better support for it
hongboz has quit [Remote host closed the connection]
hongboz has joined #ocaml
<mk270> wmeyer: ok, my instinct would have been *not* to ship the generated files
<mk270> on the analogy of not shipping .annot files, *.o files in C, etc
<mk270> what am i missing?
madroach has quit [Ping timeout: 244 seconds]
lolcathost has joined #ocaml
<wmeyer> mk270: yes, but ... oasis for time being generates files, and autoconf also generates file that will be shipped - Makefiles, configure etc.
<wmeyer> this removes dependency on oasis itself
madroach has joined #ocaml
<mk270> ah
<mk270> ok, i thought it was conventional to ship the configure script, not the generated Makefile
<mk270> this makes stuff depend on the unix tools invoked in ./configure; and i guess oasis isn't allowed to depend on unix tools
<mk270> hence people shipping its outputs, hence the showstopper "can't use oasis with lwt" limitation not getting fixed
<wmeyer> mk270: sorry yes the autoconf is meta programming pipeline really
<wmeyer> Makefiles will be generated from ./configure
<wmeyer> but ./configure really is generated + Makefile.in
<wmeyer> and bunch of others
<mk270> cheers - i am more concerned about getting a less steep on-ramp to ocaml development; i lost about two hours to this syntax thing
<wmeyer> mk270: you are welcome, definitely tooling need some more experience to get right
<wmeyer> especially that you are playing with these syntax extensions
<hongboz> ping wmeyer
<hongboz> wmeyer: would you have a look at http://caml.inria.fr/mantis/view.php?id=5652
<wmeyer> hi
<wmeyer> yes, ocamlbuild need some more love. :-)
milosn has quit [Ping timeout: 256 seconds]
<hongboz> wmeyer: currently most syntax extensions only distribute *.cmo file, this commit gives no way to use camlp4o instead of camlp4o.otp
<hongboz> camlp4o.opt(sorry)
milosn has joined #ocaml
<wmeyer> sure, sounds like needs fixing
<hongboz> Either provides two tags camlp4o, camlp4o.opt or default to camlp4o instead of camlp4o.opt
<wmeyer> there are bunch of other waiting
<hongboz> wmeyer: how do you think of providing two set of tags 'camlp4o, camlp4o.opt'?
<hongboz> and 'camlp4r, camlp4r.opt, camlp4rf,camlp4rf.opt..'
<wmeyer> sounds OK
<wmeyer> sounds actually like a better solution, perhaps something like 'opt' should do this, but then how to disambiguaite between the compiler and camlp4
<wmeyer> so yes, I'll think about this.
<wmeyer> sounds like xmas hack ;-)
_tca has joined #ocaml
<hongboz> I think providing two sets of tags is enough in reality?
<hongboz> oh, for windows users, what's the name of camlp4o.opt?
<wmeyer> add .exe (like execute.)
hongboz` has joined #ocaml
hongboz` has quit [Remote host closed the connection]
weie has joined #ocaml
wormphlegm has quit [Read error: Connection reset by peer]
leoncamel has quit [Ping timeout: 252 seconds]
wormphlegm has joined #ocaml
leoncamel has joined #ocaml
astertronistic has joined #ocaml
BiDOrD_ has joined #ocaml
BiDOrD has quit [Ping timeout: 256 seconds]
lusory has quit [Ping timeout: 250 seconds]
Snark has joined #ocaml
Siphonblast has quit [Quit: quit()]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
bondar has joined #ocaml
bondar has quit [Read error: Connection reset by peer]
myx has joined #ocaml
jewel has joined #ocaml
lolcathost has quit [Quit: leaving]
Catnaroek has joined #ocaml
Catnaroek is now known as lolcathost
answer_42 has joined #ocaml
fantasticsid has joined #ocaml
lolcathost has quit [Read error: Connection reset by peer]
lolcathost has joined #ocaml
foocraft has joined #ocaml
lolcathost has quit [Ping timeout: 260 seconds]
eni has joined #ocaml
Siphonblast has joined #ocaml
foocraft is now known as foo303
jewel has quit [Ping timeout: 252 seconds]
sampego has joined #ocaml
hongboz has quit [Ping timeout: 252 seconds]
ttamttam has joined #ocaml
_tca has quit [Remote host closed the connection]
answer_42 has quit [Ping timeout: 276 seconds]
thomasga has joined #ocaml
lolcathost has joined #ocaml
milosn has quit [Ping timeout: 260 seconds]
mfp has quit [Ping timeout: 264 seconds]
Siphonblast has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
mfp has joined #ocaml
fusillia has joined #ocaml
hongboz has joined #ocaml
ontologiae has quit [Ping timeout: 256 seconds]
hongboz has quit [Ping timeout: 256 seconds]
Icarot has joined #ocaml
thomasga has quit [Quit: Leaving.]
djcoin has joined #ocaml
Icarot has quit [Read error: Connection reset by peer]
mye has joined #ocaml
ftrvxmtrx has joined #ocaml
f[x] has joined #ocaml
Kakadu has joined #ocaml
thomasga has joined #ocaml
ontologiae has joined #ocaml
mika1 has joined #ocaml
f[x] has quit [Read error: Operation timed out]
eni has quit [Quit: Leaving]
fantasticsid has quit [Remote host closed the connection]
f[x] has joined #ocaml
<testcocoon> I'm actually getting a checksum error when I'm installing dose with opam (Wrong checksum for /home/sfri/.opam/repo/unstable/tmp/dose.3.1.2/dose3-3.1.2.tar.gz (waiting for e98ff720fcc3873def46c85c6a980a1b, got eda2010984feec70e27213d1b79eb02c))
lolcathost has quit [Ping timeout: 265 seconds]
lolcathost has joined #ocaml
mye_ has joined #ocaml
ttamttam1 has joined #ocaml
lolcathost has quit [Quit: leaving]
larhat has quit [Quit: Leaving.]
lolcathost has joined #ocaml
cago has joined #ocaml
mye has quit [*.net *.split]
fusillia has quit [*.net *.split]
mfp has quit [*.net *.split]
ttamttam has quit [*.net *.split]
mye_ is now known as mye
fantasticsid has joined #ocaml
_andre has joined #ocaml
mfp has joined #ocaml
fusillia has joined #ocaml
Neros has quit [Ping timeout: 260 seconds]
kba has quit [Ping timeout: 246 seconds]
fantasticsid has quit [Remote host closed the connection]
<Kakadu> testcocoon: Can you evaluate checksum in your machine?
<Kakadu> it checksums are not equal and you think that it is a bug in opam, you can email them
fantasticsid has joined #ocaml
<testcocoon> Kakadu: I guess it is more a problem of gforge. try 'wget https://gforge.inria.fr/frs/download.php/31595/dose3-3.1.2.tar.gz' the downloaded file seams not to be a tar file
ikaros has joined #ocaml
<pippijn> dose3-3.1.2.tar.gz: data
<pippijn> it's not a gzip file
fasta_ has joined #ocaml
gasche` has joined #ocaml
beckerb_ has joined #ocaml
MrSlippe1 has joined #ocaml
_andre_ has joined #ocaml
bacam_ has joined #ocaml
<Kakadu> yeah, it seems link is wrong
dwmw2_go` has joined #ocaml
gasche has quit [Ping timeout: 245 seconds]
MrSlipper has quit [Ping timeout: 245 seconds]
bacam has quit [Ping timeout: 245 seconds]
diml has quit [Ping timeout: 245 seconds]
dwmw2_gone has quit [Ping timeout: 260 seconds]
_andre has quit [Ping timeout: 260 seconds]
beckerb has quit [Ping timeout: 260 seconds]
fasta has quit [Ping timeout: 260 seconds]
diml has joined #ocaml
<testcocoon> I guess I would be good that opam has also a backup repository for all packages
bacam_ is now known as bacam
larhat has joined #ocaml
<orbitz> like a cache?
djcoin has quit [Ping timeout: 248 seconds]
<testcocoon> orbitz: yes as fallback. as far as I know GODI has this mechanism.
jave has quit [Ping timeout: 252 seconds]
mika1 has quit [Quit: Leaving.]
jave has joined #ocaml
mika1 has joined #ocaml
lolcathost has quit [Quit: brb when I arrive at work]
Neros has joined #ocaml
Yoric1 has joined #ocaml
dwmw2_go` has quit [Ping timeout: 250 seconds]
mika1 has quit [Quit: Leaving.]
Neros has quit [Ping timeout: 245 seconds]
dwmw2_gone has joined #ocaml
Kakadu has quit [Ping timeout: 264 seconds]
Neros has joined #ocaml
mika1 has joined #ocaml
rwmjones has quit [Ping timeout: 250 seconds]
thomasga has quit [Read error: Connection reset by peer]
thomasga has joined #ocaml
cdidd has joined #ocaml
rwmjones has joined #ocaml
syamajala has joined #ocaml
Neros has quit [Ping timeout: 245 seconds]
<syamajala> i need help with command line arguments
djcoin has joined #ocaml
<syamajala> Error: This expression has type string but an expression was expected of type unit
<syamajala> main and main_gen return strings
<flux> my guess is they don't both return strings
<flux> that code works fine unless I add the part that cannot work (main/main_gen)
<flux> (works as in compiles)
<syamajala> val main : unit -> string = <fun>
<syamajala> val main_gen : unit -> string = <fun>
<syamajala> that means they return string right?
<syamajala> still get a little confused reading those
<flux> yes
<flux> the problem is that you're not pasting a self-contained test case that lets us to see your error :)
<flux> often times, when creating such a test case, one finds the problem, though ;-)
<syamajala> i could paste the whole file i guess
<syamajala> basically i want this
<syamajala> 1 optional argument
<syamajala> followed by a required argument
<flux> well, I cannot compile that either, because it depends on external module Ast
<syamajala> yeah its a big project
<syamajala> split over a bunch of files
<flux> well, at least I was able to reproduce the problem
<flux> meh
<flux> you have this: let () = ... main ()
<flux> () cannot unify with "string"
<flux> fix: let _ = ... main () else main_gen ()
<syamajala> i see
Yoric1 has quit [Ping timeout: 252 seconds]
gnuvince has quit [Quit: Remember when men were men and regular expressions recognized regular languages?]
<syamajala> hmm
<syamajala> its not liking the filename argument
<syamajala> i think i want a Rest in the speclist?
dezzy has joined #ocaml
<flux> I like how this @du = <~/log/du.*.gz> in perl becomes this let base = Unix.getenv "HOME" ^ "/log" in let files = Enum.map ((^) (base ^ "/")) (Enum.filter (Pcre.pmatch ~pat:"^du\\..*\\.gz$") (Array.enum (Sys.readdir base))) in ocaml/batteries :)
<flux> syamajala, sounds correct
lusory has joined #ocaml
<syamajala> ok it works, but
<syamajala> i need to pass some extra argument to get it match with the rest
Neros has joined #ocaml
<syamajala> like ./ncml -- my_file.ncml
Yoric has joined #ocaml
<syamajala> i would like to be able to just do ./ncml my_file.ncml or ./ncml -ast my_file.ncml
<flux> you may want to use the anonymous argument of parse for that
<flux> the second argument of Arg.parse that is
<flux> to handle values that don't match any switch
<flux> I've learned a fun new pattern involving flip everyone should embrace immediately: let total_size = flip (flip Enum.fold 0) du **> fun size file -> size + file_size file
<flux> well, new to me at least :(
<flux> I guess I'm on my way to become a haskellist
<syamajala> ok i got it to work the way i want
<syamajala> thanks
<flux> good luck with your project!
<syamajala> its for a compilers class im taking. we translate from our language to python
<syamajala> but we have 2 backends
<flux> cool
<syamajala> i wrote one that spits out a python ast and compiles that, and this other kid and i wrote one that just spits out straight python code
<syamajala> i kinda abandoned the python ast one, but i thought i would revive it since i got really far on it
<flux> well, at least you don't need to write an optimizing compiler
<syamajala> yeah. this is an intro class.
mika1 has quit [Quit: Leaving.]
mika1 has joined #ocaml
gnuvince has joined #ocaml
weie has quit [Read error: Connection reset by peer]
weie has joined #ocaml
mika1 has quit [Read error: Connection reset by peer]
mika1 has joined #ocaml
syamajala has quit [Remote host closed the connection]
mika1 has quit [Client Quit]
smondet has joined #ocaml
weie has quit [Read error: Connection reset by peer]
weie has joined #ocaml
weie has quit [Ping timeout: 245 seconds]
weie has joined #ocaml
Cyanure has joined #ocaml
fantasticsid has quit [Remote host closed the connection]
mattrepl has joined #ocaml
pangoafk is now known as pango
jewel has joined #ocaml
ttamttam1 has quit [Quit: ttamttam1]
Kakadu has joined #ocaml
cago has left #ocaml []
lolcathost has joined #ocaml
hongboz has joined #ocaml
fusillia has quit [Ping timeout: 264 seconds]
eikke has joined #ocaml
ttamttam has joined #ocaml
Cyanure has quit [Remote host closed the connection]
larhat has quit [Quit: Leaving.]
tane has joined #ocaml
ttamttam has quit [Quit: ttamttam]
ttamttam has joined #ocaml
Catnaroek has joined #ocaml
mika1 has joined #ocaml
sampego has quit [Quit: Page closed]
lolcathost has quit [Ping timeout: 255 seconds]
lolcathost has joined #ocaml
Catnaroek is now known as Guest29161
Guest29161 has quit [Read error: Connection reset by peer]
Yoric has quit [Ping timeout: 244 seconds]
mika1 has quit [Quit: Leaving.]
djcoin has quit [Quit: WeeChat 0.3.9.2]
ttamttam has quit [Quit: ttamttam]
tac has joined #ocaml
maufred has quit [Ping timeout: 240 seconds]
maufred has joined #ocaml
gnuvince has quit [Ping timeout: 248 seconds]
hongboz has quit [Ping timeout: 244 seconds]
eikke has quit [Ping timeout: 248 seconds]
gnuvince has joined #ocaml
Yoric1 has joined #ocaml
tane has quit [Quit: Verlassend]
Yoric2 has joined #ocaml
Yoric1 has quit [Ping timeout: 252 seconds]
thomasga has quit [Quit: Leaving.]
sabayonuser2 has joined #ocaml
Submarine has joined #ocaml
sabayonuser2 has quit [Client Quit]
tane has joined #ocaml
ftrvxmtrx has quit [Quit: Leaving]
parlancho has joined #ocaml
myx has quit [Quit: ушёл]
ontologiae has quit [Ping timeout: 252 seconds]
thomasga has joined #ocaml
cdidd has quit [Ping timeout: 265 seconds]
milosn has joined #ocaml
<mk270> gday - does anyone here know the internals of oasis?
pango has quit [Ping timeout: 240 seconds]
pango has joined #ocaml
<mk270> i am looking into fixing or mitigating its lack of support for syntax extensions
<mk270> basically, i want to be able to use oasis with a trivial library that relies on lwt (lwt provides a syntax module that's semimandatory)
<wmeyer> mk270: best is to look at the repository on github
<mk270> wmeyer: hello again
<mk270> i've got the repo cloned
<mk270> and it seems that a myocamlbuild.ml file is a concatenation of varous source files from that repo
<wmeyer> mk270: hi
<mk270> but that's just a guess :)
<wmeyer> mk270: well, Oasis is a complex codebase, i also had no idea :)
emmanuelux has joined #ocaml
<wmeyer> mk270: however adding something to Oasis should be easy
<mk270> it looks fanatically modular
<wmeyer> yes, it is a good codebase.
parlancho has quit []
thomasga has quit [Quit: Leaving.]
<mk270> wmeyer: ah, are you in cambridge?
<wmeyer> yes
<wmeyer> but Cambridge UK of course
<mk270> yup
<wmeyer> why?
<wmeyer> mk270: also UK, i can feel it
<mk270> yes - indeed my username may be a bit of a cambridge uk giveaway but now in londond
<mk270> (moved from citrix to acunu. acunu rolled its own ocaml build system, hence my unfamililarity with then newer tools)
<wmeyer> I like Cambridge
<mk270> me too - lived there for 11 years :)
<wmeyer> :)
<wmeyer> mk270: world is small but Cambridge is relatively small too
<wmeyer> I've heard about Acunu
<wmeyer> FPdays was organised also by Acunu i suppose to be there
<wmeyer> but I missed somewhat, bad timing for me
<mk270> FP exists in its own spacetime continuum
<mk270> and is always scheduled in conflict with the rest of the universe
_andre_ has quit [Quit: leaving]
<wmeyer> FP is just different paradigm, not in every place can be applied. If I've to think clearly how to solve the problem and FP helps a lot in solving problems
<mk270> aye - it's a good way of learning how not to make mistakes in c, python and javascript. to some extent doing FP is debugging features that will turn up in imperative langaeges in ten years time - and nothing wrong with that :)
<tac> If FP has one lesson that C and Python doesn't teach, it's state is poisonous.
<tac> In imperative languages, state is invisible. It's an implicit parameter to every function and method.
<tac> It's like walking around the world unable to feel hot versus cold. You will end up burnt and frost-bitten often.
emmanuelux has quit [Remote host closed the connection]
emmanuelux has joined #ocaml
cdidd has joined #ocaml
<wmeyer> tac: agreed, and there a lot of other non-state related issues - but the origin is how efficient problem can be solved - the stateless programming is just implementation detail - itself it raises barier a lot, but pure functional programming languages suffer from the same disease as imperative ones - just maybe somewhat smaller and in different (better) way
<wmeyer> Prolog is also good, and it does by backtracking also, tries to be pure
<wmeyer> in general state leads to combinotorial explosion of possible states of the program
<wmeyer> actually this is not a big deal - but the problem is here prediction
<wmeyer> it's easy to guess when you have referential transparency
<wmeyer> it's easy to forget a single statement in C
<wmeyer> but in FP you have also closures - which are equaly powerfull tool
<wmeyer> and static type system
<wmeyer> s/powerfull/powerful
<wmeyer> being slightlu distracted ;-)
<orbitz> any of you looked at BLOOM?
<orbitz> Or BLOOM^L?
<tac> wmeyer: The nice thing about the pure languages (modulo unsafe extensions) is that you can compartmentalize where your state can cause trouble
<tac> The bad thing is thinking about that kind of thing is unnaturally on a large scale
<orbitz> I think the problem with Haskell isn't the monads but the lazyness
<orbitz> IME I only want lazyness in a few situations
ontologiae has joined #ocaml
<wmeyer> orbitz: agreed.
<wmeyer> orbitz: but also - pure data structures are quite often notoroius offender for the people with imperative background only
<wmeyer> look at queue example, it's high level but somewhat complicated
<wmeyer> I like imperative feature - nevertheless my code is mostly pure, and I wish we could use more monads in OCaml
<wmeyer> + type level computation is not possible at the moment in OCaml
<wmeyer> what I really like more even than Haskell are dependently typed languages
<wmeyer> and using dependent types not for proves but for embedding DSLs with type systems - however haven't done much yet with dependent types
<wmeyer> s/proves/proofs
<wmeyer> GADTs are nice, but allow to encode just basic invariants really
<wmeyer> however there are very useful for tagless interpreters which are corner stone of implementing DLSs or intermediate representations
<orbitz> Irdis? Erdis? I forget the name, is trying to be the everyman's DT lang
fayden has joined #ocaml
<wmeyer> orbitz: Haven't tried Idris, heard about it, seems to be good, but I like Agda
<wmeyer> however!
<wmeyer> Agda is on haskell side and it's just dependent types
<wmeyer> Coq is nice - but Agda has unicode mix fix which is just so pleasant to see and code
<orbitz> I still haven't found DT's killer-app. Properly sized vectors in my code is just not a problem at this point so I need a more powerful use case. I do like the idea of using DT or linear types to ensure correctness of FFI API's
<wmeyer> orbitz: there is a paper which I can't resemble name
<wmeyer> which shows 3 embeded DSLs with a type system
<wmeyer> look at this (not advertising the project itself), but I envy mixfix + unicode: https://github.com/crypto-agda/crypto-agda/blob/master/composable.agda
<wmeyer> (I have nothing to do with crypto-agda, but it just looks awesome)
<wmeyer> btw: secret switch for tuareg: (setq tuareg-font-lock-symbols t) have fun! :-)
<orbitz> what's that do?
<orbitz> issue with tuareg mode I have is it doesn't indent let open Foo in bar correctly for me
<wmeyer> it composes unicode symbols where would you expect
<orbitz> ah
<wmeyer> so 'a becomes alpha greek symbol -> becomes arrow, fun becomes greek lambda
<wmeyer> etc.
<orbitz> i think that would freak me out
<wmeyer> not becomes mathematical not
<wmeyer> well not really this is just look :-)
<wmeyer> nothing changes in the behavior
<wmeyer> you type fu and then n and turns to lambda
<wmeyer> if you copy that it will be fun
<wmeyer> if you delete n pressing just once it will be again fu
<wmeyer> it's so nice!
<orbitz> yeah i'm just used to reading the ascii form of these
<wmeyer> sorry for spam: http://danmey.org/Screenshot-7.png
<wmeyer> in Haskell it's possible to do type level Qsort and Lambda Calculus evaluator, where in OCaml not now
<wmeyer> type classes serve a pattern matching purpose on types
<wmeyer> actually maybe some type system wizards would show how do type level computation, maybe using first class modules or something like this
gnuvince has quit [Ping timeout: 245 seconds]
<tac> orbitz: Laziness is such a polarizing thing with Haskell.
<orbitz> tac: I just haven't seen any evidence *anyone* can get it right
<orbitz> in terms of using it
<wmeyer> laziness is useful from the performance point of view
<orbitz> it's also a nightmare from a perforamnce point of view
<wmeyer> indeed
<wmeyer> predcting performance
<wmeyer> but purely data structures actually benefit from laziness
<wmeyer> more over laziness can be always explicit, hidden in the data structure implementation
<wmeyer> but we should have lazy pattern matching in OCaml
<wmeyer> so implicit laziness is actually not that good
<wmeyer> the cost overweights benefit
<wmeyer> so yes Haskell is a different beast than OCaml more than because of laziness and not type classes and purity ;-)
<wmeyer> with all implications!
<tac> Type classes are horrible >_<
<tac> They start off good
<tac> but grow terrible very quickly
<orbitz> bah you can get them with firstclass moduels anyways!
<tac> I have a personal pet theory that says that people only really need laziness in total, pure code.
<tac> For things like combinator libraries, which tend to be total anyway
<wmeyer> tac: right, they need or they may want to like?
<orbitz> that is the same conclusion I cameto, but i'm not a type theorist
<wmeyer> sure purity and laziness is a tuple
<wmeyer> but the difference is explicit laziness and implicit laziness
<wmeyer> with all the consequences like G-machine
<wmeyer> what is really good: monads (e.g. low cost closures), strict evaluation and optional explicit laziness if we at that point
<wmeyer> and purity, yes
<tac> heh, I was gonna say
<tac> Purity is the best thing pretty much ever
<orbitz> except it's unsustainable :)
<orbitz> (and totally sucks for debugging!)
<tac> yes, but it prevents so many bugs itself :P
<wmeyer> orbitz: tac agree with both of you :-)
<tac> Also, you can just open up your IO monad and pretend it's ocaml
<wmeyer> btw: let's just look how the language scales
<orbitz> but that sucks
<wmeyer> Haskell - scales well to theorem provers - does not scale too much to low level stuff
<orbitz> like debugging pure code is just a terrible experience IME, butI havne't written much haskell
<tac> orbitz: It's only terrible because there are no good tools for it
<wmeyer> OCaml scales from system programming to theorem provers - but is a bit lower level
<orbitz> so far Ocaml hits all the notches I desire. Just imagine if we got an optimizing compiler. The joys!
<wmeyer> orbitz: Same feeling here! :-)
* tac has never written an ocaml program
<tac> :P
<orbitz> missing out
* wmeyer slaps tac
<tac> Most likely
<orbitz> I get sad when I got to work and have to write dynamically typed stuff
<tac> to be fair, I rarely write Haskell either
<tac> My interest is in dependent types and type theory
<tac> (It's a good way to feel holier-than-thou, don't you think ;)
<wmeyer> orbitz: I quickly get pissed off with the horror of testing and escape to pub.
<wmeyer> tac: cool! which way you go, agda, idris, epigram, Coq?
<tac> I hang out in #agda and #idris.
<tac> But I guess I'm more theoretical?
<tac> Although, my dream is to make this: http://tac-tics.net/quail
<wmeyer> does not matter, i am less theoretical and more like a occasional DT hacker
<tac> Basically, a practical, total and pure programming language
gnuvince has joined #ocaml
<tac> with a built-in proof language, like Idris has
<tac> But where anyone on the internet can supply proofs for your unproven theorems
* wmeyer have eaten quail in China
<wmeyer> s/have/has
<tac> tasty ;)
<wmeyer> i found it stinky actually ;)
<wmeyer> tac: are there any examples of code in Quail?
<tac> wmeyer: Like I said. I'd LIKE to write it some day :)
<tac> Those are my ideas for what it should be
<tac> but there are some open-ended things I need to work out first
<tac> ideally, it will look like Ocaml or Haskell
* wmeyer suggests first bootstrap in OCaml
<tac> But the concept seems neat, doesn't it?
<tac> Let other people write your proofs for you
<wmeyer> tac: yes, maybe it fills the gaps
<wmeyer> tac: would you like mix fix + unicode?
<wmeyer> i just love this
<wmeyer> pure mathematical insanity
<tac> I actually don't care for mixfix how most languages have it, nor unicode at all in the names of variables
<wmeyer> but yes, you mention want more like OCaml, so maybe something in berween
<tac> mixfix is necessary, but the way Haskell does it is not modular. And I don't like having to declare "fixities"
<wmeyer> mixfix is future
<tac> (I don't know how Ocaml does them)
<tac> I plan to have them, but they are on my "open issues" list
<tac> I also think Unicode and operators are hard to search for on something like google
<wmeyer> Nor OCaml neither Haskell does proper mixfix, they do infix or prefix
<wmeyer> you can do easily EDSLs with mix fix
<tac> ah, yeah. I misunderstood what you meant then
<wmeyer> so mixfix
<wmeyer> (In camlish syntax)
<tac> One thing I do want is make the languag eeasy to parse :)
<tac> Which I believe is in direct conflict with mixfix
<wmeyer> let _if_else_then i e t = if i else e then t
<wmeyer> so the _ is a placeholder and not longer a part of identifier
<wmeyer> than you have precedence of each
<tac> yeah
<tac> like in Agda
<wmeyer> but you want more to make the language more scalable and expressive :-)
<wmeyer> at the same time
<tac> I would rather have the language be more parsable and google-able
<wmeyer> choose your poison :-)
<tac> but yeah
<tac> Like I said, those things are on my "open" list
<tac> along with the state of typeclasses
hongboz has joined #ocaml
<wmeyer> good stuff :)
<wmeyer> absolutely typeclasses wanted but *along* with the proper applicative functors
<wmeyer> welll
<wmeyer> actually
<wmeyer> maybe dependent types sorts out modules
<wmeyer> dependent records
<wmeyer> so maybe yes, type classes are enough
lolcathost has quit [Quit: leaving]
gnuvince has quit [Ping timeout: 256 seconds]
<tac> One restriction I was considering was to make it so type classes weren't "open"
<tac> that you could only give an instance when the class was declared or when your datatype was declared
<tac> The openness of typeclasses doesn't work well with modules. You get a diamond dependency problem, where two modules might declare two instances, and a third module would import both of those
<tac> You have a conflict now
<tac> And the instance should be declared as part of the datatype anyway, IMO, because the library-writer should be the one responsible for dictating the *intention* behind the type
<tac> In Haskell, you can't prevent other people from making your datastructure serializable, for instance.
<orbitz> I guess ocaml needs a tiling window manager to compete with Haskell...
<tac> heh
<tac> Ocaml needs a more vocal community, with more evangelicals
<tac> Haskell has got the evangelism down really well
<orbitz> We prefer to sit silently in our smug knowledge of our awesomness
<tac> heh
<orbitz> the new website helps a lot.
<tac> This guy? http://ocaml-lang.org/
lolcathost has joined #ocaml
<orbitz> ocaml.org
<orbitz> which is the same i think
<tac> yeah
<tac> it looks nice
ulfdoz has joined #ocaml
<wmeyer> tac: sorry i was off loop, look at Coq, Coq has both.
<tac> Both of what?
<tac> typeclasses and modules?
<wmeyer> orbitz: or a terminal email client :-)
<wmeyer> tac: yep
<orbitz> wmeyer: but iv'e got gnus!
<wmeyer> orbitz: me too!
<wmeyer> orbitz: and i love gnus
<wmeyer> but somebody said he would like to write one and I thought it's a great idea
<orbitz> implementing xmonad in ocaml could be fun. I think it's a longer project than I could do though
<tac> I'm mostly just wondering if I should implement type classes as their own thing, or if I should do something like Agda's instance parameters
<wmeyer> orbitz: will end up with ocamlbuild style window manager i am sure!
<orbitz> what's that mean? (I don't use ocamlbuild)
weie has quit [Quit: Leaving...]
<wmeyer> sort of OCaml Curse - deliver 90% working, undocumented, containing at least one genius idea project deliveted along with 3 other similar projects with the same constraints.
<orbitz> ah
<wmeyer> and say on the wiki: "not finished but damn useful!" :-) /rant
ulfdoz has quit [Ping timeout: 260 seconds]
<wmeyer> orbitz: I think it's a cyclic dependecy
<wmeyer> 1: we don't have man power
<wmeyer> 2: we need applications to gain more man power, but please see 1: and re-iterate.
<orbitz> my ocaml progarms are at least self contained and reasonbly self documenting :)
<wmeyer> orbitz: sure we have a lot of good librariers and programs :-)
<orbitz> :)
<wmeyer> but some tooling is a continous teething problem
<orbitz> yeah
<wmeyer> and we rely on it quite much
<orbitz> best at OUD was the guy that wrote all the searchable docs, jenkins plugins
<orbitz> guy is an unsung hero
<orbitz> who the hell wants to do the work to get ocaml interfacing with jenkins afterall?
<wmeyer> this unsung hero is Xavier Clerk
<wmeyer> he is got his reasons I am sure! and it's damn useful for some purposes
<orbitz> totally unsexy work
<wmeyer> Xavier C also wrote OCamljava
<orbitz> no i mean, the guy is so awesome because he did work that nobody else wants to do
<wmeyer> so you went for OUD?
<orbitz> yep
<wmeyer> oh
<wmeyer> i "was" there as well
<orbitz> did you speak?
<wmeyer> yes
<orbitz> which talk?
<wmeyer> I did
<wmeyer> compiler
<orbitz> ah yes
<orbitz> Dragon or seomthing?
<wmeyer> ye
<orbitz> interesting talk but too much for me to grok really, i'm a simple man!
<wmeyer> orbitz: and that's what I like! go to bed and forget about compilers ..
<wmeyer> orbitz: but thx, i appreciate that people actually are saying it was interesting
<wmeyer> i was not sleeping very well during OUD ;-)
<wmeyer> but it was a brilliant conference
<wmeyer> It's a pitty we didn't see each other - you are sweedish?
<orbitz> no, I live in sweden though
<orbitz> american
<wmeyer> maybe next OUD or smth else
<wmeyer> here in CB we have often meetups
<orbitz> yeah, hopefully i'll be bale to maek it. I got to this one through erlang even though i didn't go to any oftheerlang stuff
<orbitz> CB?
<wmeyer> there are a lot OCamlers
<wmeyer> Cambridge
<orbitz> ah yes
<orbitz> home of ocamllab
<wmeyer> so yes, I think these ones are pretty small and self contained
<wmeyer> home of Robin Milner the founder of ML
<orbitz> yep
<wmeyer> SPJ and MS Research also here :-)
<wmeyer> and other stuff
<wmeyer> pretty much small town, but the density of light is higher than in other places in UK.
<wmeyer> recently, I saw so many FP people around single table drinking beer - the highest numbers of functional programmers I ever saw not being on a conference
<wmeyer> saw/seen
<orbitz> i see about 80+ FP developers every day :)
<orbitz> of varying skill level
<wmeyer> uu, wow, where?
<orbitz> erlang sho[
<orbitz> shop
<wmeyer> yes, Erlang is a big Functional language
gnuvince has joined #ocaml
Kakadu has quit []
nicoo has quit [Changing host]
nicoo has joined #ocaml
Yoric2 has quit [Ping timeout: 246 seconds]
* wmeyer eating haribo
<tac> wmeyer: a meetup or something?
<wmeyer> tac: if you want, just send a priv message i will add you - if you are willing to come to CB for one day :-)
<wmeyer> i was off loop and not sure if after last welcome insult about Cabal to Haskeller they still like me :S didn't want to be mean, but Cabal made me frustrated
<tac> Where's CB?
<wmeyer> Cambridge, in UK
<tac> I'm not sure I can swing a trip across half the globe any time soon :)
<tac> but thanks
<wmeyer> :D
<wmeyer> sure
<wmeyer> anytime
<wmeyer> the predicate "if you are willing" here didn't have any concrete semantics :)
<tac> some day I'd like to go to Europe to attend some nerdy FP conference or something
<tac> but I need $$ first
<wmeyer> where are you from tac? is it USA?
<tac> Chicago, IL, US
<wmeyer> ah i see, nice place
<wmeyer> you can come over for OCaml conference
<wmeyer> maybe you will have a kernel of your depdendtly typed language Quail?
<tac> perhaps :)
<tac> although, I don't plan on it being dependently typed
<tac> Only the proof language. The main language should be no worse than Ocaml
<wmeyer> i have no idea when the next ocaml conference will be and where, but I suppose, we are all waiting for the "depdently *only* language" in OCaml. :-)
<wmeyer> ah if you put it that way - does not matter, the bottom line is that in Haskell world they have a bunch of modern FP languages
<wmeyer> we have just Coq
<wmeyer> which is fine :-) because Coq is an ultimate king among theorem provers and have dependent types among other features (IMHO)
<wmeyer> but we are missing some smaller languages
<nicoo> wmeyer: We have some stuff, like Ocsigen/Eliom and so on; and I don't see why you polarize OCaml vs. Haskell.
Submarine has quit [Remote host closed the connection]
<wmeyer> nicoo: I don't.
<wmeyer> nicoo: but I see that smaller dependent language would be a good idea.
<wmeyer> nicoo: I love the big things we have
smondet has quit [Ping timeout: 265 seconds]
eikke has joined #ocaml
<nicoo> Yeah, I see what you mean; just having dependent monads would make me happy right now (I need it to formalize some stuff I would like to work on)
<tac> by dependant monads, do you mean indexed monads?
<tac> (in Agda terminology?)
<wmeyer> nicoo: apart from that I think we need to have more language writers in OCaml, but again I really like Haxe I love js_of_ocaml, and Opa is great - but apart from that people just don't experiment too much on their own
<wmeyer> but maybe I exaggerate
<nicoo> tac: I'm not very knowledgeable about Agda, but AFAIK, yes (except that I may want to specify stuff like « M n t { n >= 3t +1 } »
<nicoo> if that makes any sense to you
<nicoo> wmeyer: You have the same kind of problems everywhere; few people try to design languages.
<wmeyer> it's not a problem really, just OCaml is such a nice tool for this purpose - pitty
<wmeyer> of course talking about type safe and modern functional languages.
<nicoo> wmeyer: Haskell is nice for this too ;)
<wmeyer> nicoo: thanks, that's what I know too ;)
<nicoo> Though it seems stuff like OCaml-LLVM suffers from lack of documentation
<nicoo> I hadn't had any particular problem with it
<nicoo> But some friends did
<mk270> it'd be nice for there to be a single place for "ocaml toolchain documentation" issues
<mk270> there must be a lot of code out there which never gets published because it's in an embarrassing state, and the author can't tidy it up because he/she can't find the time to deal with the lack of documentation about how to do things properly
<nicoo> Yup
mcclurmc has joined #ocaml
<nicoo> Thank and there is ocamlfind's horribly embarassing bug where it doesn't always take destdir into account
<wmeyer> mcclurmc: hi
<nicoo> Which makes my life hell when packaging OCaml applications for my Linux distribution
<nicoo> s/Thank/That/
<mk270> yeah - my porblem iwth ocamlfind was that it sometimes chose the wrong ocaml installation :)
<mcclurmc> wmeyer: hello
mye has quit [Quit: mye]
<wmeyer> mk270: I was hit by this too, and then just just found configuration file somewhere in the root. ocamlfind has nice documentation, in general camlcity is nice.
<wmeyer> mcclurmc: and dates for the next n-d-f-p meetup
<wmeyer> ?
<mcclurmc> wmeyer: i'm not sure yet. i had mentioned that it might be the end of january, but that might be too close to the holidays for me to get anyone together to give presentations
<mcclurmc> so i was thinking maybe first or second week of februrary
<mcclurmc> would that work for you, wmeyer?
<wmeyer> mcclurmc: sure, it would. I admit I need to say it was an excellent meetup. I may want to give some talk, not yet known what I will say there this time ;-)
<mcclurmc> wmeyer: well, you beat me to my next question, then ;)
<mcclurmc> (and thanks for saying you enjoyed the meetup, btw)
<mk270> ok
<mk270> is there a guide to "how to make a basic ocaml executable using contemporary tools (opam, oasis)" ?
<wmeyer> mcclurmc: thx, I will try to pick one of the topics, the best is to just drop down email.
<mcclurmc> wmeyer: i was thinking about have a few people do short talks. if you've got a talk you can give in five to ten minutes, it would be perfect
<mk270> ("make" in the sense of "good enough to share with strangers on github")
<mcclurmc> wmeyer: i can't remember if you were there at the very end, but we agreed that we needed a more email-based communication method. so i'm going to make us a google group (just haven't gotten around to it yet)
<wmeyer> mk270: it's not that difficult in fact, but yes needs some experience, you can look at some existing projects on github. The best would be a template, but it does not scale very well. Oasis itself has examples in the tree.
<mk270> *I* know how to do it. i meant "is there a good writeup for someone who can program in ocaml but doesn't know the ever-changing tool combinations"?
<wmeyer> mcclurmc: yep, i was. The conclusion was to setup a nice google group as far as I remember.
<wmeyer> mk270: I think we need just centralised ocaml wiki :-)
<mk270> that's a separate issue
<mk270> we can at least write the content
<mk270> and then worry about the fact that the content can't be found
<wmeyer> mk270: I meant, yes, somebody who wants to create an oasis project could look at it.
<mk270> well, is oasis the recommended way at the moment?
<wmeyer> the problem is man power, not enough people willing enough to contribute time.
<wmeyer> this is usual
<wmeyer> mk270: it is.
<mk270> i konw :)
<mk270> ok, good
<wmeyer> btw: i have some nifty ideas about Oasis
<mk270> ?!
<wmeyer> how to make it more usable
<mk270> you mean how to use oasis? or how to change oasis?
<wmeyer> I talked to people on OUD and to Sylvain before
<mk270> you're basically *increasing* my problem
<mk270> which is that i want the system to be nailed to the wall so it can be documented
tane has quit [Quit: Verlassend]
<wmeyer> no, i meant, in general Oasis is complicated, and more over it generates a lot of file to be specific.
<wmeyer> in general; nothing to do with doc or wiki.
<mk270> well, i want to document what we have
<mk270> i would rather have a bad system which works and doesn't change
<mk270> than a good system that is changing
<wmeyer> mk270: yes
<mk270> because really i'm trying to solve a different problem, which is writing ocaml programs, rather than worrying about the tools used to compile them
<wmeyer> mk270: then Oasis is a great tool for that :-)
<wmeyer> but a global ocaml-wiki would be great
<mk270> as i said, a separate problem
<wmeyer> it's somewhat related, because currently oasis has some documentation, on ocamlcore, has some examples in the tree. It just needs a wiki with life examples right? and wiki is searchable, so it could be a part of it
<mk270> the documentat doesn't say "you can't use this with lwt or many other libraries which ship syntax extensions" even though that limitation has been in the bugtracker for more than a year
<mk270> look, i'll write what i think i mean in a gist - hang on a sec
ulfdoz has joined #ocaml
emmanuelux has quit [Quit: emmanuelux]
emmanuelux has joined #ocaml
gusta911 has joined #ocaml
gustav__ has quit [Ping timeout: 240 seconds]
Snark has quit [Quit: Quitte]
<mk270> wmeyer: https://gist.github.com/4349438 <-- is the sort of thing i'm talking about
<wmeyer> mk270: yes, I think such content would be highly appreciated.
<mk270> ok i shall keep plugging it. i found a sort of example package on github somewhere
MrSlippe1 is now known as Pantoufle
<mk270> so someone has already done a piece of this work
ikaros has quit [Quit: Ex-Chat]
tac has quit [Ping timeout: 245 seconds]
<wmeyer> :)
monadicity has joined #ocaml
<mk270> ah yes, it's a repo called ocaml_skeleton
hongboz has quit [Ping timeout: 265 seconds]
ontologiae has quit [Ping timeout: 252 seconds]
<monadicity> is there a simple web server which I can use to write a web app in ocaml ?
<mk270> monadicity: ocsigen (may not be what you want)
<monadicity> thanks
<wmeyer> monadicity: co-http
<monadicity> cheers
<wmeyer> there was another one too
<avsm> i've been a bit quiet about cohttp since the interface isn't right yet
<avsm> djs55 and i are hacking on it as we have a good idea of what needs to be done to fix it, though
<wmeyer> Ok, I've seen many forks on github, so sorry to spam then :-)
<avsm> wmeyer: all of them had different design choices, hence why its taking so long ;-)
<wmeyer> i never used that, but for sample/simple handling of http it would be sufficient
<avsm> it does work though, just not necessarily very pretty
<avsm> yeah
<wmeyer> avsm: sure
<wmeyer> there was another one, that is production quality
<wmeyer> but don't remember which one
<wmeyer> what was the name of the project
lolcathost has quit [Quit: leaving]
lolcathost has joined #ocaml
<wmeyer> avsm: I was thinking today, how many times emacswiki saved my life
parlancho has joined #ocaml
eikke has quit [Ping timeout: 244 seconds]
TDJACR has joined #ocaml
eikke has joined #ocaml
Yoric has joined #ocaml
gnuvince has quit [Ping timeout: 255 seconds]
milosn has quit [Ping timeout: 252 seconds]
milosn has joined #ocaml