Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 17 23:58
    SethTisue closed #504
  • Oct 17 23:58
    SethTisue commented #504
  • Oct 17 21:39
    smarter commented #12437
  • Oct 17 21:35
    s5bug edited #12474
  • Oct 17 21:28
    s5bug opened #12474
  • Oct 17 15:45
    strelec commented #504
  • Oct 17 05:52
    som-snytt commented #10603
  • Oct 16 23:34
    SethTisue edited #12171
  • Oct 16 23:34
    SethTisue unlabeled #10603
  • Oct 16 23:33
    SethTisue demilestoned #10603
  • Oct 16 23:33
    SethTisue closed #10603
  • Oct 16 23:33
    SethTisue commented #10603
  • Oct 15 19:04
    NthPortal review_requested #9786
  • Oct 15 17:20
    Kordyjan commented #1284
  • Oct 15 17:14
    Kordyjan synchronize #1284
  • Oct 15 17:13
    Kordyjan opened #1284
  • Oct 15 16:31
    som-snytt commented #12473
  • Oct 15 15:22
    NthPortal commented #12473
  • Oct 15 15:18
    NthPortal commented #12473
  • Oct 15 15:16
    NthPortal commented #12473
Jose C
@jmcardon
you discard the information on the left parameter
Fabio Labella
@SystemFw
Some and Nothing do two things
Jose C
@jmcardon
and you can implement option
trepidacious
@trepidacious
Sorry of type Maybe a I guess
Fabio Labella
@SystemFw
one) they construct values of type Maybe a
two) they are runtime tags that are used to do runtime dispatch (pattern matching)
trepidacious
@trepidacious
@SystemFw So in Scala terms a constructor and an unapply?
Fabio Labella
@SystemFw
yeah
well, they literally are tags
that are part of the runtime representation
trepidacious
@trepidacious
Like in a tagged union?
Fabio Labella
@SystemFw
kind of like python "types"
yes, pretty much
trepidacious
@trepidacious
Thanks that's much clearer, I would probably have tripped over that later :)
Fabio Labella
@SystemFw
types are compile time labels that are used to statically prove the absence of certain behaviour
tags are runtime labels that inform you about a specific data representation in memory
when python (or any other "strongly typed" untyped language) programmers talk about types
those aren't types, they are tags
trepidacious
@trepidacious
I guess they are kind of types if the set of behaviours you check for is empty ? ;)
Fabio Labella
@SystemFw
well, you jest
but one view of untyped languages
trepidacious
@trepidacious
Vacuously typed! It's the new thing :)
Fabio Labella
@SystemFw
is that they are actually unityped
so, everything has one type (e.g Object or whatever), with lots of tags (Int, String, Dict or whatever)
btw this is loosely related to the class vs type distinction in OO
trepidacious
@trepidacious
I've never completely got that, beyond "a class is one way of defining a type"
Fabio Labella
@SystemFw
well, no
it's similar
the type is the compile time entity
the class is the runtime tag (a bit loose here cause I don't really bother with OO theory)
there's a really nice article though
wait a min
but basically when you pattern match on an Option you are checking to see if a value of type Option[A] has class Some or None
the problem is that most OO languages mingle these two aspects
trepidacious
@trepidacious
But Some and None are also types?
Rich
@Rich2
I've long thought that "objects" in "object orientated" are misnamed. They usually mean smart objects that have self knowledge as opposed to dumb data. Smart object is a bit of an oxymoron.
Fabio Labella
@SystemFw
so Some defines both a type Some and a class Some
trepidacious
@trepidacious
Yup
So every class defines a type, but not every type is a class
Fabio Labella
@SystemFw
from the article:
All of this is simply to say that we must be working with two separate concepts here.

The runtime shape and properties of the values that end up flying around when a program actually runs. This we call class.
The compile-time, statically-discoverable shape and properties of the expressions that fly around when a program is written. This we call type.
which should resonate (with some differences) from the talk about types and tags
trepidacious
@trepidacious
My opinion on OO is probably completely facile, but I really think the good bit is syntactic sugar and name-spacing, everything after that is normally a bad idea
@SystemFw Yes the compile-time / run-time distinction definitely makes sense
Rich
@Rich2
Pattern match on AnyRef should be a different function to a match on an Int or or Double. I don't think they should even have the same syntax.
Jose C
@jmcardon
omg
what on earth is happening with gitter
@SystemFw same thing in the scalaz room now
Fabio Labella
@SystemFw
it's been two days of hell
trepidacious
@trepidacious
@jmcardon I've not seen anything weird, what's up?
Jose C
@jmcardon
it shows 1 unread message but there's nothing there
Fabio Labella
@SystemFw
ghost notifications today, dropped messages yesterday (and who knows now)