mcc has quit [Quit: This computer has gone to sleep]
adrien has joined #ocaml
<blech_>
I'm having some trouble working with bitstring. At this point I'm trying to compile one of the example files from the official repo (I've previously installed bitstring and camlp4 through OPAM)
<blech_>
I'm trying to compile with ocamlfind ocamlc with the bitstring, camlp4, and unix packages
<blech_>
am I maybe missing something?
MrScout has quit [Ping timeout: 252 seconds]
q66 has quit [Quit: Leaving]
badkins has quit []
manizzle has quit [Ping timeout: 264 seconds]
reem has quit [Remote host closed the connection]
toroidalcode has quit []
nicoo has quit [Ping timeout: 250 seconds]
badon has quit [Ping timeout: 250 seconds]
zwer_b has quit [Ping timeout: 250 seconds]
struktured has joined #ocaml
badkins has joined #ocaml
lordkryss has quit [Quit: Connection closed for inactivity]
kapil__ has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
swgillespie has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
lambdahands has quit [Ping timeout: 246 seconds]
AlexRussia has quit [Ping timeout: 252 seconds]
jonludlam has quit [Ping timeout: 264 seconds]
matason has joined #ocaml
AlexRussia has joined #ocaml
<blech_>
nevermind, I got it figured out
jonludlam has joined #ocaml
psy_ has quit [Quit: Leaving]
MotorMe has joined #ocaml
psy_ has joined #ocaml
jonludlam has quit [Ping timeout: 272 seconds]
ZenosDance has joined #ocaml
badkins has quit [Remote host closed the connection]
blandflakes has quit [Ping timeout: 246 seconds]
lambdahands has joined #ocaml
ZenosDance has quit [Ping timeout: 245 seconds]
matason has quit [Ping timeout: 245 seconds]
anemator has joined #ocaml
anemator has quit [Client Quit]
jao has quit [Ping timeout: 256 seconds]
swgillespie has joined #ocaml
enitiz has quit [Ping timeout: 265 seconds]
ebzzry has joined #ocaml
MercurialAlchemi has joined #ocaml
lambdahands has quit [Ping timeout: 252 seconds]
ygrek has joined #ocaml
vanila has joined #ocaml
ebzzry has quit [Remote host closed the connection]
huza has joined #ocaml
psy_ has quit [Quit: Leaving]
pippijn has joined #ocaml
booly-yam-6137 has joined #ocaml
booly-yam-6137 has quit [Ping timeout: 265 seconds]
mcc has joined #ocaml
booly-yam-6137 has joined #ocaml
booly-yam-6137 has quit [Ping timeout: 245 seconds]
nicoo has joined #ocaml
Haudegen has quit [Ping timeout: 264 seconds]
Haudegen has joined #ocaml
dsheets has quit [Ping timeout: 245 seconds]
mcc has quit [Quit: This computer has gone to sleep]
badkins has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
psy_ has joined #ocaml
psy_ has quit [Max SendQ exceeded]
psy_ has joined #ocaml
ggole has joined #ocaml
badkins has quit [Ping timeout: 255 seconds]
<ggole>
mcclurmc: did you get your opam woes sorted out?
ollehar has joined #ocaml
jneen is now known as jneen|zzz
booly-yam-6137 has joined #ocaml
Shozan is now known as SHODAN
<vanila>
LENS!!!!
huza has quit [Ping timeout: 246 seconds]
<whitequark>
ggole: "mcc", not "mcclurmc"
dsheets has joined #ocaml
n1ftyn8 has quit [Ping timeout: 265 seconds]
msch has quit [Ping timeout: 265 seconds]
cojy has quit [Ping timeout: 265 seconds]
rfv has quit [Ping timeout: 245 seconds]
lnich has joined #ocaml
cojy has joined #ocaml
ygrek has quit [Remote host closed the connection]
ygrek has joined #ocaml
msch has joined #ocaml
rfv has joined #ocaml
n1ftyn8 has joined #ocaml
chinglish has joined #ocaml
lyxia has joined #ocaml
booly-yam-6137_ has joined #ocaml
booly-yam-6137 has quit [Ping timeout: 246 seconds]
<ggole>
Oh, I thought they were the same person. Sorry about that.
Simn has joined #ocaml
larhat has joined #ocaml
ingsoc has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
<companion_cube>
lenses in ocaml... at least yminsky is going to use fieldslib to generate them
siddhart1v_away is now known as siddharthv
<moviuro>
Do you think it might be possible that the issue I was facing with unison yesterday may be caused by its being compiled against different version of ocaml? (4.01 for one part, 4.02 for the other)
<adrien_znc>
possible but not that likely
mort___ has joined #ocaml
<moviuro>
adrien_znc: because, I'm running into trouble when syncing across FreeBSD's unison 2.48.3, ocaml 4.01 and Archlinux's unison 2.48.3, ocaml 4.02 ; not across the two same versions on the same OS
<adrien_znc>
well, try to move the 4.01.0 one to 4.02.1
<adrien_znc>
and see what happens :P
mort___ has quit [Ping timeout: 276 seconds]
matason has joined #ocaml
<moviuro>
adrien_znc: I don't control the said FreeBSD server :-/ I'll ask the sysadmin to give it a shot
<adrien_znc>
you can install in a different prefix
<adrien_znc>
probably safer if you want to roll back
<adrien_znc>
it only needs a couple hundred MBs of disk space if you disable camlp4
<moviuro>
I think compiling ocaml 4.02 will need lots of deps
<adrien_znc>
no, not really
<adrien_znc>
like none actually
<adrien_znc>
if you can use the ocaml native compiler
<adrien_znc>
you should have everything needed to build it
<adrien_znc>
(like 95%)
_andre has joined #ocaml
lnich has quit [Ping timeout: 240 seconds]
yomimono has joined #ocaml
araujo_ has quit [Quit: Leaving]
siddharthv is now known as siddharthv_away
araujo has joined #ocaml
lnich has joined #ocaml
Haudegen has quit [Ping timeout: 240 seconds]
Reventlov has quit [Quit: leaving]
Reventlov has joined #ocaml
Haudegen has joined #ocaml
antkong has joined #ocaml
rwmjones_ has joined #ocaml
rwmjones has quit [Read error: Connection reset by peer]
booly-yam-6137_ has quit [Ping timeout: 276 seconds]
demonimin has quit [Remote host closed the connection]
kapil__ has quit [Quit: Connection closed for inactivity]
dsheets has quit [Ping timeout: 265 seconds]
demonimin has joined #ocaml
lordkryss has joined #ocaml
siddharthv_away is now known as siddharthv
Thooms has joined #ocaml
siddharthv is now known as siddharthv_away
booly-yam-6137_ has joined #ocaml
Thooms has quit [Quit: WeeChat 1.0.1]
matason has quit [Ping timeout: 246 seconds]
siddharthv_away is now known as siddharthv
Thooms has joined #ocaml
yomimono has quit [Ping timeout: 244 seconds]
kapil__ has joined #ocaml
orbitz_ has quit [Quit: Reconnecting]
orbitz has joined #ocaml
<moviuro>
OK, so the unison problem is caused by its being compiled for 4.01 or 4.02.1
Thooms has quit [Quit: WeeChat 1.0.1]
cthuluh_ is now known as cthuluh
<ingsoc>
let var = <exp> in <exp>
<ingsoc>
I just don't really get why "in" is worth having as language. is it just mainly for hiding intermediate variables from being seen outside an expression. I can only see the use of this if you are running out of variable names and want to shadow an outer scope variable without altering it
<ingsoc>
maybe it is just the simple examples I have seen
<ggole>
It's to separate the first expression from the second?
<ingsoc>
ggole: what i mean is the same thing could be done by performing 2 separate assignments couldn't it using intermediate variable
<ingsoc>
e.g.
<ingsoc>
let languages = "OCaml,Perl,C++,C";;
<ingsoc>
let dashed_languages = let languages = String.split languages ~on:',' in String.concat ~sep:"-" languages
<ingsoc>
could just be written as 2 intermediate expressions
matason has joined #ocaml
<ingsoc>
then final assignment to dashed_languages
<ggole>
OK, but what does this have to do with in?
<ingsoc>
let languages = String.split languages ~on:',' in
<ingsoc>
just wodnering if i am missing the usefulness of it
<ingsoc>
wondering*
<ggole>
A separator of some kind is pretty much necessary there
<def`>
(and there is no assignment)
<ingsoc>
ok, but what is gained from doing...
<ingsoc>
let languages = "OCaml,Perl,C++,C";;
<ingsoc>
let language_list = String.split languages ~on:',';;
<ingsoc>
let dashed_languages = String.concat ~sep:"-" language_list;;
<ingsoc>
as 3 expressions
<ingsoc>
is this a performance thing ?
<ingsoc>
limiting assignments ?
<def`>
those are not expressions, but definitions
<ingsoc>
the book only talks about variable scoping
<def`>
(value binding more precisely, binding the result of an evaluating an expression to a name)
<def`>
so they can only take place in a module
<def`>
if you need to name results within an expression, you need the "let-in" binding
dsheets has joined #ocaml
<MercurialAlchemi>
ingsoc: well, you could easily chain all that
<ingsoc>
def`: ok, but what are the benefits of doing it all in a single expression compared to what I showed as an alternative - and where else would you be executing code other than from a top level or module
<ggole>
You could just nest them (or use |>) if you like
<ingsoc>
sorry if i am talking rubbish or missing something
<MercurialAlchemi>
ingsoc: but you don't want to confuse newcomers
<ggole>
ingsoc: inside functions?
<def`>
ingsoc: if you are in a function (you abstracted over some variables), you can't bind names to the outer structure
<ggole>
That's where most code lives.
<MercurialAlchemi>
(and it's often a good idea to name intermediate bindings anyway)
<ingsoc>
ok, sorry, i am currently just working through examples in utop
<ingsoc>
and not writing code in an editor
<MercurialAlchemi>
but yeah, otherwise you'd probably chain them with |>
<ingsoc>
so maybe this is where I am confused or missing the point
<def`>
let dashed_languages languages = let language_list = String.split languages ~on:',' in String.concat ~sep:"-" language_list;;
antegallya has joined #ocaml
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 276 seconds]
<ingsoc>
ok, i get it now
<ingsoc>
thanks all
<def`>
np, sorry if I was using a bit too much vocabulary :)
<def`>
(or "jargon" :P)
<ingsoc>
naming results within an expression is not binding
<ggole>
ingsoc: huh? It's binding, the scope of the binding is just local.
psy_ has quit [Quit: Leaving]
<ingsoc>
ok, binding using "in" is how you bind to intermediate names within an expression so you can use them in the scope of the expression
<ingsoc>
is that accurate
q66 has joined #ocaml
<ggole>
More or less, yeah
ingsoc has quit [Ping timeout: 276 seconds]
planetlarg has joined #ocaml
jonludlam has joined #ocaml
sheijk has joined #ocaml
sheijk has quit [Client Quit]
sheijk has joined #ocaml
ingsoc has joined #ocaml
matthewhill has joined #ocaml
yomimono has joined #ocaml
<Simn>
I'm trying to compile latest OCaml sources on Windows following README.win32 and get a missing caml/version.h error. Is there a dependency missing in byterun/Makefile.nt or did I skip something?
<ingsoc>
does this imply that in ocaml a function can be defined as an operator using brackets
<ingsoc>
let (<symbol>) x y
<flux>
yes
<flux>
the fun exception: * :-)
<ingsoc>
can people get carried away with this
<ingsoc>
:)
<flux>
you must write let ( * ) ..
<Simn>
adrien_znc, I added the dependency to Makefile.nt and now I cannot reproduce the error anymore even after make clean. So I suppose problem solved.
<flux>
which leads that in general people prefer to write let ( symbol ) ..
<flux>
ingsoc, I think people in general don't get overboard with this.. it's not overloaded, so you must have the operators in your scope.
<adrien_znc>
Simn: were you using parallel builds?
<adrien_znc>
make -jX?
<flux>
ingsoc, some modules provide their own operator submodules, so you can could Matrix.(a * b)
<flux>
..though I think nobody likes to much redefine the existing operators
<Simn>
adrien_znc, no, just plain make -f Makefile.nt world
<adrien_znc>
ok, weird
<flux>
ingsoc, btw, one thing the page doesn't mention: the precedency of said operators are the same as the operator used for the first character in the operator name
<flux>
ingsoc, iow, +.. has the same precedency as +
<flux>
ingsoc, that has the nice side effect that in principle you at least can see the precedency of whatever new operator you may see in the code..
<Simn>
After fixing it I got errors from tools/make-version-header.sh. It seems to have CRLF line endings?! Might be my git setup though...
<ingsoc>
flux: thanks
tane has joined #ocaml
<ingsoc>
I know Ocaml has allowed people to define pipe operator since forever but now it is part of core Ocaml. How often is it used and do people find it cleans code up a bit ?, is this the main reason ?
<Drup>
it's the only reason, it doesn't add new functionallity :p
<adrien_znc>
Simn: you're pulling from git? that's quite a bad idea
<adrien_znc>
use released versions
<ingsoc>
Drup, well yeah, the only reason L)
<ingsoc>
:)
<flux>
ingsoc, well, because people were using it, it was added to the core
<flux>
ingsoc, I suppose it's nice people agree on that operator, so projects don't define their own different ones for the same purpose
<flux>
ingsoc, also there are some performance benefits, because now ocaml can see right through the operator
<Drup>
flux: there are still places in the *compiler* where it's another operator :D
<Drup>
(like, in compile.ml I think, it's ++)
<ingsoc>
i guess a chain of operations is deffo clearer f3 (f2 (f1 x))
<ingsoc>
i mean the pipe version is clearer
<rks`>
Drup: in asmgen too
<Drup>
meh
<def`>
++ is there for gc :p
<ggole>
Hmm, Jonathon Blow's layout stuff is interesting
<ggole>
Almost cobol-like but coming from a very different direction.
segmond has quit [Ping timeout: 245 seconds]
vanila has quit [Remote host closed the connection]
badkins has joined #ocaml
psy has joined #ocaml
ZenosDance has joined #ocaml
segmond has joined #ocaml
ollehar has quit [Ping timeout: 244 seconds]
ebzzry has joined #ocaml
siddharthv is now known as siddharthv_away
jneen|zzz is now known as jneen
MrScout has joined #ocaml
larhat has quit [Quit: Leaving.]
enitiz has joined #ocaml
MrScout has quit [Ping timeout: 265 seconds]
Denommus has joined #ocaml
dsheets has quit [Ping timeout: 245 seconds]
tianon has joined #ocaml
manizzle has joined #ocaml
reem has joined #ocaml
shinnya has joined #ocaml
mcc has joined #ocaml
BitPuffin has joined #ocaml
yomimono has quit [Ping timeout: 256 seconds]
NoNNaN has joined #ocaml
yomimono has joined #ocaml
contempt has quit [Ping timeout: 276 seconds]
MotorMe has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
siddharthv_away is now known as siddharthv
antegallya has quit [Ping timeout: 244 seconds]
booly-yam-6137_ has quit [Ping timeout: 245 seconds]
kapil__ has quit [Quit: Connection closed for inactivity]
mcc has quit [Quit: This computer has gone to sleep]
arj has joined #ocaml
<ousado>
ggole: is that from a talk?
<ousado>
or does he have something to read now?
<ggole>
One of the streams
<ggole>
There's a bit of a summary on the rust subreddit if you don't care to watch the video (which is pretty long)
<ousado>
I've watched some of them
<ousado>
it's an interesting approach
<ousado>
but he hasn't mantioned ADTs
<ousado>
*mentioned
<ggole>
Yeah, I dunno how ADTs fit into a data oriented approach
<ggole>
You could split things up per constructor
<ggole>
But matching would be a bastard
lambdahands has joined #ocaml
<ousado>
ok that data-oriented demo is the talk you're referring to?
ontologiae has joined #ocaml
<ggole>
Yep
<ousado>
I'm interested now. I can't think of anything programming where ADTs wouldn't be useful
planetlarg has quit [Remote host closed the connection]
<pippijn>
ousado: in a situation where you want to be able to dynamically extend the data type with new type constructors while keeping the set of operations equal
bytbox has quit [Remote host closed the connection]
<ousado>
pippijn: that's hardly an argument against including ADTs in a language, is it?
<pippijn>
"I can't think of anything programming where ADTs wouldn't be useful"
<ousado>
yeah, sorry, this is in the context of Jonathan Blows language design
<pippijn>
okay
MrScout has joined #ocaml
<ousado>
.. and as far as I remember he hasn't mentioned them even once, so far
jabesed has joined #ocaml
arj has quit [Quit: Leaving.]
slash^ has joined #ocaml
vanila has joined #ocaml
arj has joined #ocaml
Thooms has joined #ocaml
bytbox has joined #ocaml
ZenosDance has quit [Ping timeout: 245 seconds]
jerith_ is now known as jerith
arj has quit [Quit: Leaving.]
arj has joined #ocaml
olauzon has joined #ocaml
Denommus` has joined #ocaml
Denommus has quit [Ping timeout: 244 seconds]
malc_ has joined #ocaml
matason has quit [Ping timeout: 256 seconds]
Denommus` has quit [Ping timeout: 246 seconds]
booly-yam-6137_ has joined #ocaml
manizzle has quit [Read error: Connection reset by peer]
manizzle has joined #ocaml
chinglish has quit [Quit: Nettalk6 - www.ntalk.de]
manizzle has quit [Read error: Connection reset by peer]
manizzle has joined #ocaml
manizzle has quit [Read error: Connection reset by peer]
manizzle has joined #ocaml
arj has quit [Quit: Leaving.]
yomimono has quit [Ping timeout: 245 seconds]
siddharthv is now known as siddharthv_away
swgillespie has joined #ocaml
<ousado>
ggole: the SOA stuff is nice indeed, basically the equivalent of column-based database architecture
keen__________39 has joined #ocaml
swgillespie has quit [Client Quit]
mehdi_ has joined #ocaml
keen__________38 has quit [Ping timeout: 255 seconds]
malc_ has quit [Quit: leaving]
jwatzman|work has joined #ocaml
mcc has joined #ocaml
<mistym>
Is anyone familiar with Debian packaging for software that has opam dependencies?
<Drup>
package recursively :D
<mistym>
Ha :D Makes sense, just package every dep as its own package?
<Drup>
you don't really have the choice
<mrvn>
That's the point of packaging
* mistym
nods
<mrvn>
More interesting question is: Is there an opam-2-deb?
<mistym>
No, I figured.
<mistym>
Not that I've seen, no.
<mistym>
There is dh_ocaml which likely is what I want to look at here, though.
jabesed has quit [Quit: Konversation terminated!]
mcc has quit [Quit: This computer has gone to sleep]
jonludlam has quit [Quit: Coyote finally caught me]
pyon has quit [Quit: rcirc on GNU Emacs 24.4.1]
mehdi__ has joined #ocaml
_5kg has quit [Ping timeout: 245 seconds]
pyon has joined #ocaml
mehdi_ has quit [Ping timeout: 265 seconds]
_5kg has joined #ocaml
ebzzry has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 245 seconds]
wwilly has joined #ocaml
Hannibal_Smith has joined #ocaml
psy has quit [Disconnected by services]
psy_ has joined #ocaml
ygrek has joined #ocaml
Hannibal_Smith has quit [Ping timeout: 252 seconds]
Hannibal_Smith has joined #ocaml
willy_ has joined #ocaml
wwilly has quit [Ping timeout: 265 seconds]
MrScout_ has joined #ocaml
MrScout has quit [Ping timeout: 245 seconds]
jonludlam has joined #ocaml
matthewhill has quit [Quit: Be back later ...]
manizzle has quit [Ping timeout: 245 seconds]
antkong has joined #ocaml
MrScout_ has quit [Remote host closed the connection]
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
MrScout has joined #ocaml
Haudegen has quit [Ping timeout: 272 seconds]
antkong has quit [Ping timeout: 255 seconds]
matthewhill has joined #ocaml
Haudegen has joined #ocaml
_andre has quit [Quit: leaving]
Submarine has joined #ocaml
Submarine has joined #ocaml
martintrojer has quit [Ping timeout: 252 seconds]
martintrojer has joined #ocaml
enitiz has quit [Remote host closed the connection]
<ousado>
in the QA someone asked him about functional datatypes - I don't think he knows what they are
enitiz has joined #ocaml
<whitequark>
mistym: opam2deb would be really nice.
<whitequark>
if you don't feel like learning ocaml, you can use opam-query to extract the fields from the opam file nicely.
<whitequark>
in, say, a shell script *shudder*
reem has quit [Remote host closed the connection]
reem has joined #ocaml
manizzle has joined #ocaml
manizzle has quit [Remote host closed the connection]
manizzle has joined #ocaml
reem has quit [Ping timeout: 264 seconds]
<MercurialAlchemi>
I know there are a lot of Haskell packages packaged for Nix
<MercurialAlchemi>
don't know what the situation is for OCaml
<Drup>
there are lots of haskell package for nix because cabal is so terrible they can't use it. Opam is less terrible. :]
jonludlam has quit [Quit: Coyote finally caught me]
<MercurialAlchemi>
that's harsh
<MercurialAlchemi>
though not entirely undeserved
<MercurialAlchemi>
(I think it has sandboxes now, so it has gotten less terrible)
<Drup>
indeed
<MercurialAlchemi>
I'd also upgrade opam to "fairly decent" (IMHO)
<MercurialAlchemi>
though not perfect yet
bytbox has quit [Ping timeout: 272 seconds]
jonludlam has joined #ocaml
ygrek has quit [Ping timeout: 244 seconds]
<MercurialAlchemi>
that said, it would be nice to have utop and merlin in Debian
<MercurialAlchemi>
I see ocp-indent is already there
<struk|work>
MercurialAlchemi: I actually find ocaml deb packages work against my opam installation alot
<MercurialAlchemi>
they do?
<MercurialAlchemi>
hm
<bernardofpc>
talking about packaging, is it easy to take a META file from opam and use it as installation instructions for Gentoo ?
<MercurialAlchemi>
I suspect most of my OCaml stuff comes from opam, actually :D
<bernardofpc>
(of course, using aspcud inside gentoo to solve deps would be a great win, but I don't know wether it can handle USE-flag-dependent-dependencies
<mistym>
whitequark: Oh, thanks! I'll take a look at it
<MercurialAlchemi>
the creature reminds me of Martin Tenbones
<struk|work>
Drup: I want an alot. Where do I get one?
<Drup>
It costs alot.
<MercurialAlchemi>
Must eat alot too
<Drup>
bernardofpc: I think nicoo did something to embed opam packages inside distrib-packages but it was not for gentoo itself
Anarchos has joined #ocaml
ygrek has joined #ocaml
<bernardofpc>
I'm reading about aspcud and CUDF, the file format doesn't seem amenable to USE-flags :/
<bernardofpc>
versions are positive integers, usual version strings like "1.2.3-4" are not accepted -> oh no, firefox-36
slash^ has quit [Read error: Connection reset by peer]
<bernardofpc>
are there any technical reasons (about SAT or something) that imply int ordering being preferable to string ordering ??
<bernardofpc>
(num-dot string ordering, of course)
<def`>
MercurialAlchemi: no debian users in merlin team, contributions welcome :)
<Drup>
bernardofpc: it's accepted in opam format
yomimono has joined #ocaml
<MercurialAlchemi>
def`: all of the Apple cult?
<Drup>
MercurialAlchemi: or non-debian linux, it exists.
bytbox has joined #ocaml
Thooms has quit [Quit: WeeChat 1.0.1]
yomimono has quit [Ping timeout: 252 seconds]
<dmbaturin>
def`: I stopped being a debian user, but I'm still a regular debian package writer. :)
bytbox has quit [Ping timeout: 255 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
mistym has quit [Ping timeout: 245 seconds]
MrScout has quit [Ping timeout: 244 seconds]
mistym has joined #ocaml
mistym has joined #ocaml
pyon has quit [Ping timeout: 256 seconds]
MrScout has joined #ocaml
Denommus has joined #ocaml
ggole has quit []
pyon has joined #ocaml
reem has joined #ocaml
mtbk has joined #ocaml
mtbk has quit [Client Quit]
mtbk has joined #ocaml
willy_ has left #ocaml ["Leaving"]
mtbk has quit [Ping timeout: 264 seconds]
mtbk has joined #ocaml
ygrek has quit [Ping timeout: 265 seconds]
<Anarchos>
what is the best literate programming tool for ocaml ?
mtbk has quit [Client Quit]
mtbk has joined #ocaml
<mrvn>
I like my emacs illiterate
<Anarchos>
mrvn i am on an exotic OS so no emacs :)
<def`>
MercurialAlchemi: arch :p
<MercurialAlchemi>
def`: :)
swgillespie has joined #ocaml
<MercurialAlchemi>
to be fair, Arch packaging (at least from what I hear) is not as "interesting" as packaging for Debian
<def`>
yeah, Debian looks like a huge waste of energy :p
swgillespie has quit [Client Quit]
reem has quit [Read error: Connection reset by peer]
<MercurialAlchemi>
well, it works, but the packaging format is...
<MercurialAlchemi>
involved
reem has joined #ocaml
<struk|work>
Anarchos: vim +merlin is an option then
sdegutis has joined #ocaml
<MercurialAlchemi>
maybe I'll see if I can't package merlin when I have a bit of time
<sdegutis>
What are your most and least favorite aspects of OCaml?
<Anarchos>
struk|work i mean literate programming as "a tool to reorganize chunks of code", not as an elaborate javadoc...
<Anarchos>
sdegutis most favorite : powerful types and pattern matching
<struk|work>
Anarchos: ah I see..
<vanila>
my favorite thing is mirage !
<sdegutis>
Can I make custom types similar to C structs to represent my domain models with?
<sdegutis>
And if so, can the compiler check for me whether I'm testing for the right key?
<MercurialAlchemi>
Anarchos: I see there is something called OCaml-web
<Anarchos>
sdegutis you have structs on ocaml : type t = {a:int ; b:float}
<MercurialAlchemi>
the homepage looks sanctioned by Stallman himself
<sdegutis>
I'm coming from Clojure where if I type {:status 404} and use it somewhere else, there's no protection against me checking for the :statis key (typo)
<MercurialAlchemi>
sdegutis: oh, don't worry, the compiler is very good at insulting you when you do this kind of thing
<sdegutis>
:)
<sdegutis>
What's your least favorite aspect of OCaml?
<Anarchos>
MercurialAlchemi if sanctus stallman said it...
<MercurialAlchemi>
tooling
<Anarchos>
MercurialAlchemi but in web fields, i would prefer a stamp from Knuth :)
<Drup>
the legacy :D
<MercurialAlchemi>
Anarchos: oh, he didn't say anything about it, but he approves of pre-HTML 1.0 webpages
<sdegutis>
Drup: what legacy?
<Drup>
sdegutis: OCaml is an old language, some decisions were made which at the time were good ideas but are not so much now.
antkong has joined #ocaml
<Drup>
little bits everywhere, nothing huge
<sdegutis>
Drup: like what?
<sdegutis>
And is there a modern language that's just like OCaml but has cleaned up and fixed those decisions?
<Drup>
not really, no
<sdegutis>
:'(
<Drup>
but I mean, it's nothing unbearable
<MercurialAlchemi>
there are more kickass decisions than dubious ones
ingsoc has quit [Quit: Leaving.]
<Drup>
Like, Str
<Drup>
ok, Str may have been a Bad Idea™ right from the start :>
<rks`>
who cares about Str?
<Drup>
the poor people inhering code using it, I suppose
<Drup>
inheriting*
<Drup>
sdegutis: the big wrath are mostly not in the language design itself :p
<vanila>
i know why my least favorite part of ocaml is!
<Drup>
mtbk: the popularity of languages is not really factor of quality, more like randomness, ease of learning for mainstream programmer and support of a company
<sdegutis>
rks`: that's an old blogp ost
<rks`>
so?
pdewacht has joined #ocaml
<sdegutis>
os
<Drup>
sdegutis: still relevant
<sdegutis>
ok
<vanila>
yeah the post rks` links is excellent
<vanila>
over all that guys blog is extremely high quality
<sdegutis>
I remember reading that blog post.
<vanila>
I wi sh I could do such in depth analyses
bytbox has joined #ocaml
<dmbaturin>
Oddly enough, I'm now rewriting a python project prototype in ocaml too. Looks like using python for that was a mistake.
<mtbk>
Drup: I was comparing to haskell, which seems to have much more packages than ocaml.
<sdegutis>
Can OCaml interface with C beautifully?
<rks`>
what do you mean by beautifully?
<sdegutis>
Can OCaml interface with the ".framework" style of dynamic libraries?
<sdegutis>
rks`: it's subjective
<rks`>
that's why I'm asking :)
<Drup>
(23:18:19) sdegutis: Can OCaml interface with the ".framework" style of dynamic libraries? <- I don't know what that mean :D
<adrien_znc>
sounds like mac os
<adrien_znc>
x
mcc has joined #ocaml
<mtbk>
Drup: but haskell is more obtuse...
<moviuro>
argh, can't reproduce the bug with unison... I tried everything :( all available versions against each other... all possible conflicts and changes, in all ways imaginable
<Drup>
"obtuse" :p
<sdegutis>
Right, I mean, can OCaml use Mac OS X's frameworks?
<sdegutis>
I want to use Carbon.framework which is a bunch of C functions and data types.
<sdegutis>
*which contains
matthewhill has quit [Quit: Be back later ...]
<mcc>
OCaml has a way to interact with C functions for sure.
<mcc>
Objective C (Cocoa), I'm not sure.
<jwatzman|work>
i thought carbon was super deprecatd
<jwatzman|work>
*deprecated
<mcc>
You could also just use Swift, which is almost ML :)
<dmbaturin>
Drup: I've been reading swift manual lately, did it lose ADTs at some point? What I found fun is that it has special syntax for option.
<rks`>
:DDDD
<mtbk>
Drup: I was banning my head for a week before I gave up haskell
<Drup>
mcc: backlog :p
<rks`>
he just joined.
<mcc>
oh >_>
<dmbaturin>
mcc: Some lines ago I said that swift needs a lot of work to earn the bad ML title. :)
<mcc>
haha
<mcc>
rks`: (also, if you meant me, I am a she)
<mtbk>
ocaml is very smooth to me so far
<mcc>
Also I feel very sure OCaml can interface with frameworks if it can interact with C. Framework support is something Apple added to the GCC and Clang tools. It's part of mach-o.
<dmbaturin>
What frameworks are you talking about?
<Drup>
scroll a bit to "Associated Values"
<Drup>
it's actually ADTs and not simply enums
<adrien_znc>
iirc frameworks are quite mandatory on os x
<mcc>
dmbaturin: OS X has the concept of a "framework bundle", which is a directory ending in .framework . It is a special way of packaging libraries and headers together, along with versioning information.
<rks`>
mcc: I did, but does it matter?
<adrien_znc>
and ocaml definitely has something related to them
<whitequark>
mcc: yes it can interact with frameworks
<whitequark>
see ocamlmklib -framework for example
<sdegutis>
jwatzman|work: it's not
<dmbaturin>
Drup: Oh, looks like I missed that part.
<whitequark>
sdegutis: type ('t, 'u) either = T of 't | U of 'u
<Drup>
mcclurmc: you have been more bothered lately I guess :D
<sdegutis>
jwatzman|work: notice the words "most of"
<mcclurmc>
well, i'm awake this time Drup :)
<whitequark>
i've thought that mcc = mccl*rmc for over a year
<mcc>
mcclurmc: Hi ^_^;
<whitequark>
it was really confusing when i finally matched the github and twitter avatars for both of you
<sdegutis>
jwatzman|work: for example, global hotkey functionality is still only found in Carbon; there is no other way to get this except by using Carbon
MrScout has quit [Remote host closed the connection]
<dmbaturin>
mcc: Ah, ok. I know very little about OS X development, so I've never even heard of that before.
<sdegutis>
Oh I think maybe it was poor handling of JSON that turned me off to OCaml last time?
<whitequark>
mcc: so I looked at how ocamlmklib handles -framework
<whitequark>
it just does ocamlc/opt -ccopt '-framework x'
<def`>
sdegutis: JSON is ok :P, I mean it's just a library to choose…
MrScout has joined #ocaml
<def`>
and the existing ones are much better than anything objective-c has to offer ;)
<mcc>
whitequark: that sounds right.
pdewacht has quit [Quit: Reconnecting]
<sdegutis>
def`: I meant the language doesn't make it easy to use
pdewacht has joined #ocaml
<def`>
sdegutis: I would actively avoid a language having special cases for something as trivial :P
<mcc>
i suspect there will be a future version which generalizes some of the odder things.
<dmbaturin>
Drup: What I find strange about that swift manual is that it seems to avoid calling things by their usual names, like "product type" is a curseword or something.
<mcc>
there's some REALLY wierd specialization around generics.
pdewacht has quit [Client Quit]
<Drup>
dmbaturin: consider the public of this manual
<mcc>
Like, I believe that last I checked the swift equivalent of NSArrays are generalizable, but not some of the other cocoa data types
<Drup>
Objective C programmers
<Drup>
(or even *grasp* C programmers)
<Drup>
gasp*
<sdegutis>
def`: no, not special casing
* mcc
thinks avoiding type theory terminology sounds great.
mtbk has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
<def`>
(speaking of what I miss in ocaml, I would like is abstracting over patterns… I don't know any other language offering this though)
<Drup>
mcc: it's sometimes annoying for really basic things
<mcc>
Probably yeah.
pdewacht has joined #ocaml
flhs has joined #ocaml
<Drup>
mcc: calling a tuple a tuple and an ADTs an ADTs simplify most people's life
<whitequark>
def`: I've seen this *somewhere*
<Drup>
you can then go on and explain what is and ADTs
<def`>
:)
<mcc>
Yeah… tuple in particular is not a very specialized term. Python uses it
<rks`>
def`: :)
<def`>
whitequark: you can encode that in F# with active patterns, or in haskell with views and transformations
<Drup>
active patterns are not great, though
<def`>
yep
<Drup>
(I don't know the haskell enough to have an opinion, I just know it exists)
<Drup>
+one
<whitequark>
mcc: I'm not sure I like the idea of not introducing terminology unless it exists in $BLAND_LANGUAGE
<Drup>
mcc: for ADTs, it's especially true since it's a very simple extension of Enums that most C programmers know how to encode manually
<whitequark>
and I especially dislike this with regards to ADTs
<def`>
Drup: it's quite simple, but expressive enough to be useful
<dmbaturin>
I picked up the terminology pretty quick (well, formal math education, but still).
sdegutis has quit [Quit: Leaving...]
<Drup>
def`: sure, we were refering to the fact that the switf manual don't name them as what they are.
<def`>
Drup: I meant haskell views ;-)
<Drup>
Oh.
<Drup>
(I think I'll manage to typo swift in every possible way tonight)
<def`>
Drup: but yeah, any terminology coming from huuuu, mainstream, is pure bullshit
<Drup>
def`: the pure category theory terminology is not always better.
<mcc>
whitequark: well, it's evidence the term is nonthreatening.
<Drup>
(at least, it's more precisely defined, usually)
<def`>
Drup: but at least, at least there is a definition somewhere
<def`>
:)
<mcc>
i think there is some benefit to trying to select nonthreatening terminology, and the drawbacks are also obvious. it probably depends on context.
<Drup>
(except when an Haskellian try to conflate GHC Haskell and the ideal category theory view of it)
<Drup>
(and then, hands are waved)
<def`>
if they provided any formal definition, I would be fine with objects, frameworks, reactive, etc
vanila has quit [Remote host closed the connection]
<def`>
mcc: do you consider category theory terminology threatening :) ?
<mcc>
def`: YES.
<mcc>
def`: I would remove category theory terminology from CATEGORY THEORY if I could.
* whitequark
waits until mcc discovers Lwt
<rks`>
nothing would be left mcc.
<Drup>
mcc: Swift encourage API design based on the singleton pattern, enforcing separation of containment units by a contract based on meta informations.
<mcc>
rks`: I am not going to disagree with this statement.
<Drup>
:<
<def`>
:-)
<Drup>
the singleton pattern is the most outrageous OOP terminology I have seen, I think.
<def`>
it just shows how broken it is
<mcc>
the "i give up" pattern
<def`>
it's concrete nonsense :)
<Drup>
It's literally *a single function*
<whitequark>
Drup: isn't a singleton an object that is guaranteed to be created once
<dmbaturin>
mcc: Reminds me, we had a calculus professor who would routinely use smileys and other funny things for operation symbols to teach people the difference between funny symbols and semantics behind them.
<Drup>
and that contains only a method, usually
<def`>
Drup: it's a global variable, that's all :P
<Drup>
def`: or a poor isolated cloture
<dmbaturin>
He also made people write proofs without using any math symbols at all sometimes.
<Drup>
dmbaturin: that's ... not so great
<whitequark>
def`: Drup: it has semantics that is different from just a global variable
<whitequark>
it's an immutable global variable with a static initializer that runs at a predictable moment
<whitequark>
as opposed to just randomly in the startup process, like in C++
<Drup>
so, it's a function.
<mcc>
dmbaturin: that makes some sense.
<whitequark>
Drup: how does that make it a function?
<mcc>
Drup: Think of it like a namespace, for languages which have bad support for namespaces/modules
<Drup>
a top level function, but still.
<whitequark>
no, it's not a function. It has state
<Drup>
a function can have state.
<mcc>
Drup: Not in C++
<mcc>
Drup: Only an object pretending to be a function can have state
<whitequark>
Drup: right. I see your point now.
<Drup>
yes, my point. è_é
<mcc>
(Let's not talk about the "lambdas"...)
<def`>
whitequark: not sure to follow… what do you mean by predictable?
<mcc>
A lot of "patterns" are really just workarounds for something a particular language supports badly.
<mcc>
def`: Static initializers in C++ do not run in any predictable order :(
<whitequark>
^
<def`>
I agree, but that's a specific language issue
<def`>
language specific issue*
<mcc>
The singleton pattern exists to work around language-specific issues.
<whitequark>
:D
<def`>
so you mean that by running the initializer lazily, singleton offer some way to predict initialization?
<Drup>
mcc: that's every pattern every.
<Drup>
ever*
<whitequark>
def`: essentially
<mcc>
def`: Yes. And potentially enforces an order of initialization (if the singleton objects' definitions depend on each other)
Denommus has joined #ocaml
olauzon has quit [Quit: olauzon]
<def`>
I agree with that. But this doesn't deserve any name
<mcc>
Drup: I think if you take a broad notion of "pattern" you do find some which are not bound to any particular language. I'd describe monads as a pattern :P
<Drup>
mcc: and arguably, monads are a way to work around limitations in haskell to deal with side effects.
<mcc>
def`: It is a thing one does frequently in C++, and sometimes there is literally a "Singleton" class used to implement the machinery
<def`>
you meant a Singleton template :')
<Drup>
\O/
<Denommus>
Drup: that's only one possible use for monads, and hardly the most useful one
<whitequark>
mcc: (monads as a pattern) that's how I always describe them
<Drup>
Denommus: I know :)
<whitequark>
they are arguably more useful *not in programming*
<mcc>
In at least one situation I have seen a templated class for Singleton.
<def`>
I think of monads as just overloading ';'
<Drup>
mcc: since I have seen a code generator of Visitor that takes xml description, I'm not surprised anymore.
<Denommus>
I like how blaze-html encodes a template DSL with monads
<whitequark>
that sounds horrifying
<Drup>
whitequark: it's tyxml's functor, without the statically type checked part
<Drup>
nothing horrible, just machinery to generate html in different ways
<def`>
(overloading and not fucking up the operator probably deserve a pattern title in C++-world ;-))
<Drup>
(reactive or not, and so on)
<def`>
operator laws*
antegallya has joined #ocaml
zwer has joined #ocaml
<Drup>
def`: we need to come up with a fancy non-threatening name for the pattern of defining a monad.
<Drup>
the COMPOSITION pattern ?
jabesed has joined #ocaml
<Drup>
(still a bit math-y)
<def`>
inversion of control
<def`>
(or IoC for short)
<Drup>
I find the name "inversion of control" very threatening.
<Drup>
(It's like "dependency injection", I roll for sanity check every time I read that)
uris77 has quit [Quit: leaving]
<def`>
(yop)
booly-yam-6137_ has quit [Ping timeout: 252 seconds]
<def`>
the term is just overloadad
<Denommus>
the problem is that the term "monad" represents something too abstract to have a more... reachable term
booly-yam-6137__ has joined #ocaml
<def`>
but it's actually inversion of control
<def`>
(and not a dependency injection ;-))
<Drup>
(O_°)
<dmbaturin>
Someone proposed to call monads "warm, fuzzy things".
<Drup>
(Note that I heard someone say that could view functors as a form of safe dependency injections)