adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.02.3 announced http://ocaml.org/releases/4.02.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
jwatzman|work has quit [Quit: jwatzman|work]
ollehar has quit [Quit: ollehar]
psy_ has quit [Ping timeout: 276 seconds]
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
madroach has quit [Ping timeout: 260 seconds]
madroach has joined #ocaml
rgrinberg1 has joined #ocaml
ril has joined #ocaml
rgrinberg1 has quit [Ping timeout: 265 seconds]
Kakadu has quit [Remote host closed the connection]
zpe has joined #ocaml
pacmann has quit [Remote host closed the connection]
zpe has quit [Ping timeout: 246 seconds]
tautologico has joined #ocaml
mac10688 has quit [Read error: Connection reset by peer]
mac10688 has joined #ocaml
segmond has quit [Ping timeout: 246 seconds]
Mike57_ has quit [Ping timeout: 260 seconds]
swgillespie has joined #ocaml
rossberg has quit [Ping timeout: 240 seconds]
segmond has joined #ocaml
FreeBirdLjj has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
rossberg has joined #ocaml
Guest38 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
echo-area has joined #ocaml
zpe has joined #ocaml
rgrinberg1 has joined #ocaml
zpe has quit [Ping timeout: 252 seconds]
rgrinberg1 has quit [Ping timeout: 264 seconds]
Guest38 has joined #ocaml
Guest38 is now known as adit
Mike57 has joined #ocaml
nullcatxxx_ has joined #ocaml
lopex has quit [Quit: Connection closed for inactivity]
zpe has joined #ocaml
zpe has quit [Ping timeout: 240 seconds]
Muzer has quit [Ping timeout: 246 seconds]
Muzer has joined #ocaml
damason_afk has joined #ocaml
damason has quit [Ping timeout: 240 seconds]
psy has joined #ocaml
psy has quit [Max SendQ exceeded]
psy has joined #ocaml
darkf has joined #ocaml
python476 has joined #ocaml
rgrinberg1 has joined #ocaml
ril has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
psy has quit [Disconnected by services]
psy_ has joined #ocaml
rgrinberg1 has quit [Ping timeout: 252 seconds]
echo-area has quit [Read error: Connection reset by peer]
echo-area has joined #ocaml
cdidd has quit [Ping timeout: 240 seconds]
Bahman has joined #ocaml
psy_ has quit [Ping timeout: 252 seconds]
damason has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 255 seconds]
cdidd has joined #ocaml
damason has quit [Remote host closed the connection]
Bahman_ has joined #ocaml
Bahman has quit [Read error: Connection reset by peer]
Bahman_ is now known as Bahman
ril has joined #ocaml
ril is now known as ril[away]
mac10688 has quit [Ping timeout: 250 seconds]
ril[away] is now known as ril
rgrinberg1 has joined #ocaml
tmtwd has quit [Ping timeout: 272 seconds]
MercurialAlchemi has joined #ocaml
igoroliveira has quit [Quit: Connection closed for inactivity]
pierpa has quit [Ping timeout: 260 seconds]
accname has joined #ocaml
adit has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
FreeBirdLjj has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBird_ has joined #ocaml
damason has joined #ocaml
AlexRussia has quit [Ping timeout: 260 seconds]
riveter has quit [Ping timeout: 250 seconds]
mahem1 has quit [Ping timeout: 250 seconds]
jgjl has joined #ocaml
riveter has joined #ocaml
mahem1 has joined #ocaml
psy_ has joined #ocaml
psy_ has quit [Max SendQ exceeded]
rgrinberg1 has quit [Ping timeout: 240 seconds]
psy_ has joined #ocaml
srax has quit [Ping timeout: 250 seconds]
ril has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ril has joined #ocaml
srax has joined #ocaml
tmtwd has joined #ocaml
psy_ has quit [Ping timeout: 240 seconds]
troydm has quit [Ping timeout: 260 seconds]
damason has quit [Remote host closed the connection]
damason_afk has quit [Remote host closed the connection]
ril is now known as ril[away]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ril[away] is now known as ril
Haudegen has quit [Ping timeout: 276 seconds]
tmtwd has quit [Ping timeout: 240 seconds]
zpe has joined #ocaml
Haudegen has joined #ocaml
fluter has quit [Ping timeout: 246 seconds]
kushal has joined #ocaml
<wolfcore> Haven't looked too far into this, but are ocaml functors analogous to typeclassses in Haskell?
fluter has joined #ocaml
<flux> wolfcore, maybe not really analoguous but they offer the ability to express similar intents. http://www.stefanwehr.de/publications/Wehr_ML_modules_and_Haskell_type_classes_SHORT.pdf
<flux> wolfcore, the key thing missing is that in haskell the language automatically chooses the code to execute based on the type of the expression
<flux> on the other hand, the module system itself is much more expressive than haskell's
<flux> so basically how it goes is that ocaml guys envy haskell's type classes and haskell guys envy ocaml's module system.. :)
rgrinberg1 has joined #ocaml
freehck has joined #ocaml
ril is now known as ril[away]
ely-se has joined #ocaml
rgrinberg1 has quit [Ping timeout: 272 seconds]
octachron has joined #ocaml
ril[away] is now known as ril
ril has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
psy_ has joined #ocaml
michael_lee has joined #ocaml
accname has quit [Ping timeout: 240 seconds]
orbifx has joined #ocaml
<orbifx> hello #ocaml
<freehck> hi
<companion_cube> hi
<reynir> I've been getting into puppet at work. I think it's a great idea, but I think the language is horrible ./
<reynir> :/
ollehar has joined #ocaml
<ely-se> can you have abstract type constructors?
<python476> reynir: don't ever use docker
ollehar has left #ocaml [#ocaml]
<companion_cube> ely-se: what do you mean?
<ely-se> module type T = sig type 't set end;;
<ely-se> like that
<companion_cube> sure
<companion_cube> look at Map.S
<ely-se> nice
<ely-se> I forgot the apostrophe at first
<ely-se> hence I was confused :P
<ely-se> confuzzled
mort___ has quit [Ping timeout: 246 seconds]
kushal has quit [Read error: Connection reset by peer]
kushal has joined #ocaml
orbifx has quit [Quit: WeeChat 1.3]
kushal has quit [Quit: Leaving]
accname has joined #ocaml
mort___ has joined #ocaml
_andre has joined #ocaml
orbifx has joined #ocaml
FreeBirdLjj has joined #ocaml
mort___ has quit [Ping timeout: 252 seconds]
FreeBird_ has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
yomimono has joined #ocaml
Kakadu has joined #ocaml
michael_lee has quit [Remote host closed the connection]
Bahman has quit [Quit: ave atque val]
jabesed has joined #ocaml
Sorella has quit [Quit: Connection closed for inactivity]
Haudegen has quit [Ping timeout: 240 seconds]
echo-area has quit [Remote host closed the connection]
dsheets has joined #ocaml
yomimono has quit [Ping timeout: 246 seconds]
<Khady> Hi. I try to use module aliases. Without success
<Khady> Is there something to do add except the `no-alias-deps` flag?
lopex has joined #ocaml
Haudegen has joined #ocaml
mort___ has joined #ocaml
yomimono has joined #ocaml
<mort___> quick opam questin - can i pin to a specific git commit? (and if so, how? :)
<Drup> opam pin add <name> <repo>#<tag>
<mort___> ta
<Drup> (tag being anything adressable in git, so a branch, a commit, ..)
sepp2k has joined #ocaml
FreeBirdLjj has joined #ocaml
jabesed has quit [Ping timeout: 240 seconds]
mort___ has quit [Quit: Leaving.]
mort___ has joined #ocaml
netrobyatmobile has joined #ocaml
ygrek has quit [Ping timeout: 260 seconds]
AlexRussia has joined #ocaml
yomimono has quit [Ping timeout: 246 seconds]
ggole has joined #ocaml
dsheets has quit [Ping timeout: 244 seconds]
Simn has joined #ocaml
BitPuffin has joined #ocaml
ely-se has quit [Quit: leaving]
igoroliveira has joined #ocaml
sepp2k has quit [Ping timeout: 240 seconds]
ely-se has joined #ocaml
freehck has quit [Ping timeout: 240 seconds]
Sorella has joined #ocaml
rgrinberg1 has joined #ocaml
dsheets has joined #ocaml
rgrinberg1 has quit [Ping timeout: 250 seconds]
ryanartecona has joined #ocaml
accname has quit [Ping timeout: 240 seconds]
igstan has joined #ocaml
yomimono has joined #ocaml
charpi has joined #ocaml
igstan has quit [Quit: igstan]
rgrinberg1 has joined #ocaml
larhat1 has joined #ocaml
mort___ has quit [Ping timeout: 246 seconds]
mort___ has joined #ocaml
ceryo has joined #ocaml
<Leonidas> I thing this is called a 'commitish' in git lingo.
<Leonidas> *think
* Leonidas was super surprised by function names containing the word "don't"
<Leonidas> turns out this is completely valid but feels strange
<Leonidas> let o'caml = 42;;
freehck has joined #ocaml
<python476> talking about ocaml, I have some exercises to finish
<Enjolras_> Leonidas: this is mostly useful at the end of identifier
<flux> and even more useful when you have derivates of a function ;-)
<Enjolras_> Leonidas: let f' = id in let f x = f' @@ fst x
<Enjolras_> stuffs like this
<companion_cube> +1
<companion_cube> gah, design choices
<companion_cube> I have like 3 ou 4 slightly different versions of the same AST
<Leonidas> Enjolras_: yes, I've seen this often, but seeing it inside an identifier and not at the end has still surprised me
<companion_cube> and I'd like not to duplicate all the code around them, but it's *hard*
<Leonidas> but I use a language that has "-" inside identifiers, so whatever :-)
<Enjolras_> add GADT's
<python476> Leonidas: and * around ?
<Enjolras_> let a-b = a - b :D
<flux> or do it like sql. you can use anything as an identifier, as long as it's in double quotes
<flux> let "B subtracted from A" = a - b
<Leonidas> python476: yes.
<Leonidas> *?*, completely valid.
<python476> I love that fact too
<Leonidas> Enjolras_: yes, I always wanted a language where a-b would be a valid name and a - b subtraction.
<Enjolras_> flux: sql doesn't allow anything. Only ascii
<Enjolras_> at least not mysql
ryanartecona has quit [Quit: ryanartecona]
<companion_cube> Enjolras_: I tried, it works but it's TERRIBLE
<companion_cube> so many type annotations and magic
<companion_cube> I'd like something that can be maintained by a human being
<ggole> companion_cube: living with duplication vs removing it with ugly machinery is always a nice choice to have to make
<companion_cube> yay
<companion_cube> I'm going to try the `private alias + views` route
<Enjolras_> as someone told me recently, there is a DRY department in hell
<flux> enjolras_, well, ie. newlines are fair play in PostgreSQL
<Enjolras_> newline is in ascii set :)
<flux> well, ä isn't ;-)
<companion_cube> maybe the DRY department is in competition with the GADT department
<ggole> GADT can lead to code duplication of its own, too
<companion_cube> did I mention the fact that GADTs make the type parametric, which prevents me from using first-class modules?
<Enjolras_> companion_cube: it's the same
<flux> enjolras_, select * from "☃"; works just fine ;)
<companion_cube> gah this is so annoying
sepp2k has joined #ocaml
<ggole> companion_cube: what's different about the ASTs?
<companion_cube> every time I remove one case, out of roughly 10
<companion_cube> yay
<ggole> Oh, that problem. Right.
<ggole> There's no good solution for this in OCaml as far as I know.
<companion_cube> yes, I know, but I'm still looking for one -_-
<companion_cube> so far I've thought about: 1/ GADT 2/ polymorphic variants 3/ private aliases
<companion_cube> (+ views)
<companion_cube> I didn't consider the visitor pattern though
<ggole> 4/ assert false
<companion_cube> yeah, but that makes me a sad panda
larhat1 has quit [Quit: Leaving.]
<ggole> I don't disagree, but I also don't think the other choices are much better.
<companion_cube> I'm wondering, too
<companion_cube> or maybe, make very very local views
<companion_cube> I mean, use the all-cases type everywhere but have a view that hides the `assert false` away
<ggole> Seems like the machinery would outweigh any possible benefit?
<companion_cube> that one's pretty lightweight, actually
<companion_cube> funny, there's a burst of activity on batteries, after months of silence
<ggole> Then maybe I'm thinking of something a bit different.
kushal has joined #ocaml
<companion_cube> all that for 30-something `assert false`
<companion_cube> maybe I should forget this
mort___ has quit [Quit: Leaving.]
accname has joined #ocaml
mort___ has joined #ocaml
<companion_cube> haha such hack
<groovy2shoes> what'd you wind up with?
<ggole> Obj.magic to get the type indices you want?
<companion_cube> nah
* ggole relived/disappointed
<companion_cube> I'm trying the "private alias + view for each AST"
<ggole> Er, relieved
<companion_cube> but because I don't want to copy module types everywhere just to remove a few things in them, I'm going to hide stuff by changing their type to [`Not_available]
<ggole> Ah, that is a bit untidy.
<companion_cube> say I have 9 cases out of 10; the function that builds the 10-th case will now be of type [`Not_available], because this way I don't have to copy the 9 other types
<companion_cube> :D
<groovy2shoes> ah
<companion_cube> that's not so ugly after all
<groovy2shoes> it might be a bit untidy, but I'd argue it's less untidy than copy+pasting a bunch of AST code
<companion_cube> yes, especially because the code to copy-paste includes printing, substitutions, smart constructors, etc.
<companion_cube> don't want to copy the 40 or 50 function signatures to remove one constructor
jeffmo has quit [Quit: jeffmo]
<ggole> assert false doesn't have that problem ;)
<ggole> But it probably does make you itch a bit.
MercurialAlchemi has quit [Ping timeout: 240 seconds]
libertas has joined #ocaml
jimt has quit [Ping timeout: 240 seconds]
<libertas> Hi, I need some help. I'm doing a MOOC on Ocaml and have to find the minimum integer for an array. We have not learned yet about the head :: tail construct, so I'm trying to pass elements in a recursive way, but I'm not able to do this in a functional way
<libertas> my code: http://pastebin.com/qmCN3MMB
<libertas> how can I do this?
<ggole> libertas: first, head::tail works for lists, not arrays. You'll have to use indexing rather than pattern matching of that kind.
<libertas> ok, I've read some things about ocaml, but I'm trying to learn it now...
<companion_cube> ggole: in that case I shouln't have the problem either
<groovy2shoes> libertas, you could use a nested recursive function that keeps track of the current index and the current min as parameters
<groovy2shoes> libertas, there's not really a lot of good ways to handle Arrays in a functional way, afaik
<libertas> groovy2shoes: I'll try that, but it doesn't seem very easy for my first try
<ggole> I've left most of the logic for you to fill in yourself.
<reynir> I think they're allowed to assume the array is non-empty
<libertas> reynir: that's correct
<ggole> Then raising an exception in that last ... is appropriate
<libertas> ggole: thanks, I'll give it a good try ;-)
jimt has joined #ocaml
<accname> hey im having a question. Is there a way of calling a function several time untill an condition occurs?
troydm has joined #ocaml
ousado has quit [Read error: Connection reset by peer]
<companion_cube> a while loop?
<accname> hmm will have to check of that works
kushal has quit [Read error: No route to host]
<accname> nah that won't work i think
<reynir> how do you call the function?
ceryo has quit [Quit: Textual IRC Client: www.textualapp.com]
<accname> well its kinda complicated
<accname> I have a binary tree
ohama has quit [Ping timeout: 265 seconds]
kushal has joined #ocaml
<accname> I have a function which stats at the top of the tree and checks a certain condition
ceryo has joined #ocaml
<accname> if the condition is found the function will reduce the tree and return it
jeffmo has joined #ocaml
<accname> and the tree has to be walked again from the beginning
ceryo has quit [Client Quit]
<groovy2shoes> so you need to call the function until the tree doesn't change anymore?
<accname> exactly
<accname> the problem i am facing is the return value of the function which changes the tree
<accname> simply walking the tree is not the problem
<groovy2shoes> so save the last tree in a ref and use while last_tree != curr_tree
<groovy2shoes> or write a function to do it recursively
ohama has joined #ocaml
<accname> I need to look at the ref stuff :)
<reynir> let rec fix f tree = let tree' = f tree in if tree = tree' then tree' else fix f tree'
<reynir> erm
<reynir> pass a predicate pred, and replace the equality with pred tree', I guess
<accname> hmmm
<accname> that might work too
<accname> thank ill try both :)
* ggole looks at http://shaunlebron.github.io/parinfer/index.html and wonders whether ocp-indent could be persuaded to do that
ousado has joined #ocaml
ely-se has quit [Quit: leaving]
pierpa has joined #ocaml
MercurialAlchemi has joined #ocaml
tmtwd has joined #ocaml
ncthom91 has joined #ocaml
ely-se has joined #ocaml
netrobyatmobile has quit [Quit: Connection closed for inactivity]
ely-se has quit [Quit: leaving]
ollehar has joined #ocaml
ryanartecona has joined #ocaml
BitPuffin has quit [Ping timeout: 276 seconds]
larhat1 has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<libertas> ggole: groovy2shoes: this gives me a syntax error, but it seems closer: http://pastebin.com/KHQ657m3
<libertas> how to correct this?
ceryo has joined #ocaml
rgrinberg1 has quit [Ping timeout: 244 seconds]
<ggole> You're missing the body of a let: https://gist.github.com/86daca39d16bdc8492aa
slash^ has joined #ocaml
<ggole> (The function is also more complicated than necessary. However, I would make the current version work before trying to address that.)
slash^ has left #ocaml [#ocaml]
slash^ has joined #ocaml
FreeBirdLjj has quit [Read error: Connection reset by peer]
ollehar has quit [Ping timeout: 264 seconds]
struk|work has joined #ocaml
rgrinberg1 has joined #ocaml
<libertas> sometimes, it's not obvious for me to know what to place after a 'in'
jgjl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<ggole> Yeah, it's not hard to lose track of which let you are ending
<ggole> Indentation tools can help with that a bit
ncthom91 has joined #ocaml
yomimono has quit [Quit: Leaving]
mort___ has quit [Quit: Leaving.]
<libertas> yes
<libertas> another try, typecheck is fine, but returns unit array -> unit and not int array -> int http://pastebin.com/ArdZKscw
ncthom91 has quit [Client Quit]
<groovy2shoes> you're not actually looping in your loop
<groovy2shoes> gotta call loop with the new index and new elt
<pierpa> for the mooc there's the ocamlmooc channel
<ggole> The unit there comes from a one-arm if
<libertas> pierpa: thanks, didn't know the channel
<pierpa> ;)
<libertas> groovy2shoes: so why is the last line not calling the loop?
<groovy2shoes> that calls loop once
mort___ has joined #ocaml
<pierpa> I think the error would be obvious if you indented the code better
<groovy2shoes> but you need to call it again inside of loop itself to actually loop
<libertas> ok thanks
<pierpa> what's the purpose of: let elt = a.(index) in elt
orbifx has quit [Quit: WeeChat 1.3]
<groovy2shoes> the first if condition you have would be your termination condition, so don't call loop there... call it in the else
accname has quit [Ping timeout: 240 seconds]
<libertas> pierpa: I'm just starting with ocaml so what comes after in is sometimes a challenge for me...
<pierpa> I understand
ski has quit [Ping timeout: 244 seconds]
BitPuffin has joined #ocaml
ski has joined #ocaml
pierpa has quit [Ping timeout: 260 seconds]
ril has joined #ocaml
lobo has joined #ocaml
ncthom91 has joined #ocaml
darkf has quit [Quit: Leaving]
charpi has quit [Remote host closed the connection]
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jwatzman|work has joined #ocaml
ncthom91 has joined #ocaml
ousado has quit [Changing host]
ousado has joined #ocaml
ryanartecona has quit [Quit: ryanartecona]
^elyse^ has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<companion_cube> well, it was doomed
<companion_cube> I'll go back to the `assert false` version, maybe with a bunch of phantom types just for the documentationf
<companion_cube> -s
<companion_cube> -f
<groovy2shoes> aw didn't work?
<^elyse^> what are intrinsic dependencies for OCaml programs?
<^elyse^> just the standard library?
<companion_cube> well it's more complicated
Guest38 has joined #ocaml
<companion_cube> it's not finished yet, and I'm already suffering too much
<companion_cube> ^elyse^: I guess so, why?
<groovy2shoes> companion_cube, why do you need so many different ASTs?
<^elyse^> companion_cube: I'm evaluating several tools for my project and one of the goals is to have few and small dependencies
<companion_cube> because I wanted to encode the invariants after a series of transformations
<companion_cube> some transformations remove one case
<groovy2shoes> ah
<^elyse^> I don't want to have to ship 500MB of libraries
<groovy2shoes> so that rules out Java ;)
<^elyse^> yeah, I wrote some code in C++ but I can'
<^elyse^> t stand the lack of pattern matching. then I tried Rust but I can't stand all the lifetime nonsense that gets in the way of my algorithms
<companion_cube> OCaml is relatively lightweight
<^elyse^> I'm now looking at OCaml and SML
<^elyse^> I've never used SML before though
<groovy2shoes> yeah... I'm learning Rust the hard way and it seems like the only reason to use it over ML is if you really need to be that low-level
<companion_cube> I mean, an OCaml binary should weight a few megabytes at most (unless you use lots of libraries or Core)
<groovy2shoes> ^elyse^, you can always do a little hello world program in both OCaml and your preferred SML and see what the binary size looks like
<^elyse^> companion_cube: nice
<^elyse^> groovy2shoes: I see Rust as a DSL for things that can't afford a GC.
<groovy2shoes> ^elyse^, pretty much
<^elyse^> I started working on that project I talked about recently
<groovy2shoes> which project was that?
<^elyse^> programming language with the same use cases as Python (i.e. small programs) but purely functional and typed
<groovy2shoes> nice
<groovy2shoes> I'd be very interested in a language like that
<edwin> if you want small binaries might want to avoid the Unix module, for anything practical I don't think thats feasable though
<^elyse^> as per Wadler's Law, I already settled on a lexical syntax for comments: they start with # so that #! need not be special-cased
<groovy2shoes> what about block comments?
<^elyse^> no idea!
<^elyse^> lol, the download link on the site of SML/NJ 404s
<groovy2shoes> how about nestable #{ }#
<groovy2shoes> nextable block comments ftw
<groovy2shoes> nestable*
<groovy2shoes> weird, I just nabbed SML/NJ a couple days ago... maybe they're preparing a new release?
mort___ has quit [Ping timeout: 246 seconds]
<companion_cube> it's only 120kB, edwin
<companion_cube> Unix isn't big
<edwin> ah I was thinking about static linking sorry
<companion_cube> even then
<companion_cube> I mean, that depends on how small you want your binary
<companion_cube> but to remain in the few-MB range, Unix is fine
<^elyse^> oww, OCaml depends on Cygwin, let's try Vagrant the
<^elyse^> n
Kakadu has quit [Quit: Page closed]
<dmbaturin> ^elyse^: Do you have the semantics and syntax design somewhere?
<groovy2shoes> ^elyse^, there's a version of OCaml for windows that doesn't depend on Cygwin
<dmbaturin> And yes, I've definitely seen cygwin-free builds somewhere.
Haudegen has quit [Ping timeout: 252 seconds]
<groovy2shoes> uses cygwin for the dev environment, but resulting executables don't depend on Cygwin
<^elyse^> does ocamllex ship with ocaml on Debian?
<groovy2shoes> no idea
<groovy2shoes> it does on FreeBSD
<^elyse^> groovy2shoes: I don't want Cygwin on my machine.
<^elyse^> groovy2shoes: ok, I'll just assume it does then :P
<groovy2shoes> wellp, I don't know of any OCaml for windows that doesn't need it in some fashion or another
<groovy2shoes> cool
<dmbaturin> ^elyse^: Apparently it does. There is no separate package for it.
<^elyse^> I can't wait to program in OCaml. :D
<dmbaturin> groovy2shoes: To my understanding, the only thing it absolutely needs from cygwin is the assembler. It probably can be replaced with the assembler from mingw.
SomeDamnBody has joined #ocaml
<SomeDamnBody> I can't pin packages locally
contempt has quit [Ping timeout: 272 seconds]
<SomeDamnBody> whenever I try I get: Synchronizing with <local directory> Your request can't be satisfied <package> is not available because the package is pinned to
<SomeDamnBody> so I don't know what to do
contempt has joined #ocaml
ryanartecona has joined #ocaml
ril has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ygrek has joined #ocaml
jeffmo_ has joined #ocaml
<SomeDamnBody> nevermind a dependency was pinned that didn't match the new dependency needs for the to be pinned package
Haudegen has joined #ocaml
jeffmo has quit [Ping timeout: 260 seconds]
jeffmo_ is now known as jeffmo
ryanartecona has quit [Ping timeout: 250 seconds]
ygrek has quit [Ping timeout: 250 seconds]
nullcatxxx_ has joined #ocaml
orbifx has joined #ocaml
ryanartecona has joined #ocaml
BitPuffin has quit [Ping timeout: 255 seconds]
sepp2k has quit [Quit: Leaving.]
Kakadu has joined #ocaml
ygrek has joined #ocaml
pierpa has joined #ocaml
jeffmo has quit [Ping timeout: 246 seconds]
jeffmo has joined #ocaml
rgrinberg1 has quit [Read error: Connection reset by peer]
rand has joined #ocaml
<^elyse^> I'll write a parser today probably
<^elyse^> got the AST sorted out
^elyse^ has quit [Quit: Leaving]
Guest38 has quit [Read error: Connection reset by peer]
kushal has quit [Quit: Leaving]
raphaelss has joined #ocaml
larhat1 has quit [Quit: Leaving.]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
dsheets has quit [Ping timeout: 240 seconds]
Algebr has joined #ocaml
^elyse^ has joined #ocaml
freehck has quit [Remote host closed the connection]
<Algebr> Don't remember if I asked this before, how can I do mutally recurisve classes? class foo = object method thing : bar end and class object bar method g : foo end
fleaswallow has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
<ggole> class foo = object method f = 0 end and bar = object method g = 1 end
octachron has quit [Quit: Leaving]
ggole has quit []
<^elyse^> Can I get Menhir to tell me more about conflicts than just their existence?
accname has joined #ocaml
<thizanne> menhir --explain
zpe has quit [Remote host closed the connection]
rgrinberg1 has joined #ocaml
<thizanne> and then you have a yourfile.conflicts file
<Algebr> ggole: Ah! thank you, didn't realize i didn't need the extra class keyword
<Algebr> but its makes sense
larhat1 has joined #ocaml
larhat1 has quit [Remote host closed the connection]
larhat1 has joined #ocaml
ncthom91 has joined #ocaml
nullcatxxx_ has joined #ocaml
python476 has quit [Ping timeout: 246 seconds]
jeffmo has quit [Quit: jeffmo]
accname has quit [Ping timeout: 240 seconds]
<Algebr> Why do methods not have as strong type inference abilities as plain functions
ril has joined #ocaml
orange8` has joined #ocaml
mfp has quit [Read error: Connection reset by peer]
ceryo has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
jeffmo has joined #ocaml
<def`> inference of higher rank polymorphism is not decidable afaik
<def`> and more practically, not principal
<^elyse^> thizanne: yes that helped thanks! <3
orbifx1 has joined #ocaml
tristero has quit [Ping timeout: 244 seconds]
mfp has joined #ocaml
jeffmo has quit [Quit: jeffmo]
jeffmo has joined #ocaml
<^elyse^> woo, my parser compiles
<^elyse^> time to ship it!
jeffmo has quit [Client Quit]
jeffmo has joined #ocaml
grapevines has joined #ocaml
<grapevines> test
<companion_cube> parser for what language?
MercurialAlchemi has quit [Ping timeout: 264 seconds]
grapevines has quit [Client Quit]
sapotecharts has joined #ocaml
<sapotecharts> Any easy way that I can fix this error with an argument to the interpreter?
<sapotecharts> Error: This expression has type (int option -> 'a) -> (int option -> 'a array -> 'a) -> 'a as 'a but an expression was expected of type
<sapotecharts> (int option -> 'a) -> (int option -> 'a array -> 'a) -> 'a as 'a
<sapotecharts> vs (int option -> bool) -> ('c option -> 'b array -> bool) -> bool as 'b
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<companion_cube> this type is weird
<sapotecharts> Yeah it's weird, but it is okay, I am doing stuff with Scott encoded data.
<companion_cube> a problem, here, is that you would have to unify bool with 'b
<companion_cube> but then that would make bool equal to a function type...
<sapotecharts> Can't I just tell the type system to be quiet?
<companion_cube> oh :D
<companion_cube> not really, no
<companion_cube> you can use -rectypes to weaken it a little
<companion_cube> (careful with the nontermination in t he typechecker, then)
<^elyse^> companion_cube: one I'm working on
<^elyse^> companion_cube: about the binary size
<companion_cube> oh wait, isn't it Emily or something like this?
<^elyse^> currently I have AST and parser, and it's 300 kB
<^elyse^> so that's quite reasonable
mfp has quit [Ping timeout: 260 seconds]
jeffmo has quit [Ping timeout: 260 seconds]
_whitelogger has joined #ocaml
sapotecharts has quit [Quit: Page closed]
^elyse^ has quit [Quit: Leaving]
jeffmo has joined #ocaml
^elyse^ has joined #ocaml
Algebr has quit [Remote host closed the connection]
orange8` has quit [Ping timeout: 260 seconds]
mfp has joined #ocaml
ygrek has quit [Ping timeout: 250 seconds]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<dmbaturin> companion_cube: mcc's Emily is dynamically typed AFAIR.
<dmbaturin> I should look into it again now when she doesn't make design changes every day. :)
ncthom91 has joined #ocaml
orange8` has joined #ocaml
lobo has quit [Quit: leaving]
jeffmo has quit [Ping timeout: 255 seconds]
jeffmo has joined #ocaml
orange8`` has joined #ocaml
mac10688 has joined #ocaml
wolfcore has quit [Ping timeout: 240 seconds]
orange8` has quit [Ping timeout: 260 seconds]
nullcatxxx_ has joined #ocaml
ygrek has joined #ocaml
wolfcore has joined #ocaml
nullcatxxx_ has quit [Read error: Connection reset by peer]
<^elyse^> what is Emily?
<^elyse^> also eww dynamic typing!
wolfcore is now known as Guest95941
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
orange8`` has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
ryanartecona has quit [Quit: ryanartecona]
<dmbaturin> ^elyse^: Where are your syntax and type system design?
<^elyse^> dmbaturin: in my head!
<dmbaturin> You should write it down. What if something happens to your head?
rgrinberg2 has joined #ocaml
<^elyse^> then it's gone
rgrinberg1 has quit [Ping timeout: 264 seconds]
fleaswallow has quit [Quit: Leaving]
ril is now known as ril[away]
^elyse^ has quit [Quit: Leaving...]
Denommus has quit [Quit: going home]
ril[away] is now known as ril
yano has joined #ocaml
yano has left #ocaml ["WeeChat, The Better IRC Client -- https://weechat.org/"]
jeffmo has quit [Quit: jeffmo]
damason has joined #ocaml
BitPuffin|osx has joined #ocaml
ygrek has quit [Ping timeout: 276 seconds]
nullcatxxx_ has joined #ocaml
rand has quit [Quit: leaving]
AlecTaylor has joined #ocaml
<AlecTaylor> hi
<AlecTaylor> adrien: There's a MOOC on OCaml now, maybe add it to the topic? :)
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
orbifx1 has quit [Quit: WeeChat 1.3]
ril has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
apache2 has quit [Remote host closed the connection]
apache2 has joined #ocaml
orbifx has quit [Ping timeout: 240 seconds]
theblatte has quit [Ping timeout: 246 seconds]
boegel has quit [Quit: No Ping reply in 180 seconds.]
neferty has quit [Remote host closed the connection]
mehdi___ has quit [Quit: No Ping reply in 180 seconds.]
theblatte has joined #ocaml
mehdi_ has joined #ocaml
boegel has joined #ocaml
neferty has joined #ocaml
solrize has quit [Ping timeout: 246 seconds]
ryanartecona has joined #ocaml
ygrek has joined #ocaml
solrize has joined #ocaml
ril has joined #ocaml