<solarwind>
vdrab: Lazy list are being called streams in OCaml. And they are quite used (at least I'm using them a lot - I hope this doesn't sound like a reevaluation of my statement :).
<vdrab>
solarwind : do they have a representation that's similar to lists?
<solarwind>
Yes.
<solarwind>
But you've noticed well that they are not standard.
<vdrab>
still, if you can get a "similar-enough" behaviour, that's wonderful
<vdrab>
I found our school's library has plenty of books on ML. would it be interesting to start out with ML or is OCaml just too different for that to be worth it?
<solarwind>
You have a couple of free books on OCaml (they are quite good actually), some tutorials and language reference. Plenty of documentation to start with.
<Smerdyakov>
I'd recommend SML, meself.
<vdrab>
Smerdyakov : why is that? care to elaborate?
<Smerdyakov>
Better tools.
<Smerdyakov>
And more of 'em.
<Smerdyakov>
More open development process.
<Smerdyakov>
Standardized language.
<vdrab>
Smerdyakov : in what sense is it different from ocaml?
<vdrab>
no OO?
<Smerdyakov>
Yes. Beyond that, the language differences are mostly cosmetic.
<vdrab>
so understanding of the language semantics etc ... pretty much transfers nicely between languages of the ML family?
<vdrab>
or is that a bit of an overstatement
<solarwind>
To say the truth, I've never used OO in OCaml a great deal.
<solarwind>
Modules were pretty much all that I ever needed.
<vdrab>
yes, my interest in ocaml is definitely not in OO :-)
<Smerdyakov>
vdrab, that is correct.
<vdrab>
wow. that sounds promising
<vdrab>
any other pointers? I appreciate the input
<solarwind>
On that note, I guess it's similar to what's happening when you're learning a Lispish language. You atuomatically start to understand a lot of code even if it's written in Scheme, whilst you know only CLisp.
<vdrab>
but CLisp and Scheme has quite different semantics I thought... not an expert though
<solarwind>
Neither am I, but I never had any problems understanding both even if I know only one of them.
<solarwind>
Oh, bloody hell, how did this spam sneaked into my inbox?
* solarwind
goes to train his SpamAssassin some more
<Smerdyakov>
solarwind, are you using the network tests?
<solarwind>
Nope, only the bayesian filter.
<solarwind>
I'm not entirely agreeing with SA method of filtering mail. Seems to me that they use a mish of various tests to ascertain if a mail is spam or ham. Not very clean. And the scoring thing is very confusing.
<Smerdyakov>
And very effective.
<solarwind>
I've seen better.
<Smerdyakov>
It's almost 100% effective for me.
<solarwind>
Developing a spam filter myself, I don't necessarily agree all the methods they use (I don't agree in general with stuff like DCC or Vipul's Razor). I still think that the best approach is pure heuristic tests (whether you do that with a bayes classifier, bayes chaining, fuzzy logic or neural network).
<Smerdyakov>
Agree or disagree, it works for me.
<solarwind>
Correct!
<solarwind>
For the end user that's what matters most.
<Smerdyakov>
I have no more than 1 or 2 mis-classifications a month, I believe.
<solarwind>
You mean false negatives or false positives?
<Smerdyakov>
I think only false negatives.
<solarwind>
False negatives are a measure of the filter's effectiveness while false positives are simply bugs.
<solarwind>
s/the//
<solarwind>
Smerdyakov: Are you using your SA site-wide?
Submarine has joined #ocaml
<Smerdyakov>
Yes
<solarwind>
Hm.. I found it a bit slowish. Now I only use it for myself (testing purposes) from procmail. Site-wide I use dspam.
<Smerdyakov>
Maybe slow-ish, but quite acceptable for the 40+ user system I run.
tintin has quit [Read error: 54 (Connection reset by peer)]
tintin has joined #ocaml
vodka-goo has joined #ocaml
mauke has quit [Read error: 110 (Connection timed out)]
vdrab has joined #ocaml
Gueben has quit ["Leaving"]
hangman4 has joined #ocaml
cognominal has quit [Read error: 60 (Operation timed out)]
svenl_ has joined #ocaml
Submarine has quit ["Leaving"]
svenl has quit [Connection timed out]
pango has quit ["Leaving"]
Snark has joined #ocaml
vezenchio has quit [""Under democracy one party always devotes its chief energies to trying to prove that the other party is unfit to rule—and bot]
humasect has quit [Excess Flood]
humasect has joined #ocaml
humasect_ has joined #ocaml
humasect has quit [Read error: 131 (Connection reset by peer)]
Submarine has joined #ocaml
pango has joined #ocaml
humasect_ is now known as humasect
cognominal has joined #ocaml
znutar has joined #ocaml
svenl_ is now known as svenl
monochrom has joined #ocaml
Snark has quit ["Leaving"]
Submarine has quit ["Leaving"]
humasect has quit [Read error: 54 (Connection reset by peer)]
humasect has joined #ocaml
BleSS has joined #ocaml
<BleSS>
does ocaml has: built-in support for lists, automatic storage management, dynamic typing, first-class functions, extensibility ?
humasect_ has joined #ocaml
<vincenz>
no dynamic typing
<Smerdyakov>
OCaml doesn't need built-in support for lists, though there is a little syntactic sugar.
<vincenz>
static typing with type inference
<vincenz>
Smerdyakov: it does have it tho
<Smerdyakov>
vincenz, not in the language, beyond the [...] shortcut.
<Smerdyakov>
vincenz, more like "in the standard library," in more mainstream parlance.
<vincenz>
:: and [] are special syntax
humasect has quit [Read error: 54 (Connection reset by peer)]
<Smerdyakov>
:: isn't.
<vincenz>
It is, it's the only nonalphabetic name that's allowed for a data constructor
<vincenz>
which is also the only infix data constructor
<Smerdyakov>
But you can still do: type dumb_pair = :: of int * int;;
<Smerdyakov>
As an example of using :: for something other than lists.
<vincenz>
yes and it's the only alphabetic constructor allowed
<Smerdyakov>
But, yeah, that _is_ kinda lame.
<vincenz>
so it's special syntax
<Smerdyakov>
But it isn't special in SML.
<Smerdyakov>
I wonder if BleSS is going to say anything else.
<Smerdyakov>
BleSS, to digest what we've said: OCaml is not dynamically typed. It has the other things you mentioned, though it's not always clear whether certain items are in the language or the standard library.
<vincenz>
what do you mean by "extensibility"?
<BleSS>
i questionned that to knowing if i could use ocaml to I.A. stuff
<BleSS>
vincenz, If something new like, say, aspect-oriented programming takes off, ocaml would be able to incorporate it with macros??
<Smerdyakov>
The ML family of languages is well-designed enough that macros aren't necessary or even especially useful for the vast majority of applications.
<Smerdyakov>
What is "I.A. stuff"?
<BleSS>
artificial intelligence, I.A. -> A.I.
<j_n>
bless is like a mini-version of brandon van every
<BleSS>
i found a good ocaml ide (unix), it's name is cameleon. some suggestions of any other?
<Smerdyakov>
j_n, now, that's not nice to say, and we don't have evidence yet that you're right. :P
<Smerdyakov>
BleSS, emacs
<vincenz>
BleSS: vim
<Smerdyakov>
BleSS, what makes you so sure you want the list of features you gave for doing AI programming?
* Smerdyakov
reads and prepares a rebuttal for the features OCaml lacks. ;)
<Smerdyakov>
OK. "Built-in support for lists" is a sign of a weak language. I mean, come on, if you don't have a data structure mechanism that makes this easy, then you're in the dark ages.
<Smerdyakov>
I don't see any argument there that "dynamic typing is important for AI or rapid programming," and I certainly don't agree with such a statement.
<Smerdyakov>
s/programming/prototyping
<vincenz>
Smerdyakov: I think it should be expanded to "dynamic typing and static typing with inference"
<Smerdyakov>
Finally, macro systems are only important for very niche tasks when you have a well-defined language.
<Smerdyakov>
And we generally use ad-hoc code generation for this instances, and it tends to work out fine.
<BleSS>
ok, thanks. I'll learning ocaml. is it true that ocaml is more fast than c++?
<vincenz>
doubtfully it's at par
<vincenz>
add a comma after "doubtfully"
<Smerdyakov>
Actually, I'm pretty convinced by my experiences that static typing is _necessary_ for effective rapid prototyping.
<vincenz>
yes but with type inference
* humasect_
is in parentheses
<Smerdyakov>
But of course. :)
<vincenz>
humasect_: lisplover, hmm?
<monochrom>
Hmm that's an interesting statement.
<humasect_>
not really, i don't think
humasect_ is now known as humasect
<Smerdyakov>
monochrom, which?
<monochrom>
That you find static typing with type inference helps prototyping.
<humasect>
lisp isn't portable enough to love.
<Smerdyakov>
I didn't particularly mention type inference there. I just think rapid prototyping isn't going to be effective without static type checking.
<monochrom>
I agree with you, no disagreement here. Just that I like the fact that you say it out loud.
<humasect>
(unconditionally)
BleSS has quit ["maldito duende"]
<humasect>
no macros for ocaml then? =)
mr_pengy has joined #ocaml
<humasect>
the number of books for lisp declined by 2 from 1997 to 2002. how is this possible ?
smimou has quit ["?"]
<vincenz>
my dog ate them
<humasect>
your dog is now in parentheses
<monochrom>
camlp4 is a macro language for ocaml.
<humasect>
oh yeah.
<humasect>
lisp wouldn't be so bad with a shift-lock of sorts, for chars.
<vincenz>
like scheme better
<humasect>
yep
<vincenz>
s/^/I
Riastradh has left #ocaml []
<Smerdyakov>
Hehehe,
__DL__ has quit [Read error: 104 (Connection reset by peer)]