<cuttle>
(although in this case tea is defined as instant chai with *way* too much sugar)
<cuttle>
ELLIOTTCABLE:
<cuttle>
ooh lots of elliottcable to read
<alexgordon>
hi cuttle
<cuttle>
alexgordon: present
<cuttle>
alexgordon: compiler errors could be *way* better than they are, and what I've concluded about parsing is that it's *really* easy, but making parsing with good errors takes a lot more raft
<cuttle>
craft*
<alexgordon>
cuttle: yeah
<alexgordon>
though if you control the grammar it's easy to make grammars that have good errors
<cuttle>
joelteon: isn't covariant functor just normal functor in haskell? and contravariant is the different kind?
<cuttle>
alexgordon: yeah
<cuttle>
alexgordon: i like what you said re lua vs scala and rust
<cuttle>
alexgordon: i am a bit scared about rust re that
<alexgordon>
yeah well it's probably not going to get *less* complex
<alexgordon>
cuttle: anyway I was trying to work out... WTF are traits for?
<alexgordon>
like, what is the use case
<cuttle>
well
<cuttle>
they replace both interfaces and inheritance
<alexgordon>
wtf are those two for?
<cuttle>
alexgordon: sadly, yes (re less complex)
<alexgordon>
why not just remove interfaces and inheritance :P
<cuttle>
alexgordon: well, code reuse, which, contrary to popular belief, is nice to have
<cuttle>
and
<cuttle>
contracts
<cuttle>
interfaces for contracts are *very* useful in a statically typed language like scala
<alexgordon>
e.g.?
<cuttle>
and traits avoid a lot of the mess of multiple inheritance
<cuttle>
well like
<cuttle>
functor/mappable for instance
<cuttle>
like, c++ is duck typed in its generids
<cuttle>
generics*
<cuttle>
concepts were meant to fix that but got pushed
<cuttle>
because templates are more like copypaste macros than like generics
<alexgordon>
eh I'm unconvinced
<cuttle>
you *can't do things* without them
<cuttle>
like
<alexgordon>
dynamic languages seem to do fine without
<cuttle>
well of course
<cuttle>
scala is not a dynamic language
<alexgordon>
it is
<cuttle>
and C++ is dynamic wrt its generics
<cuttle>
…what
<cuttle>
let's redefine things randomly for fun?
<alexgordon>
scala is as dynamic as it gets!
<cuttle>
sure scala has a lot more runtime things than java
<cuttle>
but
<cuttle>
it has a very static type system
<cuttle>
so if you're going to say that, then haskell is dynamic
<alexgordon>
nah, haskell doesn't have messaging
<cuttle>
and then you should fucking specify which aspect of the language you are saying is dynamic
<cuttle>
scala
<cuttle>
what do you mean by messaging
<alexgordon>
sending a message to an object
<alexgordon>
like in smalltalk
<cuttle>
scala does not have method_missing-type stuff
<cuttle>
it is built on java
<cuttle>
where did you get the idea that it does?
<alexgordon>
java has messaging
<alexgordon>
when you call a method in java it sends a message to the object
<alexgordon>
like in objc
<cuttle>
it has messages like in erlang, where you send a *value* to an object, but that is done in userspace with an infix operator overloaded
<cuttle>
ok so now we're defining java and objc to be dynamic?
<alexgordon>
objc sure is
<cuttle>
well sure
<cuttle>
you can say id
<cuttle>
etc.
<alexgordon>
java is based on objc which is based on smalltalk
<cuttle>
ugggggh
<cuttle>
if you can define java to be dynamic then it is impossible for me to have a conversation with you
<alexgordon>
I'm not defining it to be, I'm arguing that it is
<alexgordon>
when you do
<cuttle>
without interfaces, then in java, your generic capabilities would be significantly reduced and you would have to rewrite a lot of code for every possible type that they use
<cuttle>
like the problem that templates solve
<alexgordon>
foo.someMessage(bar) in java, that's the same as `foo someMessage:bar` in smalltalk
* cuttle
rolls eyes
<cuttle>
you can say vtables are that too
<cuttle>
in c++
<alexgordon>
no, vtables are not messages
<alexgordon>
in particular C++ has no reflection
<alexgordon>
java does
<cuttle>
java's type system does not let you do certain things
<cuttle>
without interfaces
<cuttle>
thus, they are useful in it, whether or not you define it as dynamic
<cuttle>
this is the most fucking red-herringy redirected derailed conversation i have ever fucking had
<alexgordon>
lol
<purr>
lol
<alexgordon>
read about reflection in java
<alexgordon>
it's not as static as you think, compile errors aside
<cuttle>
reflection is very hurtful to performance
<cuttle>
and it's jit so if there's no reflection in the code it doesn't need the runtime information
<alexgordon>
sure
<alexgordon>
but reflection is the measure of how dynamic a language is
<cuttle>
so while it's *technically* possible to use reflection in java, that doesn't equate it to ruby
<alexgordon>
reflection is all but impossible in C++
<cuttle>
that's almost as bad as saying they're both turing equivalent and thus the same language
<cuttle>
what are you arguing here
<cuttle>
java is more dynamic than c++, and less dynamic than ruby
<cuttle>
because it's more dynamic than c++, you can do reflection
<cuttle>
because it's less dynamic than ruby, you need interfaces
<alexgordon>
no because
<cuttle>
it is *also* less dynamic than smalltalk, despite being derived from it
<alexgordon>
dynamic typing is orthogonal to static typing
<cuttle>
explain yourself
<alexgordon>
interfaces form part of the static type system
<alexgordon>
but java also has dynamic typing
<alexgordon>
if it didn't there'd be no messaging, no reflection, like in C++
<alexgordon>
C++ is a static only language in other words, whereas java, objc are both static AND dynamic
<cuttle>
sure, but the perf difference between reflection-using code and non-reflection-using code demonstrates that it is NOT IN USE ALL THE ITME
<cuttle>
it's a CONTINUUM
<cuttle>
it's not like both are static fucking switches
<cuttle>
more aspects of java are dynamic than c++
<cuttle>
but less than ruby
<cuttle>
how fucking hard is this
<alexgordon>
lol temper
<purr>
lol
<alexgordon>
in fact objc's dynamic type system has changed relatively little, but it's static typing has been made much more strict recently (because of ARC)
<alexgordon>
anyway, I agree this is a stupid aside
<cuttle>
literally, you do more derailing in any given conversation than the most passionate men's-rights-activist
<alexgordon>
child support is evil
<alexgordon>
cuttle: yeah but I'm only derailing from my own damn question :P
<cuttle>
...i fail to see how that applies
<alexgordon>
we were talking about traits being useful in scala
<cuttle>
yeah
<cuttle>
and they are
<cuttle>
they're like ruby mixins
<cuttle>
plus the escape hatch to the type system that interfaces are
<cuttle>
so they're useful in both ways
<alexgordon>
oh right mixins
<cuttle>
you know how java always has both an interface and impl to everything?
<joelteon>
hey
<joelteon>
nothing wrong with MRAs
<cuttle>
traits combine those
<alexgordon>
so I guess traits are more important the more OO the language is
<cuttle>
joelteon: except that they *tend* to be thinly veiled anti-women's-rights reactionaries
<alexgordon>
traits/mixins
<joelteon>
ok
<cuttle>
everyone says use composition but that is no fun and verbose
<joelteon>
yeah
<cuttle>
mixins are good
<joelteon>
fair enough
<cuttle>
joelteon: i agree that men are not in a perfect position in today's society, and there is a lot of work to be done in both directions
<cuttle>
but
<alexgordon>
cuttle: but python doesn't have mixins and it gets along fine, I suppose mainly because it's not OMG FULL OOP like ruby is
<joelteon>
both the activists have good points
<alexgordon>
cuttle: now who's derailing!
<alexgordon>
;)
<cuttle>
a lot of people who called themselves mras are not actually interested in equality
<cuttle>
alexgordon: i'm talking to joelteon
<joelteon>
i just dislike when people refer to an entire group based on the actions of a small group of angry reactionaries
<cuttle>
joelteon: no, it's not a small group
<joelteon>
it's annoying as butts
<joelteon>
really?
<joelteon>
have you conducted a study?
<alexgordon>
eh
<cuttle>
i feel like mras are angry reactionaries with much more frequency than feminsists
<cuttle>
no i have not conducted a study
<alexgordon>
what's the point of men's rights activists again?
<alexgordon>
I don't get it
<joelteon>
stuff
<joelteon>
same as feminists, different issues
<alexgordon>
but the issues seem to be mainly brought on by themselves
<joelteon>
ooooooo
* alexgordon
is a misandrist, clearly
<cuttle>
alexgordon: haha
<cuttle>
egh both of these conversations do not seem to be going interested good places :P
* cuttle
goes off to produce hip hop beats
<alexgordon>
cuttle: nooo
<joelteon>
i bet he was already leaving and just wanted an excuse
<joelteon>
brb im gonna get some coffee
<alexgordon>
damit
<alexgordon>
damm
<alexgordon>
it
<cuttle>
alexgordon: if you buzz me with something cool to say i will be back in here :p
<joelteon>
i wish there was a starbucks inside my house
<joelteon>
:(
* cuttle
just bought some tea
<joelteon>
ok brb
<cuttle>
so i can make it without going somewhere
<cuttle>
\o/
<joelteon>
ok back
<joelteon>
that was quick
<joelteon>
only 18 min
eligrey has quit [Quit: Leaving]
jdhartley has quit [Ping timeout: 245 seconds]
cuttle has quit [Ping timeout: 245 seconds]
cuttle has joined #elliottcable
alexgordon has quit [Quit: Computer has gone to sleep.]