Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 10:27
    dwijnand labeled #9711
  • 10:27
    scala-jenkins milestoned #9711
  • 10:27

    dwijnand on ClassfileAnnotation-docs-fix

    Format typo in ClassfileAnnotat… (compare)

  • 10:27
    dwijnand opened #9711
  • 09:00
    JuggleHacker opened #12435
  • 07:35

    lrytz on 2.13.x

    Fix Stream.iterator memory leak Merge pull request #9710 from h… (compare)

  • 07:35
    lrytz closed #9710
  • 04:06
    htmldoug edited #9710
  • 03:54
    htmldoug edited #9710
  • 03:51
    htmldoug edited #9710
  • 03:50
    htmldoug edited #9710
  • 03:05
    som-snytt commented #12433
  • 03:04
    som-snytt commented #12434
  • 02:14
    SethTisue labeled #9709
  • 01:04
    SethTisue closed #1461
  • 01:04

    SethTisue on 2.12.x

    2.12: new Scala SHA (#1461) (compare)

  • 00:47
    SethTisue commented #9710
  • 00:46
    SethTisue labeled #9710
  • Jul 26 23:16
    htmldoug edited #9710
  • Jul 26 23:08
    htmldoug edited #9710
Fabio Labella
@SystemFw
that doesn't matter
Jose C
@jmcardon
object None extends Option[Nothing]
Fabio Labella
@SystemFw
it's between type constructor and data constructor
the fact that Nothing/None have no arguments is not the point I'm making
let me put it this way
trepidacious
@trepidacious
@SystemFw I get that Nothing is different to a type or type constructor (at least approximately) yup.
Fabio Labella
@SystemFw
same for Just
yeah ok
Jose C
@jmcardon
@trepidacious what do you find weird about grasping re: type constructors?
trepidacious
@trepidacious
@SystemFw Yes. But it's still the case that to have a functor you need a type constructor rather than a type? I get that Just and Nothing fail even BEFORE that by not being a type OR a type constructor :)
Fabio Labella
@SystemFw
(btw, the distinction between type and type constructor is not really useful imho except in conversational talking, they're all types afterall, and we have kinds to talk about them precisely)
a Functor needs to be over a type of kind * -> *
that's what you need
trepidacious
@trepidacious
@SystemFw Is * -> * not the same as a type constructor? I thought they were just different terms for the same thing?
Fabio Labella
@SystemFw
yeah, but type constructor is not as precise
think Either
trepidacious
@trepidacious
@jmcardon I think I'm ok on that, we just ended up talking about two things at once, I didn't know about type constructors versus data constructors though
Fabio Labella
@SystemFw
that's also a type constructor
but can't be a functor
Either a can
Jose C
@jmcardon
b-b-b-b-bifunctor!
trepidacious
@trepidacious
Ah because it has two type paramters
Fabio Labella
@SystemFw
so I'd recommend just talking in terms of kinds
it's way more precise
trepidacious
@trepidacious
Is that * -> * -> * then?
Fabio Labella
@SystemFw
yeah
and in haskell types and "type constructors" have the same representation anyway
trepidacious
@trepidacious
How do I pronounce *->*?
Fabio Labella
@SystemFw
the term "type constructor" is imho only useful when explaining the difference with "data constructors"
star to star
that's how I do it
Rich
@Rich2
Could you implement Option in terms of Either?
type Option[A] = Either[Unit, A]
type Some[A] = Right[Unit, A]
val None = Left[Unit, Nothing](Unit)
Fabio Labella
@SystemFw
you can also say Type to Type but it's more confusing since you are saying type a lot as well
trepidacious
@trepidacious
Makes sense. So that is kind of a single parameter function on types?
Fabio Labella
@SystemFw
yeah, pretty much
with the usual caveats wrt to currying
Jose C
@jmcardon
star to star :P
jk
@Richtype yeah
trepidacious
@trepidacious
I should read up on the data constructor thing, but approximately Just and Nothing are ways of getting a value of type Maybe, but that does not make them types themselves?
Jose C
@jmcardon
you can
Option is essentially Either with less information
Fabio Labella
@SystemFw
@trepidacious yes
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