<tobiasBora>
dsheets: do you think I need to install it with opam or not ?
<dsheets>
tobiasBora, load is for loading compiled modules like you were doing unsuccessfully (and, i, honestly can't remember what is missing)
<dsheets>
tobiasBora, use is for loading modifications to the toplevel like new directives and syntax extensions
<dsheets>
tobiasBora, topfind includes a new directive "require" that uses ocamlfind to query and load the lib
<dsheets>
tobiasBora, you probably don't *need* to install it with opam if you use topfind/ocamlfind but opam will make your future library usage vastly easier
<dsheets>
tobiasBora, opam is updated far more frequently than debian's or ubuntu's repositories
<tobiasBora>
dsheets: you mean that if I install opam I won't need #use "topfind"... ?
<dsheets>
tobiasBora, you will still need to use topfind but you won't need to worry as much about keeping your libraries up-to-date or mutually compatible
<dsheets>
tobiasBora, ocamlfind implements the library search path part and opam implements something like apt
travisbrady has joined #ocaml
<tobiasBora>
dsheets: Ok, now I understand much better ! Thanks a lot for your help, and if you remember how to use #load instead of topfind (because I think it won't compile), please, tell me ;-) Thanks again !
<dsheets>
tobiasBora, erm it will probably work but i don't know i haven't tried :-/
<tobiasBora>
Ok, thanks ;-)
<dsheets>
tobiasBora, you'll need to do something different for compiling; not #load
Drup has quit [Quit: Leaving.]
<tobiasBora>
yes I know. But if load works in toplevel, it will be easier to compile I think no ?
<dsheets>
tobiasBora, I don't know... I use ocamlfind always (or ocamlbuild -use-ocamlfind (or a custom build system on top of these when the project gets big enough))
<tobiasBora>
Ok, If i need it I'll do this. Thanks a lot !
adrien_ has joined #ocaml
gildor has quit [Quit: leaving]
SuperNoeMan has quit [Ping timeout: 264 seconds]
yacks has quit [Ping timeout: 264 seconds]
adrien has quit [Ping timeout: 264 seconds]
<wmeyer>
hi
dsheets has quit [Ping timeout: 264 seconds]
pango has quit [Ping timeout: 264 seconds]
<wmeyer>
hi tobiasBora
dsheets has joined #ocaml
<wmeyer>
hi dsheets
yacks has joined #ocaml
pango has joined #ocaml
<tobiasBora>
wmeyer: Hi ;-)
SuperNoeMan has joined #ocaml
gnuvince has joined #ocaml
<tobiasBora>
wmeyer: do you have some knewledges about ogg decoding ?
<wmeyer>
tobiasBora: no
<tobiasBora>
Ok.
<wmeyer>
but if you use a library it should not be a problem
<dsheets>
wmeyer, hi
<dsheets>
wtf flakey internet
<tobiasBora>
wmeyer: it's the first time I use a library only by looking the documentation in the source code ^^ It's very funny :-P And less complicated I though before.
<wmeyer>
tobiasBora: yes, usually it's enough
mattrepl has quit [Quit: mattrepl]
emmanuelux has quit [Ping timeout: 246 seconds]
<tobiasBora>
I've to go to sleep. Goodbye !
tobiasBora has quit [Quit: Konversation terminated!]
emmanuelux has joined #ocaml
emmanuelux has quit [Read error: Operation timed out]
travisbrady has quit [Quit: travisbrady]
emmanuelux has joined #ocaml
chrisdotcode has quit [Quit: No Ping reply in 180 seconds.]
chrisdotcode has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
chrisdotcode has quit [Client Quit]
chrisdotcode has joined #ocaml
travisbrady has joined #ocaml
emmanuelux has quit [Quit: emmanuelux]
emmanuelux has joined #ocaml
eikke has quit [Ping timeout: 252 seconds]
dsheets has quit [Ping timeout: 248 seconds]
madroach has quit [Ping timeout: 248 seconds]
madroach has joined #ocaml
Mortchek has joined #ocaml
travisbrady has quit [Quit: travisbrady]
talzeus has joined #ocaml
travisbrady has joined #ocaml
Neros has quit [Ping timeout: 268 seconds]
travisbrady has quit [Quit: travisbrady]
chrisdotcode has quit [Quit: No Ping reply in 180 seconds.]
testcocoon has quit [Quit: Coyote finally caught me]
dtg has quit [Read error: Connection reset by peer]
dtg has joined #ocaml
testcocoon has joined #ocaml
ttamttam has joined #ocaml
ttamttam has left #ocaml []
ski has joined #ocaml
gnuvince has quit [Ping timeout: 248 seconds]
zpe has joined #ocaml
chrisdotcode has joined #ocaml
Yoric has joined #ocaml
zpe has quit [Ping timeout: 248 seconds]
mcclurmc has joined #ocaml
chrisdotcode has quit [Ping timeout: 256 seconds]
Watcher7 is now known as Watcher7|off
zpe has joined #ocaml
raichoo has joined #ocaml
djcoin has joined #ocaml
zpe has quit [Ping timeout: 245 seconds]
zpe has joined #ocaml
jbrown has joined #ocaml
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
_5kg has joined #ocaml
eikke has joined #ocaml
mcclurmc has quit [Ping timeout: 252 seconds]
Yoric has quit [Ping timeout: 245 seconds]
ontologiae has joined #ocaml
Yoric has joined #ocaml
tobiasBora has joined #ocaml
<tobiasBora>
Hello !
nalaginrut_ has joined #ocaml
cross_ has joined #ocaml
<tobiasBora>
Does anyone knows how I could load a library installed with opam ? I've installed it with "opam install vorbis", it's installer in ~/.opam/system/lib/vorbis/, but when I do :
Mortchek has quit [Read error: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac]
<tobiasBora>
#use "topfind";;
<tobiasBora>
#require "vorbis";;
Mortchek has joined #ocaml
<tobiasBora>
I've an error : no such package: vorbis
flx_ has joined #ocaml
smango_ has joined #ocaml
thelema has joined #ocaml
asmanur_ has joined #ocaml
thelema_ has quit [Remote host closed the connection]
wmeyer has quit [Read error: Connection reset by peer]
gautamc has quit [*.net *.split]
fraggle_ has quit [*.net *.split]
nalaginrut has quit [*.net *.split]
Watcher7|off has quit [*.net *.split]
cross has quit [*.net *.split]
bobry has quit [*.net *.split]
wmeyer has joined #ocaml
troydm has quit [Ping timeout: 256 seconds]
troydm has joined #ocaml
fraggle_ has joined #ocaml
asmanur has quit [*.net *.split]
othiym23 has quit [*.net *.split]
flux has quit [*.net *.split]
bitbckt has quit [*.net *.split]
smango has quit [*.net *.split]
flx_ is now known as flux
ontologiae has quit [Ping timeout: 248 seconds]
gautamc has joined #ocaml
othiym23 has joined #ocaml
<mehdid>
which topfind did you use? do you have ocamlfind installed on your system as well?
<tobiasBora>
mehdid: I don't know the version of topfind... Yes ocamlfind is installed.I already can load some library installed with apt like ogg. I tried to run eval `opam config -env`, and know I've vorbis (the library I need) listed in ocamlfind list. However this library isn't list in #list;; like if it need a refresh...
<Kakadu>
Does somebody wants to test OCaml+QtQuick application?
<Kakadu>
it should work in Ubuntu 13.04 or any linux where Qt5 is installed
<Kakadu>
testcocoon: how are u doing?
<testcocoon>
Kakadu: actuall full overloaded again
hkBst has quit [Ping timeout: 248 seconds]
bobry has joined #ocaml
hkBst has joined #ocaml
soulofpeace has quit [Ping timeout: 260 seconds]
Zeev has joined #ocaml
Zeev has left #ocaml []
ollehar has quit [Ping timeout: 256 seconds]
Simn is now known as Simn|gone
Kakadu has quit [Read error: Connection reset by peer]
Kakadu has joined #ocaml
awm221 has quit [Quit: Leaving.]
awm22 has joined #ocaml
<pippijn>
ski: my colleague doesn't like it
<bernardofpc>
pippijn: I tried to read it, but java is long long ago for me, so I didn't get much
<Drup>
pippijn: I did the same kind of things when I was forced to write Java. =)
<pippijn>
bernardofpc: load lastModified columns data = List.iter2 (fun heading column -> if headingMatches heading column then failwith "Column should be..."); modified#update lastModified (fun () -> cells#clear; ...)
<Drup>
I simulated sum types with Java classes and used map over tree structures. That was terribly ugly.
<pippijn>
+let
<pippijn>
Drup: I considered a map function, because I need that sometimes, but so far, I always iterated with for and list.add
<bernardofpc>
pippijn: perhaps in fact I'm having a bad time understanding why a match should fail, in fact
<pippijn>
a match?
<pippijn>
as in headingMatches?
<ousado>
yes
<ousado>
:)
<pippijn>
two different strings can fail to be equal
<bernardofpc>
pippijn: sorry, I'm not clear myself, but in some sense I'd expect that if the things don't match is the problem
<bernardofpc>
dunno why
Anarchos has joined #ocaml
<pippijn>
your grammar makes it hard for me to understand what you're saying
<bernardofpc>
:/
<ousado>
the name headingMatches seems to suggest opposite semantics
hkBst_ has joined #ocaml
hkBst_ has quit [Changing host]
hkBst_ has joined #ocaml
hkBst has quit [Ping timeout: 260 seconds]
raichoo has quit [Quit: leaving]
<pippijn>
oh
<pippijn>
now I got it
tobiasBora has joined #ocaml
<tobiasBora>
Hello !
<pippijn>
haha
<tobiasBora>
My question was stupid... Sorry ^^
<pippijn>
ousado: yeah
<pippijn>
ousado: fixed it
emmanuelux has joined #ocaml
<pippijn>
$ svn ci -m'corrected behaviour to match method name'
<ousado>
hehe :)
hkBst_ has quit [Ping timeout: 248 seconds]
hkBst_ has joined #ocaml
hkBst_ has quit [Changing host]
hkBst_ has joined #ocaml
<Anarchos>
pippijn i put "" instead of ' ' for commit messages
<pippijn>
Anarchos: I rarely have ' in commit messages
<pippijn>
Anarchos: but sometimes I have $ or ! in them
<Anarchos>
ok ok
<pippijn>
there is less escaping necessary in '
awm221 has joined #ocaml
Kakadu has quit []
Kakadu has joined #ocaml
awm22 has quit [Ping timeout: 248 seconds]
<Anarchos>
pippijn ok
Kakadu has quit [Read error: Connection reset by peer]
Kakadu_ has joined #ocaml
coproduit is now known as Armael
rixed has quit [Read error: Operation timed out]
djcoin has quit [Quit: WeeChat 0.4.0]
soulofpeace has joined #ocaml
Anarchos has quit [Ping timeout: 255 seconds]
rixed has joined #ocaml
Simn|gone is now known as Simn
Anarchos has joined #ocaml
travisbrady has joined #ocaml
Neros has quit [Ping timeout: 248 seconds]
mort___ has joined #ocaml
cdidd has quit [Remote host closed the connection]
Khady has joined #ocaml
smondet has joined #ocaml
hkBst_ has quit [Read error: Connection reset by peer]
hkBst_ has joined #ocaml
mort___ has quit [Quit: Leaving.]
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
rixed has quit [Ping timeout: 260 seconds]
rixed has joined #ocaml
mort___ has joined #ocaml
raichoo has joined #ocaml
osnr has quit [Quit: Leaving.]
gnuvince has joined #ocaml
mort___ has quit [Remote host closed the connection]
mort___ has joined #ocaml
eikke has quit [Read error: Operation timed out]
soulofpeace has quit [Ping timeout: 248 seconds]
ollehar has joined #ocaml
mort___ has quit [Ping timeout: 276 seconds]
ollehar has quit [Quit: ollehar]
hkBst_ has quit [Quit: Konversation terminated!]
<vext01>
is there an easy way to parse a decimal int a Num (in a arbitrary precision manner)?
<vext01>
ie 1.5 should be a rational num
<vext01>
num_from_string does not do this sadly
<vext01>
num_of_string...
zpe has quit [Remote host closed the connection]
<ggole>
Split it at the . and multiply both sides by 10 for each digit in the denominator?
<ggole>
(This may not meet your standards for 'easy'.)
<vext01>
it's not *hard*
<vext01>
but i just wondered if there was a api call
<ggole>
Not that I can see
<vext01>
ok, no problem
<vext01>
thanks
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<vext01>
it is possible to break source files over separate .ml files without a module for each .ml?
<dsheets>
vext01, include
<vext01>
ah
<vext01>
is this considered dirty?
<vext01>
i.e. equivalent to #include "some_c_file.c"
<ggole>
Less dirty than typing all the code twice
<vext01>
there no extern-a-like?
<ggole>
No, you reference things in other modules prefixed by name
<ggole>
If you get tired of typing, let module F = foo or open Foo might help
<vext01>
im just separating code into separate ml files
<vext01>
im still in the process of learning ocaml, as you can see
<ggole>
Sure
<ggole>
The natural thing is to just use them as different modules
<Anarchos>
vext01 if you want to break your source code in different files, then you can safely consider those files as differents modules. If it really annoys you, you can use the #include macro as specified by dsheets
<vext01>
I could use modules
<vext01>
the files share types, will that be an issue
<vext01>
?
<ggole>
Possibly
<ggole>
Dependency chains have to form a DAG
<ggole>
No cycles
<vext01>
i can show you the code, that will be easier
<vext01>
this is a simple stack calculator i am writing to learn ocaml
<vext01>
you will see lots of foul code here no doubt
<vext01>
(* Operations here. XXX move to separate compilation unit *)
<vext01>
i want to move the functions into another file purely for organisational purposes
<vext01>
op_*
<dsheets>
Op.
<ggole>
That's small enough that you could not do that: but ok, do that
<ggole>
Seems reasonable to make a file called operation.ml, move all the op_ stuff (and maybe the Operation type) in there
<vext01>
i will be adding more op_* functions
<dsheets>
op.ml
<vext01>
so would you use a module or a #include
<dsheets>
module
<ggole>
A module
<vext01>
ok, ill have a go
<ggole>
One minor thing
<vext01>
...
<ggole>
OCaml code is usually not indented so deeply
<vext01>
yeh, i have not configured vim yet
<ggole>
8 space blocks will make idiomatic code more or less unreadable
<vext01>
its doing it's default tab stops
<ggole>
Right
<vext01>
what do you use normally?
<ggole>
I use whatever emacs does :)
<ggole>
I'm fairly sure vim will have good support though
<vext01>
i know how to set the stops
<Drup>
you can use ocp-indent with vim and it's probably better/more flexible than the vim ocaml mode.
<vext01>
is 4 notmal?
<Drup>
I personally mostly use 2.
<vext01>
is anytthing else in the code sucky?
zpe has joined #ocaml
<ggole>
Nothing terrible. You use a lot of unnecessary ;;s, and I would prefer a fold instead of the ref in the table building code.
<ggole>
But those are minor concerns.
<vext01>
you would make a list of tuples and fold them into the mapping?
<ggole>
Yeah,
<vext01>
makes sense
<ggole>
I cringe at writing the same variable name 10 times
<vext01>
tell me about the spurious ;;
<ggole>
Even though it's not a big deal, practically speaking
<ggole>
;; is usually only necessary in the repl
<ggole>
You can write functions, type defs, etc without ending them with ;;
<ggole>
And the code looks considerably nicer
<vext01>
I didn't know that
<vext01>
thanks
<ggole>
If you want to see what fairly nicely written ocaml code looks like
<ggole>
The stdlib source is probably on your machine
<vext01>
ok
<vext01>
so i need to share my stringmap type between modules
<vext01>
do i duplicate it? surely not
<ggole>
Either it belongs to one, or you pull it out into another
<vext01>
ill see if i can move it
zpe has quit [Ping timeout: 246 seconds]
Kakadu_ has quit []
chrisdotcode has joined #ocaml
chrisdotcode has quit [Ping timeout: 276 seconds]
<vext01>
thanks for your help
<vext01>
off home
tane has joined #ocaml
ontologiae has quit [Ping timeout: 245 seconds]
<ggole>
My pleasure.
pkrnj has joined #ocaml
mcclurmc has quit [Ping timeout: 252 seconds]
Yoric has quit [Ping timeout: 245 seconds]
eikke has joined #ocaml
pkrnj has quit [Quit: Computer has gone to sleep.]
smondet has quit [Remote host closed the connection]
smondet has joined #ocaml
mattrepl has joined #ocaml
chrisdotcode has joined #ocaml
ggole has quit []
pkrnj has joined #ocaml
<dsheets>
any cmdliner users about?
<dsheets>
i have an argument that is optional but only if another optional argument is present
<dsheets>
ideas?
nalaginrut_ has quit [Ping timeout: 248 seconds]
gautamc has left #ocaml []
nalaginrut_ has joined #ocaml
Yoric has joined #ocaml
<dsheets>
the answer was optional positional arguments, btw
<wmeyer>
hey dsheets
<dsheets>
wmeyer, hey
* wmeyer
admits cmdliner rocks!
<dsheets>
it's pretty nice
* wmeyer
takes a shower before writing some command line options
<wmeyer>
I was thinking about going for beer this week, perhaps on sunday
<wmeyer>
what do you think dsheets
<wmeyer>
?
<companion_cube>
in which country? :D
<wmeyer>
companion_cube: UK =)
<dsheets>
sunday sounds good
<wmeyer>
dsheets chosen better country for his live now.
<dsheets>
haha
<wmeyer>
:D
<wmeyer>
I will call you on sunday morning
<dsheets>
ok
<ousado>
dsheets: you're moving?
<dsheets>
ousado, i moved to cambridge
<dsheets>
ousado, been here a month
<ousado>
woo nice
<orbitz>
USA or UK? :)
<dsheets>
uk this time
<ousado>
I'm gong to visit you both
<dsheets>
massachusetts is... bleaker
<ousado>
whether you like it or not ;)
<dsheets>
ousado, haha, where are you?
<ousado>
in hamburg, germany
<dsheets>
ah nice... would love to travel there
<ousado>
it's all nearby now
ollehar has joined #ocaml
osnr has quit [Quit: Leaving.]
<dsheets>
ousado, lots of ocamlers here, too
<ousado>
yes, what was that again..
<ousado>
ah "ocaml labs cambridge"
ollehar has quit [Ping timeout: 256 seconds]
<orbitz>
dsheets: massachustts might have better summer weather than cambridge
<ousado>
dsheets: did you move there for a job?
<dsheets>
orbitz, maybe... can also be way way too hot. Is it just sometimes rainy here? And 20degC? I can live with that... :-)
<dsheets>
ousado, yeah, i work at ocaml labs now
<ousado>
wow, nice
<orbitz>
dsheets: I just not UK stereo type: raining and foggy
<ousado>
congrats
<dsheets>
thanks... hopefully i don't let them down, eh?
<ousado>
you certainly won't
<orbitz>
but if you do...
* orbitz
taps baseball bat
<ousado>
dsheets: are you still working on the webgl stuffthen?
<dsheets>
ousado, yes, but it's on hold slightly
<ousado>
so in ocaml labs context you're doing something else?
<dsheets>
in favor of getting continuous integration testing for opam
<ousado>
I see
<ousado>
sweet
mort___ has joined #ocaml
<dsheets>
should be nice, indeed. i really should get back to it so thomas and anil don't have to manually test or let through buggy packs!
<orbitz>
for great good
<wmeyer>
no doubt massachustts is nice and sunny! (back from the shower, it looks good)
<wmeyer>
and you hit the beer fest time here
mcclurmc has joined #ocaml
<ousado>
wuii.. trilogy 2
<wmeyer>
ousado: hi :-)
<ousado>
wmeyer: hi :)
<ousado>
wmeyer: just readong through the list of ocaml labs projects
<ousado>
*reading
emmanuelux has quit [Ping timeout: 246 seconds]
Cyanure has quit [Remote host closed the connection]
<wmeyer>
yeah
<ousado>
sounds like Jeremy Yallop should get in touch with hongbo
<ousado>
they are anyway I guess, but fan isn't listed in the 'Compile-time meta programming' section/project
rwmjones has quit [Ping timeout: 256 seconds]
emmanuelux has joined #ocaml
<wmeyer>
ousado: definitely Fan should be taken into account
<pippijn>
when people speak of Fan, I always think of that language targetting jvm and clr
<ousado>
pippijn: I expect that to change radically
tane has quit [Quit: Verlassend]
<pippijn>
hm, they renamed it to fantom
<wmeyer>
:D
tobiasBora has quit [Ping timeout: 260 seconds]
<pippijn>
and they now also target javascript
darkf has quit [Quit: Leaving]
<ousado>
sounds a bit like dart
<pippijn>
why?
<pippijn>
dart only compiles to javascript
<ousado>
dart has its own vm
<pippijn>
ah
<pippijn>
fantom doesn't
<ousado>
JS is a second-class citizen
<pippijn>
fantom -> {javascript, jvm, clr}
<ousado>
the interface is horrible.. but I spoke too early, fantom looks more like haxe, statically typed with a dynamic option, instead of dynamically typed with "warnings"
<wmeyer>
ousado: except is not written in OCaml :D
<ousado>
yes, and ata cursory look, has a less sophisticated type system
rwmjones has joined #ocaml
<pippijn>
yes
<pippijn>
it's pretty simple
<pippijn>
it's kind of like C#
<wmeyer>
the question is, why, we have so many languages like this
<ousado>
sounds like you've used it
<wmeyer>
there is Haxe, Dart,Fantom,<insert here 100 other>
<ousado>
mmm
<ousado>
haxe and dart in one sentence.. not nice
<pippijn>
how is yeti?
<ousado>
:)
<pippijn>
yeti:http://mth.github.io/yeti/
<ousado>
dart is like java
<ousado>
haxe is much close to ocaml
<ousado>
*closer
gildor has joined #ocaml
dsheets has quit [Read error: Operation timed out]
<wmeyer>
pippijn: yeti looks Ok.
<wmeyer>
I checked briefly.
<pippijn>
I think it's being actively developed
<pippijn>
yep
<pippijn>
"8 hours ago"
<wmeyer>
how many man years it takes to bring up a computer language to maturity?
<wmeyer>
est.?
<orbitz>
20
<pippijn>
sounds about right
<wmeyer>
fine orbitz that's 2/3 of my life, would i like to spend this on Fantom? I don't think so.
<pippijn>
what
<pippijn>
ok.. 2/3
<wmeyer>
I say we are full of random language that people develop literaly wasting their hobby time
<pippijn>
why is it a waste?
<pippijn>
it's just for fun
<wmeyer>
it's nothing new though
<ousado>
well. other people are watching tv..
<wmeyer>
ousado: good point!
<pippijn>
after creating a toy language, they can then start contributing new ideas to existing languages
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<wmeyer>
pippijn: another good point!
<pippijn>
or old ideas
<ousado>
or even killing each other
<wmeyer>
so ok, i have no real complaints :-)
<wmeyer>
i will create a new language to flame Fantom mailing list :-)
<ousado>
but then.. I'd say haxe is quite mature by now, and it's 7 years old
<pippijn>
give it similar goals but make it better
<pippijn>
ousado: man years
<pippijn>
not time years
<wmeyer>
Haxe is different, it's OCaml with braces
<pippijn>
I doubt haxe is developed by a single person
<wmeyer>
of course if pippijn would write with me it would about 8 years
<ousado>
pippijn: well, in this case that's (almost) the same
<pippijn>
ousado: ok
<wmeyer>
as pippijn is is 1.5x more efficient than me, at least
<pippijn>
people should stop flattering me, or I'll become conceited ;)
<wmeyer>
pippijn: let's write a language called DUFUPWL (Don't Use Fantom Use Pippijn and Wojciech Language)
<pippijn>
The original name of the Fantom programming language was Fan, named after the neighborhood where the creators live in Richmond, Virginia. After gaining some popularity members of the community raised concerns about the searchability of the name. In November 2009,[9] the name of the project was officially changed from Fan to Fantom.[10]
<wmeyer>
it will take 8 years, it will have braces, and (!) static type system
<pippijn>
wmeyer: yeah, dufupwl is very searchable
<wmeyer>
pippijn will you bid the bullet?
<wmeyer>
so it was not because hongbo Fan, hmmm interesting
<ousado>
that's a very smart decision the creators of clean didn't make so far
<pippijn>
make it cleantom
<ousado>
haha
<wmeyer>
lol
<pippijn>
I'll make a language called dirtytom
<pippijn>
its error messages will be full of innuendos
<wmeyer>
rotfl
<wmeyer>
maybe Fandome would be appropriate?
<ousado>
hehe
<wmeyer>
I'm going to commit readme on github now with some sample code
<pippijn>
Integer is 64-bit. Unlike Java and C#, Fantom does not have Long or Short integer types.
<wmeyer>
let's do it!
<pippijn>
so
<ousado>
wmeyer: so did I get that right, you're 30?
<pippijn>
it has one integer type
<pippijn>
that is 64 bit
<wmeyer>
ousado: yes, a bit more than that.
<pippijn>
and therefore inefficient on 32 bit platforms
<ousado>
man.. I might be older than you..
<ousado>
I'm 43
<ousado>
34
<ousado>
hehe
<wmeyer>
that's cool, no worry, i am 32
<wmeyer>
heh
<pippijn>
I feel small now
<pippijn>
at least I have some years to catch up with wmeyer's knowledge
<wmeyer>
thanks, but you'd better not waste your time ...
<pippijn>
Fantom does not support tuples (that is, types which are the Cartesian product of other types)[13]
<pippijn>
what a useless language
<wmeyer>
of course it was hard to type.
<wmeyer>
type checker was too complicated
<pippijn>
and it's funny that this is one of the points listed under "Fantom has other useful features:"
<pippijn>
other useful feature: it has no tuples
<pippijn>
ok..
<wmeyer>
it's useful, if you don't plan to write any code.
<ousado>
hehe.. yeah,,
<ousado>
felix is pretty interesting
<pippijn>
yes
<pippijn>
I like felix
<ousado>
but it compiles to C++
<pippijn>
but the compiler is a bit bad
<wmeyer>
"hi Fantom team, I found absence of tuples, made my programs 100% correct, (because I didn't write any code)."
<pippijn>
ousado: and llvm
<pippijn>
the backend is straightforward
<pippijn>
C++ was chosen for easy interoperability with C++ libraries
<wmeyer>
they said that C-- to C was not particulary good route
<wmeyer>
and LLVM changed everything.
<wmeyer>
some student, did the work
<pippijn>
they have a C-- to asm backend, too
<ousado>
ok, but llvm isn't the default backend
<pippijn>
no
<pippijn>
but it's in there
<ousado>
well, ok then that 1/2 a point
<ousado>
*that's
<wmeyer>
DUFUPWL is going to be a hit.
<wmeyer>
it will not support tuples of course.
<wmeyer>
this is a killer feature
<pippijn>
yeah
<wmeyer>
it will take 8 years to bring it up
<pippijn>
yeah
<pippijn>
we'll do it in the last year, though
<ousado>
what, remove tuples?
<pippijn>
yes, the first 7 years are required to implement the lack of tuples
<wmeyer>
:D
<pippijn>
the rest is a piece of cake
<wmeyer>
last year will be removing other useful features
<wmeyer>
and we will write it in Fantom
mort___ has quit [Quit: Leaving.]
<pippijn>
yes, fantom is the bootstrap language
<Khady>
ousado: rust uses llvm
<wmeyer>
targetting brain*ck would be nice
<ousado>
but honestly, I think the traumatic experience of Java will continue to produce lots and lots of languages
<pippijn>
the problem with java is that it's almost good
<wmeyer>
it's goodenough
<wmeyer>
and selfdocumenting
<pippijn>
and the "almost" makes people think they can do it slightly better
<pippijn>
and then many java-like "slightly better" languages come out
<ousado>
almost good in what way?
<wmeyer>
java didn't have tuples.
<wmeyer>
as well
<wmeyer>
so i am not sure if it's goodenough or good.
<pippijn>
in java, you have great freedom for designing a system
<wmeyer>
you lie pippijn
<ousado>
Java + tooling might be bearable
<pippijn>
that freedom requires disciplined programmers
<ousado>
but just write Java in an editor
<wmeyer>
you also have a great space for screwing up the system
<pippijn>
yes
<wmeyer>
it's choice of the architects
<pippijn>
that's the flip side of the coin
<pippijn>
I like languages and frameworks that allow me to restrict myself
_andre has quit [Quit: leaving]
<wmeyer>
but they secured the right side of coin by not providing tuples
<ousado>
I prefer c++ over java any day
<wmeyer>
you are a real monk pippijn !
<pippijn>
in ocaml, I can use the type system to enforce rules I create myself
<wmeyer>
I like c++ more
Watcher7 has joined #ocaml
<wmeyer>
c++ is bad, but feels a bit better than java
<pippijn>
in C++, you pay less for the abstractions than in java
<wmeyer>
smart pointer is a nice feature of C++
emmanuelux has quit [Ping timeout: 256 seconds]
<pippijn>
and java people counter that argument with the "sufficiently smart compiler" argument
<pippijn>
only recently, java got escape analysis
<ousado>
yes. java people don't know much about the language they're using on average
<pippijn>
something that was implemented in manta/jackal (java to native compiler) years ago
<wmeyer>
I like scala
<orbitz>
now now, let's not form generalizations about developers
<ousado>
scala is a good language to learn java
<orbitz>
good java programmers, IME, are veryspecial people with an impressive amount of disciplien
<wmeyer>
orbitz: ok, to be stop ironic, I agree with orbitz. They are special in some way
<wmeyer>
stop being*
<ousado>
well, the industry produces looooots of java devs
<pippijn>
I don't know one good java programmer
<pippijn>
or, reasonably good
<orbitz>
one good programme rwho writes java or one good programmer who writes good java?
<pippijn>
but he only knows java
osnr has quit [Quit: Leaving.]
<wmeyer>
because java punishes for the bad choices and mistakes
<pippijn>
ousado: one programmer who writes good java
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<pippijn>
who can design medium sized systems well
<wmeyer>
good java code will detect bad programmer or architect and punish him
<pippijn>
but he writes inefficient code
<pippijn>
because he trusts the "sufficiently smart compiler"
<wmeyer>
it's called bottom-up with top-down screw up
<pippijn>
and then he starts optimising, destroying his entire design
<pippijn>
my code is efficient to begin with
<pippijn>
less beautifully designed than his
<pippijn>
but written from the beginning with scalability in mind
<ousado>
I have no idea.. I've never seen any java I'd consider "good"
<wmeyer>
pippijn: does it use tuples?
<pippijn>
I consider the java code I wrote last year good
<pippijn>
it has since been hacked to death by my colleague
<pippijn>
(and me)
<pippijn>
wmeyer: let me think
<orbitz>
I think writing good java code is possible, it's increidbly hard and requires a massive amount of discipline
<wmeyer>
some Haskell programmers actually do a lot of java, but they say it feels like haskell
<wmeyer>
they use inplace interfaces as closures
<pippijn>
wmeyer: no tuples
<wmeyer>
pippijn: sweet.
<pippijn>
also
<pippijn>
I do that, with the interfaces :)
<pippijn>
I don't overuse it, though
<wmeyer>
it's too much typing isn't?
<pippijn>
typing is not a problem in eclipse
osnr has quit [Client Quit]
<pippijn>
but the code becomes less readable
<ousado>
I don't think those who really want to write good code stay with java, and since writing good code is hard, former java devs aren''t java devs by the time they're good anymore
<wmeyer>
why not to use M4 for the syntax extension engine
<wmeyer>
ousado: but (again can't stop being ironic. So now stop it.) I think the community is what is making java strong
<wmeyer>
people who are building (like pippijn says) big systems like hadoop devote fully to that task
<ousado>
the industry is, IMO
<wmeyer>
and they find it's so pleasant to add more code and documenting that
<wmeyer>
you would not like not document few milions like of code
<wmeyer>
why not to add more docs, if it's already big
<pippijn>
/**
<wmeyer>
:D
<pippijn>
* Returns the X coordinate of this <code>Point2D</code> as <code>double</code>.
<pippijn>
* @returns the X coordinate of this <code>Point2D</code> as <code>double</code>.
<pippijn>
* @since java 1.2
<pippijn>
*/
<wmeyer>
reads better than Agatha Christie
<pippijn>
or something
<pippijn>
almost
<wmeyer>
(sorty Agatha Christie, it meant to be a poor joke)
malo has joined #ocaml
<ousado>
:)
<wmeyer>
yes, and renders nice in a browser :-)
<pippijn>
* Returns the X coordinate of this <code>Point2D</code> in <code>double</code> precision.
<pippijn>
* @returns the X coordinate of this <code>Point2D</code>.
<wmeyer>
lol
<pippijn>
* @since 1.2
<pippijn>
*/
<pippijn>
public abstract double getX()
<wmeyer>
@check Point3D
Zerker has joined #ocaml
<wmeyer>
@check getX
<pippijn>
@see getY
<wmeyer>
@check JPane
<pippijn>
/**
<pippijn>
* Constructor.
<pippijn>
*/
<pippijn>
Class()
<pippijn>
or actually they write it in more words
<pippijn>
Constructs and initializes a Point2D with the specified coordinates.
<wmeyer>
@sudo reboot +0
<ousado>
a nice metric for how good a programming language is, is following the respective channel on freenode
<pippijn>
in other words: "constructor"
<pippijn>
ousado: ah?
<ousado>
in #ocaml and #haskell, everyone is relaxed
<pippijn>
ok
<ousado>
in ##java people are killing each other
<wmeyer>
it's more exciting when some haskeller comes to ocaml (not the other way round)
<pippijn>
in ##csharp, people are relaxed, too
<pippijn>
they are more open
<pippijn>
they also talk about comparing languages, new features, and F#
<ousado>
well, it's the better language
<wmeyer>
#linux flames a lot
<pippijn>
##c++ is very strict on topic
<wmeyer>
first time i got here there was a flame already
<pippijn>
even libraries are taboo
<ousado>
yes, and in ##c there's some insane dude
<Drup>
we lack an #ocaml-blah, as the one for haskell :p
<pippijn>
ousado: Zhivago
<ousado>
yes
<pippijn>
he just insults everybody
<wmeyer>
yes, ##c++ must be strict, they have to maintain their focus and respect
<ousado>
same as as cheeser in ##java
<pippijn>
09:47 < Zhivago> mvb: I suspect that what you're trying to do is completely stupid.
<ousado>
it's horrible
<wmeyer>
oh lot's of people on #haskell-blah
<wmeyer>
like usually they've been creative
<pippijn>
13:26 < Zhivago> Are you mentally retarded?
<pippijn>
12:36 < Zhivago> Please have your doctor check you for mental retardation.
<pippijn>
14:49 < Zhivago> skroon: It doesn't, you retarded moron.
<pippijn>
08:23 < Zhivago> That's because you generally make up nonsense and act like a retard.
<wmeyer>
so the usual way of doing it is to create #c-blah, then everybody will migrate there and leave the channel, and then somebody will nick it, when Zhivago goes to bed.
<pippijn>
there is a #c-banned
<pippijn>
for people who have been banned by zhivago
<ousado>
jesus
<pippijn>
but they mostly talk about forth
<pippijn>
there is a guy who always writes with a southern accent
<wmeyer>
:D
<wmeyer>
I like Forth
<wmeyer>
forth is actually like a low level cousin of lisp
<ousado>
I haven't really looked at it, but I fail to see why one would want to write it
<wmeyer>
easy to bootstrap in assembler
<wmeyer>
in one day or so
<wmeyer>
and then from forth you can bootstrap lisp
<ousado>
I mean why one would want to write programs in forth
Zerker has quit [Quit: Colloquy for iPad - Timeout (10 minutes)]
<wmeyer>
and from lisp, ml
<wmeyer>
size
<wmeyer>
and it's better C indeed
<wmeyer>
you can write object system on top Forth
<wmeyer>
in C it's hurdle
<wmeyer>
people bootstrap their forths and then write everything in it
<pippijn>
I've never bootstrapped a forth
<wmeyer>
you can try, it's a good experience
<pippijn>
a programmer I value a lot recommended it
<chris2>
is there a way to avoid many >>= fun _ -> when working with Core?
<pippijn>
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
<ousado>
I need to stop wasting my life fighting IE8
<pippijn>
I've done BASIC for years
mort___ has joined #ocaml
<wmeyer>
ousado: but you know how much it took me to get that done
<pippijn>
chris2: yes
<wmeyer>
actually the demo was one weekend, but the idea was developing long time
<pippijn>
chris2: use the monad syntax extension
mort___ has quit [Remote host closed the connection]
<wmeyer>
if you are ready for the trunk compiler and -ppx use above, pa_monad is very good too
<wmeyer>
(not claiming that omonad is good, but it's easier to use, and does not use camlp4)
<chris2>
would like to stick to 4.00 for now
<pippijn>
wmeyer: why does the example have (begin end)?
<wmeyer>
then pa_monad
<wmeyer>
pippijn: does not need to
<pippijn>
ok
<wmeyer>
but looks better (im my opinion)
<pippijn>
what is ppx?
<chris2>
so how would a >>= fun _ -> look there? _ <-- ...?
<ousado>
wmeyer: well, I mean in general, your knowledge about languages, compilers, etc..
<wmeyer>
chris2: yes
<pippijn>
chris2: yes
<chris2>
hmhm
<wmeyer>
ousado: i am not that good ousado in fact, i have some friends who have superior knowledge and skills in fact, but thanks for this compliment :)
<pippijn>
when does omonad use fail?
<wmeyer>
when pattern match fails at runtime
<wmeyer>
like
<wmeyer>
Some _ x <-- foo bar
<chris2>
actually let (>>) aM bM = aM >>= fun _ -> bM seems to work
<pippijn>
ok
<chris2>
but it always evaluates bM no?
<wmeyer>
yes you should use (>>) in that sample code
<wmeyer>
it depends on a type of monad chris2
<wmeyer>
if it's error monad might not
<chris2>
I use ((), string) Result.t currently
<wmeyer>
then it might not
<pippijn>
wmeyer: so it doesn't raise an exception on failure?
<chris2>
and sometimes (myowntype, string) Result.t
<wmeyer>
pippijn: fail can raise exception if it's needed
<pippijn>
how is that implemented?
<pippijn>
you catch the exception raised by the runtime?
<chris2>
Result.t is like "Either"
<chris2>
there are no exceptions involved
<chris2>
you just have a "good" type and a "bad" type
<chris2>
and the bad one doesnt propagate with bind
<wmeyer>
but it depends on monad
emmanuelux has joined #ocaml
<wmeyer>
exactly, so the second part of (>>) might not be evaluated
<chris2>
isnt ocaml eager?
maurer has joined #ocaml
<ousado>
just per default
<chris2>
of course, it could be a thunk in the right part
<maurer>
Is there a way to actually get a full stack trace out of ocaml when it Stack_overflows?
rwmjones has joined #ocaml
<chris2>
in my case they are real function calls
<maurer>
Even running the bytecode version with OCAMLRUNPARAM=b just gives me a very long slice of it that is the same line over and over again
<maurer>
So I can't see where my code called a large List.map that evidently ocaml doesn't like
<maurer>
weie: I'm getting the Stack_overflow raised, I'm just getting a massively incomplete trace
<maurer>
err, wmeyer
<pippijn>
in this code, I use closures, as well
<pippijn>
to ensure proper resource acquisition and release
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<pippijn>
by the way, java now has try-with-resources
<pippijn>
that looks like: try (Reader reader = new Reader()) { ... }
ttamttam has left #ocaml []
<pippijn>
and is transformed into something that closes the reader after the try block, even when an exception is thrown
<pippijn>
and it preserves all exception information
<pippijn>
BUT!
<pippijn>
it is specifically made for I/O classes
<pippijn>
and close() throws IOException
<pippijn>
so if you use this, even for non-IO stuff, you need to uselessly catch an IOException that will never be thrown, just to make java's checked exception stuff happy
<pippijn>
in my code, I have iter(data, new Processor() { void process (@Column("blah") blah, @Column("blep") blep) { ... } });
<pippijn>
data is simply a List<Map<String, String>>
<pippijn>
it iterates over the list of maps, and extracts the values for the keys "blah" and "bleh" from each map
<pippijn>
and passes these to the process method
<pippijn>
wmeyer: you can do a lot of nice things with java
<pippijn>
runtime metaprogramming
<pippijn>
compile time metaprogramming is also possible with aspectj, but it's limited
maurer has left #ocaml []
awm221 has quit [Quit: Leaving.]
<ousado>
what is runtime metaprogramming?
awm22 has joined #ocaml
<ousado>
as in generating bytecode on-the-fly?
<pippijn>
that's one way
<pippijn>
but you get quite far with reflection
<pippijn>
generating bytecode is also done
Anarchos has quit [Remote host closed the connection]
Anarchos has joined #ocaml
tobiasBora has joined #ocaml
Yoric has joined #ocaml
<ousado>
well, I'm not sure I'd call reflection metaprogramming
<pippijn>
ousado: for (Map<String, String> map : data) { String blah = map.get("blah"); if (blah == null) throw new MissingColumnException("blah"); String blep = map.get("blep"); if (blep == null) throw new MissingColumnException("blep"); ... }
<pippijn>
ousado: the latter is implemented using reflection
<pippijn>
ousado: and is the same as the former
ollehar has joined #ocaml
<pippijn>
ousado: adding a new language construct "iter" is metaprogramming, in my opinion
<ousado>
apart from implying compile-time processing, metaprogramming also implies making/being able to make use of the type system of the language it's done in. to me, at least
<ousado>
if any, that is
malo has quit [Quit: Leaving]
<pippijn>
so camlp4 is not metaprogramming
<pippijn>
because you have no access to types
<ousado>
make use of it as in having the generated code checked
<pippijn>
ok
<pippijn>
so generating code in perl is not metaprogramming
<pippijn>
and in fact, metaprogramming does not exist in perl
<pippijn>
because the types are checked at runtime
<ousado>
as per wikipedia, you're correct
<ousado>
Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime.
<ousado>
well, depending on the interpretation of that sentence
<pippijn>
well
<ousado>
but then basically any language supports metaprogramming
<pippijn>
manipulating code as data
<pippijn>
C++ template metaprogramming doesn't do that
<bernardofpc>
I rather read EWD 249, it's much stronger in proposals than bare negative statements
<bernardofpc>
(and, for the sake of flame wars argument, FORTRAN is still the best language for matrix algebra, which is arguably the best understood part of automatic computing that we have ever had)
<ousado>
this is a conversation about terminology, not a flamewar
Yoric has quit [Ping timeout: 256 seconds]
<bernardofpc>
(rhaaaaaaaaaaaaaaaa, I missed one hour ... that's a problem of having your $SCREEN in a different time zone)
<bernardofpc>
(and random network)
<ousado>
pippijn: but you agree that the benefits of static typeing ideally are available to generated code, too, right?
smondet has quit [Remote host closed the connection]
<pippijn>
ousado: certainly
<pippijn>
ousado: I would like to use a language like ur/web instead of java
<ousado>
yes, I haven't used it for anything yet
<ousado>
but it's definitely a very interesting approach
<ousado>
oh I see, you mean the metaprogramming features explicitly
dekabel has joined #ocaml
<vext01>
it pattern matching the only way to "unpack" a varient type
<vext01>
an instance of a varient type I should say
<ousado>
yes, unless you have an irrefutable pattern
<vext01>
i have a nested varient type
<vext01>
do i have to nest match x with ...
<ousado>
yes
<ousado>
but you can "unpack" several nested values in one pattern
<ousado>
dekabel: I managed to install that yesterday after a bit of struggle
<dekabel>
ousado: any particular recommendation? I'm going to install it now.
<ousado>
as it turned out, the install doesn't really install all dependencies, or doesn't set the PATHs accodringly, at least
<dekabel>
Mmmm. Perhaps a virtual machine would be easier.
<ousado>
I'd definitely recommend that
<dekabel>
Does the linux version include a cross-compiler? (so that I can test the final binaries on Windows)
<ousado>
adroen is working on that, but I think it's not finished yet
<ousado>
*adrien
<dekabel>
Thanks. It will be a long time learning anyway. :)
<ousado>
but the installer does the bytecode-related stuff just fine, I only had issues with the native compiler
<ousado>
and I think the bytecode is x-platform anyway
Mortchek has quit [Ping timeout: 252 seconds]
<dekabel>
The native compiler is what interests me most.
<dekabel>
My interest for Ocaml is that it includes parsing/lexing tools and outputs native binaries with good performance. (my goal is to write interpreters)
<bitbckt>
it's an excellent language for that sort of work.
<dekabel>
Either that or I'm just too lazy to write a decent garbage collector. Heh.
<ousado>
well, it's not too hard to get it running on windows, but still, development on windows is not a pleasant experience in caomparison
<dekabel>
I'll give it a try and just use a VM if something goes wrong.
<dekabel>
Thanks for your help. :)
<ousado>
you're welcome
<ousado>
(you need cygwin, msys, that i686-m64-ming32 compiler thing, and you need to add cygwin/bin to the PATH in case ou get some error about not finding i686-m64-ming32-as)
<ousado>
for ocamlopt. that is
<ousado>
after I went through that I was able to compile haxe, which made me reasonably sure everything works
<dekabel>
So far, OcamlWin repl seems to work, It's installing Cygwin which will take a while, it's quite big.
jbrown has quit [Ping timeout: 245 seconds]
<ousado>
let me know if it work out of the box, I had a previous cygwin installation which might or might not have interfered
travisbrady has quit [Quit: travisbrady]
<ousado>
I'm not very experienced with windows stuff though
<dekabel>
Sure. It seems to be installing just fine.
osnr has quit [Quit: Leaving.]
<ousado>
does ocamlopt work?
<dekabel>
It's still not done. Downloading all the cygwin packages will take a while.
<dekabel>
But so far, no errors or anything wrong.
<ousado>
well, yes, the installer didn't crash for me, too
<ousado>
but it didn't set up everything correctly
<dekabel>
Uh oh.
<dekabel>
It "finished" but somehow it stopped before actually installing the Cygwin packages.
<dekabel>
Only C:\Cygwin\etc and C:\Cygwin\var are present.
<ousado>
hm.. maybe there's some setup.exe somewhere that you still need to run?
<ousado>
I don't know, unfortunately I didn't install on a clean system
<ousado>
the mentioned compilers were already present
<dekabel>
I do have MinGW installed, but not Cygwin.
<ousado>
that's very strange.. I wonder what it's downloading there..