Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:02
of
00:00:07
yeah i i
00:00:11
oh well well good afternoon everybody if a welcome again
00:00:17
see the a tenth of us troops got a if if
00:00:20
this is much much bigger room because stage but i um i had when i was here ten years ago um
00:00:28
a simple people is very bright someone else mentioned that it's incredibly bright what to see
00:00:33
yeah everybody here and hopefully this time around them was gonna talk
00:00:38
talk about a little bit more exciting if that my of my topic
00:00:42
today is a good show it i'm gonna talking about um i had
00:00:47
time to foster actually uh install three and i covered forcing on um
00:00:54
i suppose reporting back and what i've been doing a jointly with uh martinez
00:00:58
triple e. p. f. l. i guess i've been working on it more or less
00:01:02
um what's full time since since all to go um but it's
00:01:06
also kind of a continuation of of what i've been doing with um
00:01:10
uh we if um if look does he work with um uh
00:01:15
the scholar comply that seemed like bands basically trying to make the um
00:01:24
the us colour three features safe for for the kinds of things that people been using um
00:01:30
uh uh uh a shapeless um for it's got to a given
00:01:36
the fact that things gonna change that much install the three a shape
00:01:40
very essential use of the top macros which lets me now understands that
00:01:45
really really very big respect those things uh current fought a across the campus
00:01:52
and i've also use this process is being a fantastic opportunity to to really just sit down take a
00:01:58
completely fresh look at how a total starvation should work
00:02:03
installer if um how we evaluate some decisions i made
00:02:07
some it's been around for quite yet so uh and for many many things
00:02:11
that uh you know with the benefit of hindsight but not the greatest idea
00:02:15
wonderful opportunity to basically have a chance to start again from scratch um
00:02:22
and yes it's great opportunity and and i i think i'm very happy with
00:02:27
the way things are gone i mean uh it will obviously um uh uh
00:02:30
it's not it's not it's not really for me to judge is really for
00:02:34
the people that actually end up and amusing stuff to decide whether or not
00:02:38
so but it's only i had a han of long standing open problems in shape us
00:02:45
um that's the i it took me a very very long time dropouts
00:02:51
perhaps longer than than the maybe was reasonable but i mean it's that's
00:02:54
a technique technical georgie actually get my way to somewhere i'm really satisfactory
00:02:59
with them um but i i kind of feel like uh i've i've got the uh as one quite i quite i'm quite pleased with myself um
00:03:08
i was also very interested to see the one martin did is is sort of informal to the cold
00:03:12
you know the most uh anticipated you clear to spaces and speeches for uh that's got
00:03:19
if you just install three for facts that program is that that's um talk conservation cannot hall
00:03:25
i was kind of a couple of conclusions i drove from one of them is obviously
00:03:28
that if your talk reservations and which people for their interest in and and and are presumably
00:03:35
trying to do and the other conclusions or is that is that is that they find it
00:03:39
quite difficult at the moment for a variety of reasons in the probably using shapeless to do it
00:03:44
and which suggests that if you know for all that shape muscles much problems
00:03:50
uh yeah it brings a bunch of some problems in its wake and people are probably
00:03:54
up late hours of the sort of desperate but but but we're quite keen to see
00:03:58
something happen in in installer three that if the next elysees it's uh and again hopefully
00:04:04
hopefully the kinds of of thought come up with um will ease some kind of people through
00:04:11
anyway that more to maybe go talked of the vegetables it well i kind of
00:04:15
us you know most people here and nobody is but just a brief reminder of um
00:04:22
talk a separate that uh the relation is and mechanism
00:04:25
for automatically inferring talk last instances for output data types and
00:04:30
based on and structure of the algebraic data type and
00:04:36
given a instances off that talk possible perhaps related type trial
00:04:42
four of the component parts of the actual project so is an example
00:04:49
of the kind things about suppose we have showtime cough let's show you talk last cats something similar
00:04:57
um we have a a a case costs uh and uh and uh a case cause
00:05:03
imaginatively named uh i guess the because it contains an integer string in the in an
00:05:10
a simple product type and we have a instances of the
00:05:14
components of that type so we have a a reverse pursuing um
00:05:21
suppose the should be dealt itself anyway and we're assuming that we have
00:05:24
a instances bible institute for i'm a shaven and string it really i mean
00:05:29
and then what we're saying is that we would like
00:05:32
the compiler to help to synthesise the sensible at show
00:05:38
instance for i. s. p. out based purely on the structure
00:05:43
of the type and it's the um and the uh the um
00:05:48
that's how close instances the components that are so we should be able to summon of
00:05:54
uh an instance show i. s. p. without writing animal card that's that's the central idea
00:05:59
okay so what's so the the way i guess you
00:06:04
need a docking backup plan but wait wait people justice and
00:06:08
sculpture carries using like such a plus uh but will help generate um a helpful to make the process of doing
00:06:16
and so what what is what is what is and small three going to bring
00:06:20
to the table that uh i thought i'd reprise on that workplaces that and or whatever
00:06:28
so if the way that um dossiers go through are going to support a talk last production is
00:06:34
or combination of um a small number of compilers
00:06:38
forty primitives and these of primitive types and um
00:06:44
primitive types and mechanisms and we have a a type a mirror of which
00:06:51
has a similar kind of role so the one that's um a generic placed shapeless
00:06:56
uh we have an derive schools is these are
00:06:59
ways of annotating of algebraic data types to say
00:07:03
and that you would that that um the the consumer those those
00:07:08
types would like instances for some uh name specified process to be
00:07:14
it's what we computed and uh i made available uh
00:07:19
in in a in a in a in a in a in a crouched form i suppose without uh without requiring um
00:07:26
uh it's really a recreation of each each education and uh but i used and and uh the
00:07:33
the for components which instructs the first is a um a sort of constraint or convention i've driven
00:07:40
a mechanism whereby wealth is it's hard classes can opt into a mechanism
00:07:46
uh and then telling others derive schools is to compute a
00:07:51
instances of talk tosses without having to go directly through i guess
00:07:58
so that that those those of the compiler provided um okay uh components and
00:08:03
as as i mentioned ever that everybody will go through them in a little bit
00:08:08
and they don't i think um all the monsoon has been sort of demonstrating um
00:08:14
uh uh some sorry you showed in is is is kleenex and it's the evening showed how one
00:08:19
might go about um implementing uh the derived um a method for uh for talked last let's cut costs
00:08:27
companion objects and using using a combination of of the features in particular in aligning it like that
00:08:33
a person matches and it's
00:08:37
it's probably something wouldn't want to do my hands it's
00:08:41
quite it's quite because because the mechanisms provided required a little
00:08:45
and you end up i'm sorry you would have to write portable
00:08:48
code yourself that coach it's taking one particular uh i'm kind of um
00:08:54
a stance on what will come bills you might have so you uses the aggressive in line
00:08:59
you know in some circumstances could produce a very very efficient it's it's very hard
00:09:05
oh yeah how produces a lot cut out what code is is often a good thing and so
00:09:10
and this is necessary the approach you want to take it's it it it requires lots
00:09:16
of of work quite right um that's how close losses are also likely maintain is um
00:09:23
and um and it and it has a certain amount of of at least you know overhead in terms of what could
00:09:31
so and the the other component um of talk conservation for files got three
00:09:37
and is going to be provided by point that pa snipers hands and sort in conjunction with working on that
00:09:44
question purposes i've also been working on a uh evolution or shakers three currently only
00:09:51
the construct roster of action components and making use of of of these
00:09:57
apollo is a demonstration that's that's um the facilities would break
00:10:01
into the language they are actually good enough to do the job
00:10:04
well enough of an but also you know because because because these
00:10:08
primitives people become we wanted people to use these things directly to
00:10:12
have uh something available you people can stop playing around since possible
00:10:17
and so it's preview some good hop would get to look like
00:10:21
okay so what we get um we get minutes um so that was the first components of
00:10:25
the compiler a support that i mentioned um it's a mirror is uh it's a chair programming primitive
00:10:32
compile intrinsic for um school algebra text types up an h.
00:10:37
i. which means seal traits in case classes but also in
00:10:40
on some new uh there there is really no difference insensible
00:10:44
between uh so chosen 'cause losses events in this respect an
00:10:49
and crucially in this this this is this is the thing that i'm one person in quite excited
00:10:54
about and it supports outbreak data types of all kinds um well we'll see we'll see what i mean
00:11:02
and this has been something which is which uh in my opinion has sort of
00:11:05
holes shapeless is of ongoing problems with trying to hold on over whatever the ergo
00:11:14
so so this is this represents from like what if you're real real progress and and as i mentioned it's intention for
00:11:21
so what you get um the mirror type and is essentially a
00:11:28
um i it's it's a backup types ah and one method each
00:11:33
a four inch of some types which correspond to seal traits of the
00:11:37
top level and you know ah hands about one method for product types an
00:11:43
so the types that's um as and i'm i'm roughly speaking these thing you can imagine these things being
00:11:48
uh implemented by the companion objects on off um
00:11:53
uh of the sum of products right so for example if we have a case cost case process accompanied object
00:11:58
uh we would expect i i taste cost to implement the
00:12:02
the product tricks that's and you can see a possum slide here
00:12:06
and and and uh i i a a a seal trace
00:12:11
well right so trite doesn't automatically have a companion objects and and
00:12:15
you know on the other hand does not having any object so we would like and so the the non well easy to come
00:12:21
um we would imagine again i'm i'm a directly implementing the uh the
00:12:25
mirror uh some some type um serviceable these these things off and so
00:12:34
let's have a look so here is our uh in string really and um his cross so what we yes
00:12:41
uh from this uh as a combination of things which provided by the actors cause companion annals of things which are
00:12:48
with synthesise bug part when you actually ask for an instance of them there as a as a cool site for particular type
00:12:55
is you get and a value off this product marital product type
00:13:01
and and it contains a number of types of the time you're gonna
00:13:04
last for it by is the mirror type so this is the time
00:13:08
requesting and therefore and you can see this is done very tight performance and there is this this thing called married moment
00:13:18
slide
00:13:20
and i don't have a number of um things which maybe
00:13:23
kind of slightly peculiar about but we have our types corresponding to
00:13:28
and the the name of the time so this is a singleton little string natural type
00:13:34
uh and uh uh and also uh i type corresponding to the labels of the element as you can see we put two people here
00:13:41
uh and it's a two part of the uh string natural types by s. b. correspond to
00:13:46
the labels we don't talk about the the rationale of of of of making these these uh
00:13:51
a time this from volume and is is is for print and these things the
00:13:54
types and they have no they have no they leave no trace isn't byte code
00:13:59
up to depart from small signatures but in terms of bike rider
00:14:02
has to be loaded project you're you're running code there's nothing that
00:14:06
this is this is all stuff which is completely consumed a part time so the idea here is then that we are going to be
00:14:13
if we need an uh using um title programming mechanisms sort
00:14:17
of solace sort of near to kind of be tight neck and
00:14:21
bridge the gap between something which is represented by string virtual type actual content value usenet
00:14:27
provide a product about give it to to give us what works the other crucial component is the um and
00:14:34
so you can see this is people so for ah yes the
00:14:37
type which contains an instrument a billion uh the elements hype is itself
00:14:42
that's people string yeah and people who played around the shackles will
00:14:46
recognise immediately see the difference um they're not h. s. to at least
00:14:51
and it turns out that we really just don't really
00:14:53
have any kind of specialist a representation a fop um
00:15:00
for these collections of types people's table just fine i mean that that that that's a
00:15:03
good thing for presenting a wrap something i essentially a list of types or with some what
00:15:09
okay so that's that's um that's for single simple products what about something a bit more interesting
00:15:15
if so here we have a um an entity uh it is but if i'm a little thick
00:15:23
and it's also um it's also a wraps it is the sum of two products so um uh
00:15:29
the the opposite obviously this this this should remote you option um in from the standard library an
00:15:36
and i hear what's what the differences are between and what we
00:15:40
saw in the previous slide i'm always on the slide so he yeah
00:15:44
the merits height is uh is not now if you don't think the
00:15:47
way things work industry defaults may look at all because previously i had
00:15:51
a time era equals and then call uh then a fully apply type here
00:15:55
i have typed mirror type it all out what itself is icon to talk
00:16:00
typewriter so the key thing we have here is that this myriad tight quite number is uh in effect
00:16:08
a a plea kind it and it's strictly speaking is not in principle it could be
00:16:13
fines on very tricky solely with about any kind which is the
00:16:17
the way that i'm fine with different pen pal muffins been added to
00:16:21
uh to to determine exactly not necessary and in fact this is something you can model install it too
00:16:28
and and effectively what we're doing is which is worth finding the
00:16:31
merits type with the news find them that and we're allowed to specify
00:16:36
in effect the kinds of the time as we are fine and so here again as well as
00:16:42
saying that difference in the previous slide we can also nancy difference between mirror type uh married moment type
00:16:48
it's a married my time on a mirrored minute type is essentially the essentially quantified
00:16:52
version of the of the merits out so it's basically what's what is the um
00:16:57
the most general type the most gentle fully applied type that you can get given
00:17:02
that you have i can't it's a mirror type so that's uh basically we're plugging holes
00:17:07
and this is used and if we go back a few slides you can see that the
00:17:13
um the two uh methods but concrete methods which defined on a on that it's it's the um
00:17:21
um uh on the uh the components of the the sons of
00:17:26
products defined intensive movements out and come back to exactly what i'm sorry
00:17:32
and so you also see the main difference here as far as the men remaining difference here
00:17:36
is the fact that the ah element types on now defined in terms of higher kind it's
00:17:41
um uh type definition so here you can see that there is a yeah a we're using
00:17:47
the new double arrow represents a yes white longer so around here the the element types now
00:17:54
now has a typewriter and you what you should see is that the uh the type parameter of um
00:18:00
yeah that's right takes five corresponds uh directed so it's kinds the kind of the outbreak that
00:18:05
corresponds directly to the kind of its representations this is this is a really crucial complain of getting
00:18:12
the um uh the generalisation to to to to a multiple times work less
00:18:18
okay so that was that was that was that was the if you want the roots
00:18:21
the some costs of the um uh the some possibility if we go on to um
00:18:27
uh the uh the the the first to prod approaches easy
00:18:30
that again this has the simple structure to the previous one
00:18:34
and uh and again we have this distinction between a mirror type number one it's like because again it's more fake
00:18:40
and and uh you can again see here that the element types uh
00:18:44
i'll uh it's it's also i uh that's what i'm the again course with
00:18:49
the same kind correspond to the talk structure and you can also see
00:18:52
that more that's why it's it's a it's a it's it's different from dirt
00:18:58
um and again it's yes sorry i just on that um and again for the uh for the for the uh and that
00:19:05
but nothing type sorry the non type and uh this is uh but basically it's a it's a it's a it's
00:19:11
a prototype is a special case single tons but it's still products like essentially and of course this is not web site
00:19:17
e. d. d. it's the same as the uh the the mobile folk product case it so
00:19:24
if there is on or off
00:19:27
there is for if you like the natural miro that's another
00:19:31
was the mirror which corresponds directly to the kinds of the
00:19:34
type that isn't there a fall but you might also be wondering well you know there are lots of things that you do
00:19:39
um with um talk process with rick or let's say for example you
00:19:42
want to uh define a show instances high class for a option of it
00:19:48
well hey we've actually supplied by holding the type so you might
00:19:51
wanna how that that that's gonna work well we can also ask for
00:19:57
i i merit for um i'll talk construct appointed time so here we have a therefore option
00:20:03
didn't and he you can say actually now it suddenly lost its little for some sports mirrors concise
00:20:09
a very tight as option vince so it's a it's a flip i talked talked quite stop your moments what is now the same again
00:20:16
uh because it's also for the applied so this looks much more like an uh the the the the
00:20:21
the the mirror that you've got for the ice the base class than it looked like the more forgetful
00:20:27
okay that's a quick look at some of those and see what we get
00:20:32
um
00:20:34
so he um
00:20:36
uh you can see we have the
00:20:40
in string billion
00:20:42
i just quickly compiled this uh this is gonna space held the uh
00:20:47
trees that the compiler generating it's it's it's it's a it's it's um uh
00:20:53
actual whatever whatever liza pointing to the um we can
00:20:58
we can is what's going on his so here is
00:21:02
the uh as a companion object for s. b. uh
00:21:05
you can see that um uh it's a extends murdoch product
00:21:11
uh and you can see that it defines from products method so
00:21:16
it from product is gonna take a and all bitchy products out
00:21:20
remember what i thought about this being low level this is low level and somewhat
00:21:22
weakly typed um so it's gonna take it's gonna take a product that's actually it's people
00:21:27
uh and it's gonna give you back a value of uh the
00:21:30
moment type so the mirror mirror on it's like here's i. s.
00:21:33
p. so really it's it's just in the obvious thing you would think you would do the product pulling out the elements costing them
00:21:39
uh staffing them in the appropriate places of an ice the constructor not remember
00:21:44
of course no human what's this code this is this is this is essentially
00:21:48
a so partially raised a rendering of of of the code that generated
00:21:52
by the policy if you're worried about this not being well talked enough doesn't
00:21:57
and okay and so that's transcend of some aspects of it if we now have a look at
00:22:05
um so uh what happens when you try and someone instance it's
00:22:13
uh here what we can say is well there's a bunch of stuff so one of the
00:22:18
things you're saying here uh so interesting if god facts of the way that the in line
00:22:23
uh it's colour uh thirties um she in line indicates what the details that need to others
00:22:29
right now but anyway you can see we're getting back a value of um this mirror type
00:22:34
and uh here we have the mirror mounted tight filled in we have the mirror type filled in we have the uh the label type
00:22:41
filled in we have the element types filled in we have the element labels
00:22:45
so now you could start using this thing to do but the stations to release
00:22:49
some of these tight a a time emphasises actual untied values now that one
00:22:54
interesting thing to see here uh hopefully it's visible if it's just a little something
00:23:01
is that in effect
00:23:05
uh what we're actually guessing is and the companion object this is the companion object this is a reference
00:23:12
to the companion object of i. s. p. essentially just cost to that so we're basically taking the company object
00:23:20
well in super imposing the the the the the interesting uh the interesting uh the generic um
00:23:28
turner programming tight on top of it and you think that is the value and that's that that's that's kind of crucial because it means
00:23:33
we know it there is no additional uh run time cost of
00:23:37
having these things around a competitive sport you would have for that either
00:23:42
so this is this is this is definitely from a one time to have fun to be a big when compared to um
00:23:49
compared to shapes and if so now we could also have a quick look
00:23:56
that's
00:24:00
hi
00:24:03
second
00:24:05
the palm of case
00:24:12
and
00:24:16
let's look at that so here again you can see that we have i um
00:24:24
ah
00:24:25
where is it okay so here we have uh the the marijuana type is now um
00:24:32
uh is now is not the the eccentric and
00:24:35
thought well coded uh um uh main uh type constructor
00:24:40
and now you can see what we actually get for the uh the definition of old
00:24:43
old so they can this is a method which defined on the companion object all just
00:24:48
uh this is the old no method it takes no arguments
00:24:50
of the mare prototypes essentially that extension quantified um uh option type
00:24:55
and it doesn't match on it and it will give you back um i
00:25:00
i don't want it all corresponding to which cough which raunchy related to take
00:25:05
and so between those two things from product um from um for a
00:25:12
product types uh in a pace classes and what you know method for um
00:25:17
for um some types you trade unions and basically these are the primitives
00:25:23
you need to actually do work actually that's not quite true um we're also
00:25:26
going to use things like some of the audience are always hold functions
00:25:30
um sort of product is right uh stuff from the product type again you
00:25:35
uh the the low level primitives they're not intended to be used directly there will be a sense of the time
00:25:40
span yeah placed on top of that that's that's what we're gonna get to shortly so i can understand very quickly
00:25:48
show you what we get for
00:25:51
uh and obviously two cases actually so i'll show you what's the summons
00:25:59
someone ought looks like so here you can see what's with uh on
00:26:04
various additional components children's label uh we have the the full element types
00:26:11
tight and uh um we have the labels of the individual
00:26:14
branches at now also show you won't get it when uh
00:26:21
instead of doing that we actually tried instantiate in this thing
00:26:25
so what we've done here
00:26:28
yes now often fall the thing op instantiated int so now we get
00:26:35
um the marijuana tight on their titles like the best option it is
00:26:38
no one will thick and i didn't types uh again we have no
00:26:41
have just a simple move to pull off some some int nothing um
00:26:48
or things like that
00:26:52
okay that's it all up for that and
00:26:57
oh okay so right so the next thing i'm is uh the dry schools so let's look at this
00:27:07
so ah up drives closes on annotations that
00:27:12
come a a um an agent will for
00:27:14
the the all sort of a data type can add to and uh to the decoration off
00:27:21
a decimal product type and the uh compiler uh will um let's see
00:27:27
that as a request to generate instances fall of uh the specified and
00:27:33
a tight tosses a directly in the kind of object uh off uh
00:27:39
of the text target fight for so here we have our our whole
00:27:44
now for the high speed type we have and we have um uh with referring to the the
00:27:51
the the the the show type class that we had was getting this is the kind of the show
00:27:57
uh and uh the show a tight toss and defining uh as
00:28:03
you mean the title supplements because of the most op into the mike
00:28:07
uh we are defined i i derived method drawbacks as possible
00:28:11
fucking in its entirety uh it's handed and mira of t.
00:28:17
and a promise is to give you back to show t. i'll leave this blank for this thing
00:28:23
and so what what is the compiler do you well
00:28:27
the compiler in the companion object is going to uh
00:28:32
as well as having a that i speak standing about
00:28:35
product uh the problem era able also uh provide a
00:28:40
definition of um basically the the instance we would be
00:28:45
asking falls in this case show of i. s. p.
00:28:48
oops i love the site from some of the steak and it does that's that's simply by uh calling um
00:28:56
while compiling right hand side which that whole directly not it's not impressive design just searched or
00:29:02
does that does it searchable here directly calls the right message on the companion of the type class
00:29:09
a trait i'm providing itself because it itself is actually their eyes the arguments and
00:29:15
and it relies on that site costs a companion method to different back as usable
00:29:21
it's a lot it's put here and people who actually wanna look at the stuff on that show you just
00:29:25
a second well noises that that currently this is defined as a as a definite i'll that's uh that's about it
00:29:33
and also spoke up quickly
00:29:38
and
00:29:43
oh
00:29:52
so it's yeah it's
00:29:56
which
00:30:06
okay okay
00:30:10
and so he you can see basically what we've got um so here is all show
00:30:20
uh here's the show medicine as as i mentioned this is this is this is the deaf it should be about um
00:30:28
let's show s. b. uh it has been produced like holding
00:30:32
the drawing to methods uh on the opening which visible here but
00:30:38
it's not very enlightening because i think it's implement this triple question that's yes it is the stuff that that's
00:30:46
is that just the chef for reasons we will come back to
00:30:50
and so it's a a call on a show drives a
00:30:57
handing handing itself as an argument um and receiving some magic happens
00:31:03
and we'll get the right kind about that before i i move on show you what will that much you
00:31:07
might be at one show one of the thing uh actually no other she one of the things us and
00:31:15
this so now if we um
00:31:18
uh if we say so the so this is this is of some use in the cut it
00:31:23
and so so this is some cold site where we've requested to show instance if by s. b.
00:31:29
uh what you see here is this this is the result again in lining that all
00:31:32
of these thing as things are in line the artifacts you can expect these things disappear
00:31:37
and that basically you have what is in effect a direct reference to that member of the i. s.
00:31:43
p. companion so in terms of in terms of cash in these instances and not producing repeatedly not duplicating them
00:31:50
um this is this is really really very nice this is this is completely since you may all the functionality
00:31:56
uh things like actually 'cause it shapes of okay so you might ask yourself as i as i
00:32:03
continue to to uh the uh uh what happens in the case of a um a polymorphic types
00:32:11
so let's have a quick look at march is the same show
00:32:17
and
00:32:20
this differs
00:32:25
yep about what does this do for us um up
00:32:32
well
00:32:34
we're we get together drive show the now this is interesting any kind if you think about it has
00:32:39
to be the case because the um the um option uh which is what we're deriving fall is polymorphic type
00:32:46
so it has a whole it and and so become produce a single
00:32:49
family do correspond to show for option because we need if somehow or other
00:32:55
uh fill the holes for the team which is possible to gun shows so we actually get in this case is this is correctly there
00:33:02
uh we have derived show which is now polymorphic in t. and
00:33:06
it will take an implicit argument which is the show if the member
00:33:10
uh the man the sort of the the the the parameters element
00:33:13
of twenty and then it will give us back an option of tape
00:33:17
and again this is don in terms of i
00:33:20
call all um where is it should be somewhat
00:33:27
uh ooh okay right okay right so i in fact what's what's happened here
00:33:34
is is actually completely it lined the uh the implementation of the that showed that
00:33:39
a central question okay so here to see if i
00:33:45
it's a yes but
00:33:54
it's too quickly
00:33:57
if um
00:33:59
and now what you can see is that
00:34:04
yes so this is again this is not the the definition of a drop show again but here you can see
00:34:10
now that it's not indolent away to nothing you can see we've got a direct call on the other drive methods
00:34:15
uh again taking the um uh taking the uh
00:34:20
um uh the mirror um but now it is pro choice intensive approaches intensity
00:34:30
and we can come see that an action if we look at your site might be
00:34:37
a file on comment this
00:34:41
well what a while
00:34:47
so now you can see the slide here are um
00:34:52
so what we've got now is um effectively a direct call on the the method
00:34:58
uh in ops is the old companion record the righteous and it's filthy
00:35:03
um the instance argument for show which is the time to fit in
00:35:08
so and when when we obviously we we've given you done
00:35:12
each time a but but but clearly any any infrastructure any would
00:35:15
apply code which is to have to be a generated too
00:35:18
so as it was fill out the surrounding structure around this intense
00:35:23
doesn't even done once so that's been done once completed once and now with the
00:35:28
is a something of value by applying i function to a an instance for the parameters type
00:35:35
which is i i did this optimal i mean i don't you can you can do that basic
00:35:41
okay
00:35:43
so
00:35:46
uh huh
00:35:49
okay just leave and
00:35:53
right so i showed you central question marks and and and up here i put your dot dot dot
00:36:01
um and well what does that top top dogs and most
00:36:06
in shady one possible what phil about bob by the funny things
00:36:10
directly sent in on methods of competing directly of marriage and i
00:36:15
personally think that's that's that's too much to ask people to do
00:36:18
and i think it's a good demonstration of of of the pound
00:36:22
flexibility that that that this mechanism provides them the parties and uh uh
00:36:29
a sort of a more um all disciplines um mess programming facilities like the
00:36:37
but i i don't think it's ergonomics for the typical for of of talk
00:36:41
and is on this particular good so i'm in conjunction with doing doing
00:36:46
work on on on a design in the the the marriage rights neck
00:36:50
i've also simultaneously as i mentioned in designing a the next major
00:36:56
as it should be watched shapes three shapes trips three and this is
00:37:00
kind of what i was looking at it and so she was three
00:37:07
and has a generic type um which corresponds
00:37:13
to the genotype that uh exists in shapes too
00:37:17
however uh it is completely content so she has to has
00:37:21
and it's sort of a very hard hearted and sort of
00:37:25
slight confuse the tents at handling to compensate handles kind star
00:37:30
it's actually quite types inspired saucer types with a single talk talk
00:37:35
and and it's it's it's it's really quite repeat what what's this huge
00:37:38
amounts of duplication and lots of really horrendous nobly macros is not very
00:37:43
and getting rid of all of that's that mess in one of my major goals
00:37:47
with with this redesigned the the new design is is completely probably find it and
00:37:53
and uh all of the duplication that that's that's that i have to if you uh in them
00:37:59
uh in interest is is its goal and it's implemented directly insensible right so it
00:38:04
actually turns out now that a generic is is actually essentially i um i i took
00:38:10
a list for a refinement of the mirror type uh and so it really is
00:38:14
directly to find out there is an now this gives you a facility which is on
00:38:21
uh essentially equivalent to open content generalisation of objects as it is now
00:38:27
so what with that you would need to work with similar kinds of techniques that you
00:38:31
worked with shape is to so this is this is pros and cons one handed very version
00:38:37
on the other hand you end up um with lots and lots of folds of this is you you you
00:38:42
have to what was an explicit representation type and um
00:38:46
with uh and and and it can be quite complicated what
00:38:50
with their some that there is some some indications in in in in industry in as much is um some
00:38:55
of those some this falls can be but i thought well that's false and they no longer have to be intimate
00:39:02
the logic programming style it plus it's we can work directly within like functions specialise in light
00:39:08
but many of those kinds of regulations can be patches of uh income which looks like we'll
00:39:12
we'll we'll functional code and but even so i think i think i think that is still um
00:39:20
not something that people typically wants to if if there are several times it's one of the
00:39:25
things i i it also has the downside that it that it involves a certain amount of
00:39:29
and uh what i it involves a significant in line which means that you have code generation
00:39:35
you instances in comparing objects i'll watch so you want something with much much more compact
00:39:41
and so i i kind of i kind of looked at and seeing if
00:39:46
i could come up with a scheme which would and basically the optimal thing
00:39:52
at four type classes which fits into particular kind of regular of a war
00:39:56
when we do kind of problem so tight process where basically if i've got
00:40:01
i type which has components avian see it can be defined in terms of
00:40:06
instances that's what was instance can be defined in terms of instances foreclose component types and
00:40:14
and uh and this can be done in a much much much simpler way a full
00:40:20
that's obsessive of types uh there's a number of some standard folds and fold like operations
00:40:27
and that's all i think pretty much adequate for for most purposes
00:40:32
um i can't show comes at a very very large portions of her to um
00:40:39
um it's implemented in terms of generic it it's consequently fully kind didn't exactly the same
00:40:44
way that about the generic uh uh the generic is due to its um extension there if
00:40:52
you would just wins out the kinds ah case off a instances for instance is a
00:40:57
couple of things is you would you would see something that might remind you that back now
00:41:01
uh i it wasn't it was a uh i think accidental discovery and but
00:41:06
it's uh it turns out that um something a little bit like that actually works
00:41:11
in the common stock x. so you could think of this as being a whole kind huge generalisation that
00:41:18
and okay so we get an so this is generic it should look very very similar to
00:41:24
um to people who have worked with a generic and shapeless um we have a problem generic
00:41:30
uh it works in terms of mapping uh from our based
00:41:34
fighter representations out back again uh it works both for products
00:41:39
it also works for for products of the difference here is that
00:41:44
um our presentation types are actually not gonna be straight to pulse no they just anymore yeah
00:41:50
and in the case of if you remember that i'm full some types of other also
00:41:55
representatives to pulls off um people's types rather than sort of all it listed on it
00:42:01
what what strips byproduct twenties that's now gone what happens is we
00:42:05
can use a um a a doesn't match type to um take
00:42:10
two prototypes and turn it into unit types which is
00:42:13
actually something that was really very nicely uh in this context
00:42:17
because then we end up with the from and to
00:42:18
representation uh methods of of genetic apropos basically adapts to functions
00:42:24
she's which is really quite nice and so this is kind
00:42:28
sauces corresponds to um types uh like all i. s. p. type
00:42:33
um for kind star stall and it's basically the same uh that you can see obviously now that we
00:42:40
have a we have additional typewriters sorted through this was the thing that was cool basically causing me to
00:42:46
uh as you'll see from the next slide uh we get behind so
00:42:49
i rest all things got slow getting painful then we don't have that
00:42:52
the table flip kind and and uh so the the the the kids of parts
00:42:59
that ships with if shape is three is you get support can't star star star
00:43:05
a star star a slaughter saw her stall and so our star
00:43:10
star so we can basically do these as a box and with
00:43:14
a certain of what the place and but it's very simple is
00:43:17
comparatively simple mechanical bald pate and and as i said here and
00:43:24
you know if if if you need a kind which doesn't ship
00:43:27
plentiful with with shapeless it's it's fairly straightforward added anyway in a library
00:43:34
anyway i'm in time so if we get a generic as i said that it's a performance of of
00:43:40
of the um there are types and the to repel i'm from ripoff stuff that pop kind extension that
00:43:48
imposes an extension like methods mechanism and and the reason i have to be done that way is
00:43:53
because the city no mechanism available to abstract to those differences in in in in the method types
00:43:59
including the the different number i've kind of type parameters on that
00:44:04
from two methods of is that you know what i mean maybe maybe in future version of bill c. maybe in three point one we might
00:44:10
go for a more more full bodied version of of comparable system which would allow us to abstract
00:44:15
but i think i think i think it's that's uh that's that's that's you fall of of of of of
00:44:21
a fried also um i think i think we can wait for this is this is good enough and what
00:44:28
and as i said and um yes and so even even even though these methods uh uh all of these things
00:44:37
and the signatures copy for the actions has that everything
00:44:40
raises the same thing because ultimately what sending advantage of value
00:44:44
and the signatures they'll they'll why they'll come part way so we can actually implement the whole thing
00:44:49
in terms of us what what i've been calling reigns to colonel so it's basically a kernel of shapeless where everything is
00:44:56
ah charming aqua any to any but you never get to see that because you really
00:45:01
get into you when you get to interact it's that interact with it via i. e.
00:45:06
up uh kinds of uh and uh uh fully tight about them yeah
00:45:11
okay so it's this this um this is the the the sort of the middle of the slightly might know deflated thing and i
00:45:18
can just come unfolds um it will pretty much completely eliminates i'm
00:45:24
interested induction one plate full full decent regular on the little title
00:45:28
it's implemented as i said incense generic so it has the same kind of clean white probably twenty structure
00:45:33
and it's also implement tons of an array scandal which means you have no code duplication which is great so
00:45:39
i will means we keep our of a printout but could fit print absolutely minimal and so consequently it has excellent
00:45:46
uh compile time performance and and you know like a footprint is small that's very very good means we all the time
00:45:53
uh i if you if you generations we are very very knowledge um eighty uh you know you could you could buy signet
00:46:01
like a verification time leading a very very large massively in the lines
00:46:07
and uh generated dropped instance but as i as i said
00:46:13
well i think that's something so that the there is there is there is some weddings and
00:46:16
so the the the smoking done by uh and uh and uh the cover and i costs uh
00:46:22
and i'll give you as well um uh on our herb doing a version of this in
00:46:27
terms of a staging and one of the things we're going to do you at some point it
00:46:32
evaluate what pros and cons of more aggressive in line and this is this kind of more types of intensive
00:46:38
to one side formants um okay i think i'm beginning to run out on an
00:46:46
try always to an so these are the kinds folds you get full products
00:46:53
um uh these kinds of projects covers don't worry i will explain a little bit
00:46:59
when we get isn't signatures on an issue any the stuff for for quite stall
00:47:03
um but basically both products and how products um you can um define
00:47:10
a a mechanism for compute if you can defined mechanism for for computing a
00:47:15
a a a a value of your t. from
00:47:19
a high pass instances here of the components of t.
00:47:23
so that could be the elements of the case file so it could be the branches of of some type
00:47:27
and the value of one of those elements then you can produce the value of the whole type
00:47:32
so you possibly an interesting thing unisys here's the use of a plume of function type which is another
00:47:38
another new addition intel c. which makes a lot of this stuff mostly easier
00:47:43
this this produces really very versus toxic inches ice we'll see an example in the second and for products
00:47:50
uh specifically you can construct a value uh if you construct
00:47:55
if you can construct values hold components not what's actually happening here
00:47:59
you can unfold values of you got some some c. you'd you can unfold
00:48:03
it if you can construct a value which sort of consumes bits of the siege
00:48:09
and say an instance fall uh that for some of the components of the product type
00:48:14
and uh you can then at that point get that possibly get back in instances
00:48:19
that's like the maybe some uh some sums partially concealed see this is
00:48:23
this is this is something which is useful for doing this your last act
00:48:28
valuable products lots of doubling way bits of bits of say some inputs
00:48:32
um and and producing a producing a value possibly option allows you and maybe uh some additional
00:48:39
a continuation of of inputs and not too that's the kind of thing you want to do
00:48:44
if you'll say trying to combine hair of a pet compare products like you would in a
00:48:49
uh in a um a and one night a fold left uh allows you to
00:48:54
sort of computers simple value from a single product for left who allows you to compute
00:48:59
single value from a pair forgotten this is the kind of thing you
00:49:02
might do a if you're computing say say any unique it's a title
00:49:07
nice the both of these things allowed have the single complete all um
00:49:11
i don't know if that's necessarily gonna be a a permanent fixture reflected
00:49:15
somewhere else but this is actually something which allows you to compute
00:49:18
curved to compute a value hands can either continue or just a
00:49:22
good on so this last to sort of show short circuit evaluations
00:49:25
of your computer geek if you can stop us in season first difference
00:49:29
um the chi products things are slightly different here and
00:49:34
um although they they coincide on map likes my products into products impossible this map
00:49:40
thing and you can project only becomes approaching branching structure you can choose one way to go
00:49:46
and uh some kind of seed value and then uh you can provide the
00:49:51
thing with a function which will take the seed value an instance for that launch
00:49:56
on that computer body so again this be something what might might might work with uh doing uh
00:50:01
d. c. realisation framework and then fold it something which is essentially can
00:50:06
collapse approaches picked approach which is actually be lust and uh give you
00:50:11
the released value the corresponding topless instance for the brunch an ally to complete result in fall
00:50:17
two sentences if you have to cut products that but if a line on which branch there on
00:50:23
then you can computer value from them and that that again you
00:50:26
would use that context like eek so that's that's that's essentially the shape
00:50:32
off um the instance types of fall a cost off i'm not gonna show
00:50:37
you the generalisations of those because of that much every single one of these things
00:50:41
additional typewriters threaded through them it's it's an can very very ugly so on on the bottom
00:50:46
um i'll just quickly show you
00:50:49
an example
00:50:51
or a time for us to find that way
00:50:57
and then that part so his mom awake and so most of this this is most of this is just the standards than the
00:51:05
standard a boilerplate you would expect have anyway so we got that's
00:51:09
the type loss we have instances for a bunch prototypes here's the book
00:51:15
that's what drives schools subtlety drive schools is going to call back to know your
00:51:20
if you remember on the slide or should it be approaches in terms of error well
00:51:24
production or actually just isn't there a it's just refined their uh so this is a perfectly acceptable signature folder wrong
00:51:30
uh any other uh type observation framework that want to do the same thing as long as they also
00:51:35
and uh which fine mirror like and also fit into the framework inexact inside but this is very nice
00:51:41
and what it does is it basically says uh you've been handed generic i concern
00:51:47
that generic into one of those instances types and then a house uh and then call
00:51:54
a a a an instance yet known in line l. so this is this is just the little wooden retirees
00:52:00
and i can now define um the mono wait a instance
00:52:04
generically uh using the the the the the the false amounts
00:52:09
find on on on uh the point on the the instances tightly so uh yeah so i can
00:52:13
construct value type see if i can construct a
00:52:16
values from moments elements into the uh and um
00:52:22
a similarly i can combine a to a is if i can combine them and
00:52:29
what's in the guys just it's just and that's that's that is now i'm online all
00:52:34
like very very simple one line of doing doing the uh the the the derivation and this would
00:52:40
become much more complicated to write and send in line isn't l. c. and this is i think
00:52:46
very very similar to what you would get using like that you really um i think it's
00:52:51
not it's not very different from that is plus it's probably more concise because of the of
00:52:55
the uh of the way that uses a palm of function rituals here which i think i
00:53:00
think help a lot and i mostly hooks in very nicely with the with the infrastructure an antique
00:53:09
is another good example so this this um most and you have instances from
00:53:14
products uh this has um products and co products um so here we have um
00:53:23
a a a similar to drive polls get handed a generic this time it's it's unusual
00:53:30
whether it's whether it's a production artwork or product generic we're a little bit of infrastructure
00:53:34
which decides whether we're going to follow the product look for product launch essentially
00:53:39
it's kind of what you'd expect so for product which is doing a fold
00:53:44
starting with true and then we'll just continue um well i thought well i the bailout this false uh the
00:53:50
or will continue with true until we've exhausted the the structure and for
00:53:54
the corporate title basically we just we just follow the one single brought well
00:53:58
if the two if we had a two values of the two branches online
00:54:02
um will will compare than alan weiss otherwise otherwise you get up what's what's
00:54:09
and so something a bit more sexy and so and this is basically the state of
00:54:14
the art with shapes to so driving time
00:54:17
classes for other types of kind cyrus stall and
00:54:24
uh so that's a function type say oh okay
00:54:30
uh i'm over time what time of the point and
00:54:36
she you anyway if it's if it's a break next this month
00:54:41
right next consumerism is a break would you don't care also stop
00:54:48
carry on yeah okay if um
00:54:53
uh first area okay fund to funds effect right okay font is really cool uh i
00:54:59
really i'm so i'm really excited by this because there's a huge amount of stuff in cases
00:55:04
which is a cut conservation to cats i incident because as much as they possibly can with with
00:55:10
the sort of the the the the the the tend to high kind of soft shapes the moment
00:55:15
and it dries functions but it's just so much more complicated this and this is this is just so we got the drive close
00:55:21
because this is funk their products into products coincide funk so i i guess it's kind of
00:55:27
uh unsurprisingly woods but basically you just map of the
00:55:30
instances of components that they don't just just all some um
00:55:36
and then it also turns out that there are these other things like high
00:55:39
kind of functions front okay how about that so which is which is a an
00:55:44
uh something which is a a a typewriter choice in terms of a high content itself and then and then
00:55:51
map over it with an actual transformation so something like this this is well beyond check this is good but it
00:55:57
and presto it's identical look at that look at that uh we just map
00:56:03
over the single one line a mapping ova um we get handed the
00:56:09
um the uh the individual topless instances for the the elements of the
00:56:14
the high kind it's a high kind type title hardcoded
00:56:17
elements i'm i'm i'm just so it's not like it's absolutely
00:56:22
okay so this one last thing i wanna show you is an example of something
00:56:28
which is not possible to represent using
00:56:32
um
00:56:34
uh using in the the the the the sort of the regular stuff so this is something that that uh is currently i guess in the u.
00:56:40
s. b. for for shapeless i think we can continue to be use
00:56:43
use p. for for this for shapes three so this is a transform type
00:56:47
and basically this is something which one you say so you have a part
00:56:50
of upper case crosses they they coincide on on some feels point type a name
00:56:56
i knew since we want to extend the small ones bigger one by filling in possibly meeting the elements if they're in
00:57:02
and then filling and filling in components with um a whiff stuff from
00:57:07
from say from normal it's life examples of default value and this and
00:57:15
i'm just gonna show you this chunk
00:57:18
really um
00:57:20
so so
00:57:23
good if shouldn't press that
00:57:26
yes a one to one or
00:57:33
if
00:57:38
uh_huh
00:57:40
it's
00:57:42
mm up so here we're just so this this con
00:57:48
quite fitting the drives infrastructure but it it it doesn't
00:57:51
really matter that doesn't it's not something you goodness are expected to be able to but you can basically it
00:57:56
handed her generics won't reach the types of this is this is why it can't be models or as
00:58:01
a regular part process um but then we can just we can we can we can essentially the edge
00:58:07
uh the two corresponding records of this is making use of of the labels so we get
00:58:13
we make use the element labels this the cost of the indian shape this is legal to right
00:58:18
um we can write kind which look actually is much more like real
00:58:22
close to the stuff that uses it plus it's injectors to um we
00:58:26
can much the records and then and then and then just take the radical back into the into the expanded that to get a button which
00:58:33
very nice okay well that's enough examples all wrapped up now so if
00:58:40
um hum that was that's so what's next and back towards to thirteen to fourteen really don't know i think it's possible
00:58:46
and so it doesn't depend on any of adoptees um uh probably conduct
00:58:51
a couple movies and stuff is done the finance that can be back wilted
00:58:55
and the the the additions to a companion so we could
00:58:58
find a a nephew comparison smell to stuff that's generated by
00:59:02
like responses in general if the the additions are really minimal so i think i think it's it's small is low low risk
00:59:08
and it's mainly you know adding half a dozen type numbers to to company objects which is which is really
00:59:14
no no big deal and so the fact that minimal is real real real huge help to to doing that
00:59:20
and then back portrayed as three itself just go to either you know i in terms of apples mirror
00:59:27
um or instances commas go to my cousin that's fine so then um
00:59:31
maybe a compatibility layer that will help people get from shapes two stripes three
00:59:36
and and then we have a migration pasta sauce which is which is kind
00:59:38
of what i've been trying to get hacked so them hoff is kind off
00:59:43
stop by moving shapes to to shape us three owns gall to thirteen ford
00:59:48
and i haven't done that you're in a good position to move
00:59:51
from from from school to discover three if using this off um
00:59:56
okay the other things sort of morgan's trivia actually was gonna move type of all get hoboken isolation the artifacts
01:00:03
gonna come have comp too so i am going to click level which really should on a very long time ago
01:00:08
uh most of the things that meant to it enables much larger pool maintains and publishes to work and stuff
01:00:13
without me being necessarily the of the bottleneck or you can find the preview here and well if
01:00:23
probably not budget
01:00:33
do i mean do i mean it is it is a practical so was questions then i'm i'm i'm trapped you whatever pop

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8330 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2230 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1292 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1152 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1551 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5016 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1112 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1652 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
833 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
393 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
513 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
935 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1973 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1376 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6365 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
483 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
810 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
373 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1337 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
623 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
244 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
162 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
301 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
564 views
242 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
303 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
680 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2679 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
752 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
275 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
466 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views