Denommus` has quit [Remote host closed the connection]
ericbmerritt_ is now known as ericbmerritt
toomuchtvrotsurb has quit [Remote host closed the connection]
Denommus` has joined #ocaml
ben_3 has quit [Read error: Connection reset by peer]
Denommus has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
martinium has joined #ocaml
kushal has joined #ocaml
rossberg has joined #ocaml
kushal has quit [Remote host closed the connection]
Denommus` has quit [Ping timeout: 244 seconds]
vbmithr has quit [Quit: leaving]
vbmithr has joined #ocaml
tennix has quit [Ping timeout: 256 seconds]
tennix has joined #ocaml
kushal has joined #ocaml
divyanshu has quit [Ping timeout: 240 seconds]
remyzorg has joined #ocaml
Denommus has joined #ocaml
MercurialAlchemi has joined #ocaml
sepp2k has joined #ocaml
octachron has quit [Ping timeout: 252 seconds]
manizzle has joined #ocaml
<MercurialAlchemi>
Drup: have you looked at Resharper?
<MercurialAlchemi>
er, WebSharper
divyanshu has joined #ocaml
<Drup>
the eliom-like F# thingy ?
<Drup>
if so, then yes
<Drup>
I remember my impression being "the website is trendy"
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
voglerr_ has joined #ocaml
voglerr_ has quit [Remote host closed the connection]
<Drup>
It was some times ago, though
creichert has joined #ocaml
<Drup>
MercurialAlchemi: why ?
divyanshu has quit [Ping timeout: 240 seconds]
voglerr has quit [Ping timeout: 256 seconds]
divyanshu has joined #ocaml
<MercurialAlchemi>
Drup: well, they give me money to do .Net development these days
<MercurialAlchemi>
there is no chance in hell I can convince anyone that OCaml is a thing in a country where Java is exotic
<Drup>
you didn't convinced them to use OCaml :D
<MercurialAlchemi>
but maybe if I mumble .Net .Net enough I can use it one day
<Drup>
Java is exotic ?
<MercurialAlchemi>
yeah
<Drup>
which country are we talking about ? :(
<MercurialAlchemi>
Denmark
<Drup>
huuum, ok
<Drup>
mirage b
<MercurialAlchemi>
it's really a Microsoft stronghold
<Drup>
err, wrong chan x)
<MercurialAlchemi>
but, well, it looks pretty cool if you have to do .Net
<Drup>
and so F# is ok ?
<MercurialAlchemi>
with a reactive UI thingie and so on
<MercurialAlchemi>
F#?
<MercurialAlchemi>
well, it's a hard sell
<MercurialAlchemi>
just less hard than OCaml, I think
<Drup>
ok
remyzorg has quit [Ping timeout: 252 seconds]
<Drup>
I didn't knew you were doing web things
<MercurialAlchemi>
(it's kind of horrific how you feel sometimes that nobody has heard that you have other databases than MSSQL)
<MercurialAlchemi>
done that for a long time, but with cookie-cutter techs
<MercurialAlchemi>
formerly Spring/Hibernate and .Net MVC, right now .Net MVC
<MercurialAlchemi>
that said, it's a decent stack for an OO thing
<Drup>
I don't know a single thing about it :p
<MercurialAlchemi>
your regular mvc
<Drup>
right
zpe has joined #ocaml
<MercurialAlchemi>
boring but gets the job done
<MercurialAlchemi>
for some reason, business here has found out about Angular, so it's trenty
<MercurialAlchemi>
trendy
<Drup>
:D
<Drup>
It's not microsoft, though, no typescript love ? :D
remyzorg has joined #ocaml
<MercurialAlchemi>
no, don't think so
<MercurialAlchemi>
just crap JS
mort___1 has quit [Quit: Leaving.]
<MercurialAlchemi>
anyway, dinner time here :)
tashjash has quit [Quit: Leaving]
zpe has quit [Ping timeout: 246 seconds]
teiresia1 has joined #ocaml
mort___ has joined #ocaml
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<dmbaturin>
MercurialAlchemi: It's a bit odd to hear this about Denmark after having read brics.dk ML papers.
<Drup>
dmbaturin: industry ≠ academia
teiresias has quit [Ping timeout: 246 seconds]
<dmbaturin>
Well, no doubt. Hearing that Java is exotic somewhere is surprising on its own though.
Submarine has joined #ocaml
Submarine has joined #ocaml
teiresia1 has quit [Ping timeout: 256 seconds]
jtfmumm has joined #ocaml
teiresias has joined #ocaml
ggole has quit []
grouzen has quit [Ping timeout: 256 seconds]
shinnya has joined #ocaml
jabesed has quit [Read error: No route to host]
jabesed has joined #ocaml
MrScout has joined #ocaml
ollehar1 has joined #ocaml
<ollehar1>
welp, I'm fired. anyone knows any place?
<Drup>
Ouch :x
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
dariusc93 is now known as darius93
mort___ has quit [Quit: Leaving.]
Snark has quit [Read error: Connection reset by peer]
mort___ has joined #ocaml
<MercurialAlchemi>
ollehar1: what country?
<ollehar1>
MercurialAlchemi: germany
<ollehar1>
most ocaml is in france, I take it?
<MercurialAlchemi>
well, there is an ocaml company in Copenhagen, Issuu
<Drup>
Probably a good amount of it, yeah
nullcat has joined #ocaml
<MercurialAlchemi>
it's probably going to be hard to stay with ocaml
<MercurialAlchemi>
then it depends on what company you target
<Drup>
Not "stay" :p
<MercurialAlchemi>
there may be a pun in there but I don't get it
<Drup>
No pun, ollehar was not using ocaml before
<Drup>
(at work)
<MercurialAlchemi>
ah
<MercurialAlchemi>
ok
manizzle has quit [Ping timeout: 240 seconds]
<MercurialAlchemi>
at least that part won't be a disappointment
<ollehar1>
sorry, phone call
<ollehar1>
but yes, never worked with ocaml
<ollehar1>
copenhagen is closer home, not sure that's what I want :D
<ollehar1>
programming ocaml at home, get fired from a php company. life is strange.
<MercurialAlchemi>
you shouldn't have told them about types
<ollehar1>
MercurialAlchemi: ;)
<ollehar1>
or git...
jwatzman|work has joined #ocaml
<ollehar1>
nah, they use git. but not for everything.
<ollehar1>
or rather, git lacks behind. a couple of years. sometimes.
<ollehar1>
ach
tennix has quit [Ping timeout: 260 seconds]
tennix has joined #ocaml
<dmbaturin>
Drup: Is there a way to exit from a looping Lwt thread other than raising an exception?
<MercurialAlchemi>
you mean they use CVS with a git mirror two years out of date?
<Akshay_>
on plus side now you have more time for ocaml.
<dmbaturin>
And you don't have to write PHP!
<Drup>
dmbaturin: exception seems good
<Drup>
dmbaturin: did you wrote the lwt loop yourself or ?
<dmbaturin>
Drup: Well, that's what I'm doing now. Yeah, it's a read-process-reply loop for handling a connection.
tennix has quit [Ping timeout: 265 seconds]
<Drup>
you can also do "if bla then Lwt_return () else loop ()
<ollehar1>
Akshay_: yeah :)
toomuchtvrotsurb has joined #ocaml
<ollehar1>
dmbaturin: well, my latest hobby project is to type-infer a subset of php, so...
<dmbaturin>
I used binds all over. read >>= do_things >>= reply >>= (fun () -> loop i o)
<ollehar1>
maybe I would have to let that go
<dmbaturin>
And wrapped it in Lwt.on_failure so when End_of_file is raised it logs that connection terminated.
<dmbaturin>
ollehar1: It sounds interesting.
<Drup>
dmbaturin: not a problem, you can still do the if thing
<ollehar1>
dmbaturin: yeah, it's fun. :) remember I told you to steal code from koka or whatever? I took parser/lexer from hacklang and algorithm w from another github account. then I just try to smosh them together.
<Akshay_>
good luck with that !
<ollehar1>
Akshay_: sarcasm...?
<dmbaturin>
Drup: True. It's probably going to be cleaner than binding with fun () -> ... even.
<Akshay_>
i don't know the meaning of sarcasm :S
<Akshay_>
too lazy too google it :)
<Akshay_>
i said it in a good way..
<ollehar1>
oh, ok ^^
<ollehar1>
well, I said "subset" of php. question is, will such a subset be meaningful? time will tell.
shinnya has quit [Ping timeout: 252 seconds]
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Akshay_>
even if it's not meaningful it will help you in long run.
<MercurialAlchemi>
ollehar1: there is a job posting on r/ocaml
<ollehar1>
AND it will help PHP to get rid of that `==`
<MercurialAlchemi>
if you like working for people which write 'TM' repeatedly
<ollehar1>
MercurialAlchemi: cool, will check out
<ollehar1>
I'm writing an application to Issuu now :) I'm under-qualified, but still, might get fun if I get an interview.
<ollehar1>
*would be fun to get an interview
<Drup>
MercurialAlchemi: are you talking about the Functor™ thing ?
<dmbaturin>
ollehar1: Now I wonder if it's possible to design an aggressively imperative algol-style language with decideable type inference.
<Drup>
*aggressively* imperative ? :D
<ollehar1>
no lamdas?
<dmbaturin>
Not as much in this sense, as in statement-oriented, multiple return statement in the same subroutine etc.
<ollehar1>
actually, "aggressively imperative" might be a good name for PHP :D
<ollehar1>
eval, goto, "break 5"
<ollehar1>
wait, eval is not imperative. nevermind.
jtfmumm has joined #ocaml
MrScout has quit [Quit: Leaving...]
Akshay_ has quit [Quit: Leaving]
<MercurialAlchemi>
Drup: yeah
<MercurialAlchemi>
pretty ridiculous
<MercurialAlchemi>
soon coming to you, Algorithm™
<MercurialAlchemi>
ollehar1: I think more "offensive" than "aggressive" when the word PHP crosses my mind
<MercurialAlchemi>
even if it has gained modern functionalities, the semantics are still all broken
<ollehar1>
haha
<ollehar1>
MercurialAlchemi: semantics, like what?
<ollehar1>
like `list($a, $b) = f()`?
<ollehar1>
e.g.
MrScout has joined #ocaml
felipealmeida has quit [Ping timeout: 244 seconds]
<Drup>
MercurialAlchemi: I found this add hilarious
<Drup>
I was not sure what I was reading, it was a mix of an overenthusiastic academic talk abstract and a buzzword-filled trendy job ad.
<whirm>
Drup: I want to cross compile the whole thing to ARM, so I guess it will be even more tricky :D
<Drup>
That's orthogonal
<whirm>
Drup: thanks for the link! Let's see if I can finish the cross-compiling part first.
<Drup>
tbh, except if you have real troubles with dynlink, just keep the usual setup
nullcat has quit [Ping timeout: 250 seconds]
<whirm>
Drup: yes, I wanted to cover my back as I did read somewhere that I could have trouble with dynlinking + crosscompiling
manud has joined #ocaml
<Drup>
I'm not sure what would be the issue, but I know pretty much nothing about crosscompilation, so ..
<whirm>
I think to remember there was a comment on the ocaml-android repo. Maybe it was related to crosscompiling to android?
<whirm>
I'll see :)
manud has quit [Client Quit]
* rwmjones
wonders how the ocaml compile distinguishes between 'a and 'a'
<rwmjones>
compiler
<flux>
rwmjones, context is everything?
<rwmjones>
indeed
<flux>
though it's still a good point
<rwmjones>
unfortunately my parser is context-FREE
<flux>
but it doesn't need a long lookahead
<flux>
because there is never 'as.. that's a char
<flux>
so lexer can do it always.
<Drup>
that's not even a parsing thing
nullcat has joined #ocaml
<Drup>
that's a lexer thing
<rwmjones>
isn't there some conflict, like: type 'a'a foo
<rwmjones>
or something?
<flux>
('a, 'a)
<rwmjones>
hmm, perhaps not
<Drup>
No, because you can only have alphanum in type variables.
<Drup>
Precisely for this reason.
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Drup>
(ocaml's grammar is LR(1), btw, so no context either)
<rwmjones>
well, it has a scanner .. as does my parser
<dmbaturin>
I wonder how many shift-reduce conflicts are there though. :)
<rwmjones>
in fact I started out without a scanner, but concluded it's basically impossible to parse ocaml w/o a scanner
<Drup>
dmbaturin: none
divyanshu has joined #ocaml
<Drup>
dmbaturin: shift-reduce conflicts are an error :]
<dmbaturin>
Drup: Why? Yacc's go for shift by default.
<Drup>
It means that your grammar is not fully define, and that's just bad :/
<dmbaturin>
Well, it's possible to rewrite it so it's completely unambiguous even without the "in doubt, shift" rule.
<Drup>
Exactly
Kakadu has joined #ocaml
sp0on has quit [Ping timeout: 256 seconds]
ollehar1 has quit [Ping timeout: 256 seconds]
<rwmjones>
ok so the scanner tokenizes ' as QUOTE
<rwmjones>
but I still don't get how char-literals work
<Drup>
rwmjones: and char literals are tokenized as CHAR
yomimono has joined #ocaml
<tokenrove>
the rules for CHAR, QUOTE, and LIDENT in lexer.mll seem pretty straight-forward. the interesting thing about reading this is discovering how to trigger ``Warning 1: this is the start of a comment.''
<rwmjones>
no I still don't understand this
<rwmjones>
oh right now I do
sp0on has joined #ocaml
ceryo_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
jtfmumm has joined #ocaml
Submarine has quit [Quit: Leaving]
remyzorg has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
swgillespie has joined #ocaml
m4b has joined #ocaml
<m4b>
hi; i'm trying to use some modules from one project as a library and use it in another test project; I have a META file in the lib project, and I want to use two modules: Binary and ProgramHeader; ProgramHeader depends on Binary, Binary depends on nothing (besides standard lib); so I am doing ocamlfind install testlib META _build/src/ProgramHeader.cmo ... _build/src/Binary.cmo ..; it installs, but when I attempt to use it from the other
<m4b>
project with: ocamlbuild -pkg testlib I get a "No implementations provided for the following modules: Binary referenced from /Users/me/.opam/system/lib/testlib/ProgramHeader.cmx"
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<m4b>
I looked inside the other libs, and the only difference I can see is they have .mli files, but I thought that was optional (I include the .cmi of course); sorry if this is stupid question, never messed with proper lib stuff before
<m4b>
to make a long story short i guess, i just want to make all the ocaml code, except for Rdr.ml, available in the src as a pkg installed via ocamlfind, from this repo: http://github.com/m4b/rdr
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
kawaii-imouto has quit [Quit: fix config]
jeffmo has quit [Ping timeout: 264 seconds]
swgillespie has joined #ocaml
manud has joined #ocaml
jeffmo has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 260 seconds]
ollehar1 has joined #ocaml
<ollehar1>
anyone awake still? could someone give me a hint about how hacklang/flow type-checks those if-idioms, like
<ollehar1>
if (x != null) {
<ollehar1>
// do something with x that would not compile without the if-statement.
<ollehar1>
}
<ollehar1>
is it done in the parser? type system? separate system?
<ollehar1>
what to google for, even?
<ollehar1>
:P
<flux>
well, I understand hacklang is open source.. :)
<ollehar1>
flux: yeah, I'm reading through the source-code now
<ollehar1>
smondet: yeah, I saw that.
<ollehar1>
I'm mostly curious about which academic paper they are using...
<flux>
I think it would work by following the code and adding attributes to variables, like 'x is not null' in the scope if that if statement
<flux>
but I guess you mean some more complicated thing than that.
<ollehar1>
flux: no, not necessarily.
<ollehar1>
maybe there's just some trick I don't know of, like that.
<flux>
I wonder if is able to do the right thing in, say if (x != null || y != null) { if (x == null) { /* y must be non-null here */ } }
<ollehar1>
flux: very good question. better try that :)
<flux>
and then of course what happens if you have a null-checking function and do: if (is_not_null(x)) { .. }
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
<ollehar1>
it might be a superficial syntax check.
<ollehar1>
moment
<flux>
and if that works (I doubt it) how complicated functions it can deal with :)
<ollehar1>
just need to compile first ^^
_andre has quit [Quit: leaving]
remyzorg has quit [Ping timeout: 240 seconds]
<ollehar1>
bah. this checks out without errors.
<ollehar1>
/* @flow */
<ollehar1>
function test(x) {
<ollehar1>
return x + 10;
<ollehar1>
}
<ollehar1>
test(null);
remyzorg has joined #ocaml
<ollehar1>
flux, this gives error, as you thought:
<ollehar1>
/* @flow */
<ollehar1>
function test(x, y) {
<ollehar1>
if (x != null || y != null) {
<ollehar1>
if (x == null) {
<ollehar1>
y.length;
<ollehar1>
}
jtfmumm has joined #ocaml
<ollehar1>
}
<ollehar1>
}
<ollehar1>
test(null);
divyanshu has quit [Quit: Computer has gone to sleep.]
<jwatzman|work>
ollehar1: I'm still around, reading backlog, hopefully I can answer your question
<ollehar1>
jwatzman|work: oh, hi! :)
monod has joined #ocaml
<ollehar1>
yeah, I just need a hint, some key word to google for or whatever.
<jwatzman|work>
ollehar1: so, flow's type system in general is quite different from Hack's, and I'm not sure how flow deals with this
<jwatzman|work>
ollehar1: but for Hack, the code you want is "condition" in typing.ml
<ollehar1>
thanks!!
<ollehar1>
yeah, I'm looking at both systems.
<jwatzman|work>
ollehar1: We aren't using any academic paper or carefully researched anything; as I say in the Heresy talk, a lot of this is lightly based on research, but not formalized in any way like what a lot of ML folks want ;)
tennix has joined #ocaml
<ollehar1>
jwatzman|work: oh really? I expected you to have a paper to draw inspiration from.
<jwatzman|work>
ollehar1: condition is what deals with changing the local typing enviornment; you can see how the If expression, for example, deals with it
<jwatzman|work>
ollehar1: The original author might have, but I'm not aware of one
<ollehar1>
ok :)
<jwatzman|work>
ollehar1: This particular bit isn't that complicated IMO
<jwatzman|work>
ollehar1: For a caller of "condition", look at the "stmt" function (again in typing/typing.ml), the "If (e, b1, b2)" case near the top
<jwatzman|work>
ollehar1: the parent_lenv is to deal with what happens when we pop out of the "if" -- we need to combine types from both branches
<jwatzman|work>
which is what integrate does (see my Heresy talk for details on integration and this bit, it's a little complicated)
<ollehar1>
well, depends on how complicated expressions you want to check.
<ollehar1>
hey, doesn't infer do things like this too? I should check that out.
<ollehar1>
again, thanks for the hints, very appreciated.
<ollehar1>
yeah, I saw the talk, think I'll watch it again.
<jwatzman|work>
ollehar1: Infer takes yet another approach -- I don't even pretend to understand what Infer does; Hoare logic is the term to google for that one
<jwatzman|work>
ollehar1: Infer is *much* more principled, so there *are* definitely tons of papers on the theory it uses :)
<ollehar1>
ah, yeah, I saw some code comments about hoare logic in flow.
<jrslepak>
"Logical Types for Untyped Languages" might be good intro reading too
tennix has quit [Ping timeout: 244 seconds]
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
jtfmumm has joined #ocaml
shinnya has joined #ocaml
<ollehar1>
awesome, thanks!
<ollehar1>
hey, hoare logic is in my old course literature. time to pick that up again, then. ^^
<ollehar1>
jwatzman|work: btw, which office are you in? america?
<ollehar1>
jrslepak: thanks
tane has quit [Quit: Verlassend]
pyon has joined #ocaml
pyon is now known as kawaii-imouto
<jwatzman|work>
ollehar1: Yeah, I'm based out of FB's HQ in Menlo Park, California
whirm has quit [Quit: WeeChat 1.2]
<ollehar1>
ok
jao has joined #ocaml
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
thizanne has quit [Ping timeout: 244 seconds]
thizanne has joined #ocaml
ollehar1 has quit [Quit: ollehar1]
yomimono has quit [Quit: Leaving]
stomp has quit [Ping timeout: 244 seconds]
stomp has joined #ocaml
shinnya has quit [Ping timeout: 240 seconds]
tmtwd has quit [Ping timeout: 265 seconds]
nopf has quit [Ping timeout: 255 seconds]
Algebr has quit [Remote host closed the connection]
nopf has joined #ocaml
shinnya has joined #ocaml
uris77 has quit [Quit: leaving]
monod has quit [Quit: bye]
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
swgillespie has joined #ocaml
swgillespie has quit [Client Quit]
lobo has quit [Quit: leaving]
Denommus has quit [Quit: going home]
tmtwd has joined #ocaml
kushal has quit [Quit: Leaving]
jeffmo has quit [Quit: jeffmo]
Kakadu has quit [Remote host closed the connection]