Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 18 19:35
    @SethTisue banned @lunaterra22
  • Sep 14 18:08
    @SethTisue banned @discjock:matrix.org
  • Sep 12 20:37
    @SethTisue banned @manuelzamoratetherbtcusa:matrix.org
  • Sep 06 14:29
    @SethTisue banned @white_hat_hacker:minds.com
  • Sep 06 14:29
    @SethTisue banned @alexchole:matrix.org
  • Aug 31 17:03
    @SethTisue banned @andersonwatts7:matrix.org
  • Jul 19 20:37
    @SethTisue banned @tonyobanon
  • Jan 02 23:58
    @SethTisue banned @fakubishes:nerdsin.space
  • Dec 15 2021 05:01
    som-snytt commented #12516
  • Dec 15 2021 04:38
    SethTisue edited #1312
  • Dec 15 2021 04:38
    SethTisue opened #2273
  • Dec 15 2021 04:31
    jackkoenig opened #12516
  • Dec 15 2021 04:29
    SethTisue edited #1312
  • Dec 15 2021 04:28
    SethTisue edited #1312
  • Dec 15 2021 04:27
    SethTisue labeled #9831
  • Dec 15 2021 04:27
    scala-jenkins milestoned #9831
  • Dec 15 2021 04:27
    SethTisue labeled #9831
  • Dec 15 2021 04:27
    SethTisue opened #9831
  • Dec 15 2021 03:35
    som-snytt commented #11339
  • Dec 15 2021 03:27
    som-snytt labeled #12494
Fabio Labella
@SystemFw
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
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