So, yeah, let's talk about pattern factors. I'm Alejandro, but we have very few time because that's like a lot of slides and a lot of things, and I would rather prefer to use the time if you have some question at the middle, just write your hand and we can try to figure it out. So, first, what's the idea of the talk? So, we're functional programmers, so functions are first class. We can do all sort of stuff with them. We can use them as argument. We can return these values. We can combine functions to get new ones. So, we have this combinator with really combined functions to give you new functions. We can speak about functions even given a name, which is like one of the weirdest thing I found when I was learning functional programming. Like, why would I create a function without the name? That didn't kind of make sense at the beginning, but at the end it does. So, the question is, can we have first class data types? So, can we go even farther? Make everything first class because we think that everybody should have the same right. So, data types should be there too. And the thing is, we have some parts of this. So, what do we have? We have parametric polymorphism, which is a fancy way to say that types can depend on other types. So, we have this list with our list of some type and then we give an argument to say what is this type. In Haskell, which, by the way, will be the language I will use throughout the talk, we have type families, which are sort of functions at the type level. So, we can really have this element which, given a type, give us the type of contained elements and this is like sort of a function. But we are missing many, many things, so we cannot combine, we cannot easily have a language to combine data types to get new one. We cannot express something like what's the shape of a data type without giving a name. We are always forced to say this is the type list. We cannot say this is a type which has like things and then recursively the same kind of stuff. So, we don't have a language directly to do this and this talk is about how we can do this. So, first of all, this is part zero of the talk. We have to set up some things and at this point I would recommend you that you just faithfully believe me what I'm saying. So, this will work out at the end but now it will completely make no sense.  So, the first thing is what we are doing, we can do it with functions. So, we have this normal factorial function which is recursive and we are going to think, okay, I don't like recursion at all, it's wrong. So, I want to have all my recursion only going through one function that I trust, I don't like it but I trust it which is fixed. And we can do this, we can separate from the factorial function and a skeleton which has no recursion and then tie the recursion so make the loop using this fix. So if you haven't ever seen this, that's the place where you need faith, this actually works even though you have something like let x equal fx in x and everything being called x is important for this to work but the main point is in factorial we are replacing the recursion with actually an actual argument which will represent the recursive calls. So this when we are calling f here at the end when we use fix this will be tied to be the same factorial function so at the end it will work out. So now that we can do this with functions we can look at data types and data types have some of the same thing. We have recursive data types like this arithmetic expressions and you have some base cases and you have some point where you make recursion in this case you have literals and you have plus or times other expressions and at that point you also make the recursion and we can do exactly the same thing. We can break it up into things. We have some kind of data type that I'm going to call pattern factor just because it's a bunch of cool words together and we are replacing this recursion by an extra argument r so whereas before we call arith x all the time here we are using r and then we have one data type one single data type that we have to believe that will tie the recursion which is this fixed data type which look a bit weird but this will actually work so this fix is going to tie the recursion at the data type level. The difference is that before we just write our so imagine we have we want to do something like plus then we have plus one and here times two and three and if we want to write this sort of thing using the white data type we just write this so we have right plus literal one you know it it's it's easy but if we want to use the other part we have to include one extra constructor each time which is this in data type so every time we want to have something what we have we want to we have to say oh please I want to do a step a recursive step so I will call in and then use one of these things and by the way we are tying the recursion we can ask for a new step to go with another in so basically your code ends up looking something like the orange part we have exactly the same structure but we have this in extra things so this thing may look like okay we I'm already telling you to write more code which is bad I've heard but if you're using new version of GHC you can actually hide all of this with pattern synonyms which are sort of a way to say whenever you see times I want you to read this even if you are doing pattern matching so it's not like just creating a function it's also creating a way to look at things so some people might be wondering okay functures are a nice word but you shouldn't be using this without even proving me that this thing is a functor so these are called pattern factor because actually when you make use this techniques every time what you get with this extra R argument it's a functor so you can always write a definition for this and this is always look the same you just make your recursion with F map on each of the of the parameters of the of the R type so this construction would always be a fun to it's not important that this is always well would be important later on but this is always deals a functor actually this is so simple kind of functor that you can also derive it yourself so you don't have to write this code so so okay now I assume that you are going to have believed me that you can do this with data types so do you split this recursion from the patterns so have we gained something so at this point we have already gained something so imagine that I want to have this kind of trees but I want to add some information at each point at each node so I just want to add a translation into Spanish because somebody is going to read this so I want to add here like a string and here as it's in Spanish yes so I want to add this thing so if you think about it this is not actually changing the structure of my pattern is it at each point I want to introduce a tag so this is changing it is not change the structure of the data type is changing the way I am doing the recursion I want to do recursion in which at each point I want to attach an extra tag so I can do this if we have a pattern factor instead of a recursive data type I just change my fixed point so I just change my my purple part and my patterns are still the same so I can reuse the same data types over different kind of trees structures of course now when I create a value I have to attach all the all the extra tags but I can do this and the pattern factor does not change so we have already want something but we can also use this technique to have more generic functions so what we are going to try to do now is to to create some kind of generic fold function so if you look at fold functions you have fold are like this or you have fold a which is a fold over my arithmetic expressions and and if you write this thing so this is this thing which traverse the tree and sort of put together the information and at the end when it just becomes one piece of data so you will notice and this is shown on on orange green that there there is always the same skeleton so you have these types which are always like my pattern factor so you see integer r r r r so that's exactly my pattern the shape of my pattern factor and then they return this value r and if you look at the list so how how is the pattern of list it's either a and a recursion or just nil which has no nothing so yeah like my the second orange part in folder is just invisible because there is nothing and you notice that every time I always called this same function in the recursive position so there is some kind of structure hidden here and actually we can write it easily so the same the same fold that was so long to write for every data type we can write it once and for all for every data type and with a purple thing so it's just one liner but this is more generic because now instead of just any kind what one specific data type we have any data type which is represented by this P so this P is our our pattern factor so if you take this and instantiate to a list you will get your folder if you instantiate it to arithmetic expressions you will get your fault a by the way this is called these things which go from P of r to r are called algebra so this really doesn't matter but if you heard about algebra some programming and bananas lenses and all this kind of things this is all about this kind of stuff so we just wrote the same thing it went just one line and and you see that there is a recursive call so we are calling g fault inside and and why we need why we need it at the beginning things to be a funcers is because when we are doing this we are applying things in this two position which are the position in which we are funcers over and in the other place we do the same thing so we need some way to do this mapping and we do this with F map so this is why we need things to be pattern factors so if we want to do something like please give me the what is the result of this expression we can do this by using g fault for arithmetic expressions instead of writing the the all the skeleton we only have to go to the to the essentials part what you do for each constructor if you have a literal you have n if you have plus and x and y are going to be the results of the computation that's go upwards you just going to add them up or if you have time you are going to multiply them so so we have here two things that we can already do with pattern factor we have we have we can change the fixed point and then attach new things or we can create generic faults so now I I hope I've already convinced you that this technique is going to go get us somewhere so now we're going to see three bigger things where we can use this this idea of pattern factors and the first one is is coming from from the question how do I put constructors together so I imagine I have I have this plus and times but somehow I want to add some new operation like exponentiation so I can define a pattern factor for exponentiation but how can I push them together put them together so you have one data type which is like all constructors together and this technique is called that the types a la carte so as I said our aim as extensibility so we have the pattern the pattern factor above which where I'm splitting the literal from the operations and we would like to have some kind of plus call it combined plus whatever some kind of of of combinator which put constructors together so our arithmetic expressions are going to be just like the fixed point of these two things put together so imagine plus is just putting things together and if we then want to add minus and division then we just put it together with a new plus so this is getting as extensible data types at each point we can decide oh wait a minute and for this thing I need one extra constructors so I'll put it inside and then I will combine with plus so can we define plus how should plus look so if you think about it if you have two functions basically what I have to tell you what you have to tell me at each point is which of them are you using so you can use either literals or plus and and times so just tell me oh I'm using literal oh then you're allowed to use literal I'm using plus so you're allowed to use plus and you can do this with this green definition so this combination of these two patterns factor F and G is either please go to the left so choose the pattern on the left so then you give me an F and and or you go to the right and then you give me a G so that's everything you really need to know which one you chose at each point and and and the nice thing of this is that this construction still returns the function the functorality so if you have two functors the combination is a still a functor and and this is sort of a strange looking code if you are not used to this thing because the F map on each F mat has a different type so so it's looks like I could write the same stuff for the first and the second things but I cannot because really the types involved are different but this tells us that if we have two functors and we compose it with plus we have a new pattern factor so we can still compose it with another plus or we can do our fixed point or we can do our fault or we can do our tagging so we are still in the same kind of thinking the problem now is that our values require at each point to tell whether you want to go left or right so what what before was a bit annoying to have all these inns then now you have to have the inns and the go R or go L so this is quite quite annoying if you want to use it all the time especially because if you if you are combining a new functor now you have to say go left go left or go left go right and you know it's scale if you have like four then you will have to do several combinations so this is a bit tricky there is a solution for this which I'm just going to tell you that it exists so there you can define functions that inject a data type F into anything that has F inside so you sort of it seems reasonable that if I have literals if I have something that is built only with literals then I can make it into something which has literal and any more any more stuff around so you can define these functions and this is the how you solve this problem because if we had something before which only have something you just call injection and you make it in a speaker as you want so the detail there are many details to construct this so you can read them in in any in any this to two articles but so I they're they're nice to read but we don't have the time today now we don't have the time so okay we have extensible data types that's cool but if you have extensible data types you would like to have extensible functions because you would like to say oh I have a function like evaluate and then I have my literals and I know how to evaluate my literals and then I have my arithmetic operation and I know how to evaluate them and somehow since our our so you could write these functions but it will be tied to one a specific functor we don't know yet how to have like a part specifically for one functor and then for the other factor and then how to combine these functions together so so the question is we got extensible data types can we write functions that are extensible over these data types and this is extremely easy well extremely easy depends on of course on our definition what you find easy but this is all the code you need to write ebal so basically the idea is that now our function is going to be defined as a type class but this type class is the type class or fun of functors that know how to evaluate themselves which are evaluable somehow so each of these have to give me a definition for the function about a ball underscore so act actually what we need to what they need to give me is another algebra oh it's interesting I find it interesting at least and so you see that that now we can write a definition of a ball for the literals and operations and these are yeah yeah so basically what what we are left is we know how to tell or how to evaluate literals how to evaluate operations but we need some extra boilerplate code which is how do we evaluate a composition of functors and this is always looks strikingly similar there's always something like this if you think about you either go to the left or to the right and then you say if I go to the left please call the valuation on the type of the left but this is taking care of the type class system so this a ball will call the thing which is on the left will call the ball on F or if you go to the right please call a ball on the right so and and the last thing you need to do is okay we have about a ball for P of integer but what we really want to have is so for for P but what we really have is something that is the fixed point of P so it's gonna be fixed of P so you need to unwrap this fur sorry it shouldn't be fixed it's right in there sorry so you have to unwrap this in operation that we had before and you just do it by calling a ball and then recursively calling a ball on the subtree so you are tying the recursion again at this point so so this is how you can write a sensible function you just have to think beforehand that your data type is gonna be extensible so you write it's a pattern factor and then you can combine them and get extensible functions and actually these functions are really extensible so if you now add exponentiation you add the factor you add the the instance for evaluation and then you don't have to change anything you don't have to change the instance for combination you don't have to change a ball so a ball is still the same stuff so I think this is pretty cool and and yeah I think this is a small digression but I think it's interesting to do to know where these techniques come from and this is come from from trying to solve what is called the expression problem of programming languages so we have object oriented programming we have functional programming and and somehow they have different trade-offs so if you have if you have object oriented programming it's very easy to sort of a new constructor to a data type you just subclass it and then you have animals and you add a dog and a cat and then you can do this with modifying the animal the problem is if you want to have some some new function which is which works across all animals then you have to change the animal class so you can subclass it in all the rest so you sort of have it's easy to subclass to add new constructor but it's very complicated to add new functions and so you need to modify what you had at the beginning and there are these extension methods which allow you to do some of this stuff and an fp it's completely the opposite it's very easy to add a new function you just add it whatever you need it you don't need to to tell any data type that you want to a new function operating on it but if you want to add a new constructor to a data type this becomes impossible you have to modify the search code and this is bad because we we need to go to whatever wrote the search code and and see that everything compiles again so this that the type salad card is is something that the fp community came to solve this problem on the unfunctional rule on functional languages okay so that's one one thing we can do with pattern factor so let's go to something new which is to build free thing is especially a free monad so I'm not trying to tell you what a free thing is there is a talk after this which will tell you much better than I do but I need you to to get at least the intuitive feeling of what a free thing is what do we say when we have a free monad a free monad free whatever so so the idea is we have a class we have a class X and we want to say what a free X is so a free X is gonna be just a parametric data type so a data type free X would take a type A so and then we want to be able to define an instance every time for this free X so we want to make free X an instant of X with the less amount of conditions so so we want our conditions to be nothing or the smaller they can and if conditions is some other kind of concept then we speak about the free X over a Y so let me make an example so we speak about the free monoid over a type and why why list is a free monoid over a type is because for every list of a we can define an instance of monoid and we don't have any condition so our condition is just to be a type so we can we can define it this way so it's important I'm speaking about a free monad not the free monad which is a much more stronger thing to say about something so I'm not claiming that this is the free monoid and you can you have long rounds on the Haskell cafe mainly is about what's exactly the free monoid in Haskell which is not actually the least but okay the point is we want to define free monads so what should a free monad look like there's it should be a data type free monad which takes an F and given some conditions for F that we want to we want to figure out we want to write return and bind for this for this data type so so our first guess would be you are speaking me about this fixed thing let's try with fix so it fix takes an F and we have this fault operation which sort of resembles the bind operation with sort of resembles might be depends on on what did you think about it so but you have some problems first of all a monad is an extra type so you need to have fix of f of a so because now you cannot define return so how will you return any a into fix of f fix of f only have values of the fun of the functor f and and also another problem is that g-fold does not change its type but this is also the same the same problem there is no extra type variables to change so it doesn't change its type so so we can think about okay what we need we need some extra thing that saves value of type a so let's include it so let's use our idea of an extensible data type to add a whole of type a so now your free monad is not only going to be things of the pattern factor f is gonna be things of the pattern factor f of an a which is like in its own world so it's it's a whole there so you can see that the type whole is also a pattern factor but is completely disregarding whatever the the x is so it's always be a constant type a so if you add it to it then you can write a free monad definition so we have any factor we added a whole and we know how to add a whole because we know how to add data types now and by combining this we get a free monad and fortunately you this is not valid Haskell and why it's not valid Haskell is because when you have a type defined like this you cannot partially apply this so it's it's not legal to write free monad of f we only have to we always have to write free monad of f of a it it really requires us to use the synonym fully not not just a part of it so if you if you look to the to the definition of a free monad over a factor which by the way is the condition we figure out we only need factor f if you look at the definition you will find something like this which is just expanding what we had so it's either return which is the this whole or it's either a recursive which is a fix over this free monad so this is just expanding this thing to please the Haskell compiler and we can write the same the same stuff here so we have a factor and you have a free monad over f so what's the deal with free monad why everybody loves free monad this I haven't told you about that I just thought oh these people want to know what free monad regardless of its utility but there is an utility on this so yeah yeah I even like to think that free things are a design pattern of the Haskell language so so if you have something like operation so in this case you have a key value store you can represent the operation that some this a store can perform as a free monad over a specific factor and this factor is the thing that that represents the operations so if you have some kind of system you have the basic operations and you usually have all kind of skeleton to combines operation so you can sequence them you can perform them in parallel and this is given by this free monad the structure so at what what can this key value store do it can either get a value so you give it a key and then it gives you a value you can use to apply to a function so that's the V to R or you can just put a key with a value in the store so if you now define the free monad but you get it sort of a way to define programs that use this key value store and and this is an example of it so this is put in three and then get in three and with the result of three it will just it will just return whatever it got so this is this is how you can use a a functor to define a free monad and this represents sequential operations over this kind of basic primitives in your in your language usually you don't want to write this example in this way you would like to write this but you can do a sort of mechanical transformation by just calling return at the end of everything so it's it's not very complicated to do this and you can you can always do this to get a more monadic interface so what what you got from this so this thing only represents operation but it doesn't perform any operation so example isn't actually looking into any database it's just telling you it's just describing a program which does something a database so that means that you can interpret your description in different ways so you can do it in a real machine so you can say oh I have like a key value store connection and I will every time I have a get I will actually get it from the from the key value store or if I have a put I will put it on the key value store but you could also find another interpretation that mocks the operation and this is great for testing so I will define something we just recalls these things on a list so if I have to test my system I can just create sort of a unit test run it through mock kv and figure out whether the result is what I was expecting without actually having to run anything on a database and I think this is an important lesson to be learned at this I think that's one of the things that has those empowers me to do that you can separate completely representing programs from interpreting programs and and usually the good thing is that representations of a program since to be instances of general concept like function like monad they always have this kind of same structures and interpretations or even interpretation are always kind of fault so you can you could have defined this as generic faults but the nice thing is you can have several of this interpretation you don't have to boil anything down into the system and well as you as you may know Haskell doesn't only give you free moment it gives you a lot of other things for free so you can look at the free package by Edward Comet and you have free moments free moments free free whatever you can kind of do this kind of stuff I think that the free moment is the most useful one because of this thing which you can interpret but you can but but you can have more of this construction and figure out how this should be and this is I think this is a nice and nice thing to do so so okay this is of course awesome so why the hell doesn't my compiler allow me to do this from the beginning why can I use my data types as first-class data types I would like to do this now I need to do this so and if you think about that that's very clear because what what what you do when you do the writhing show is you want to write a show instance but you could have written this if you know what is the pattern factor you only know need to know what's the pattern factor the red is always the same just parenthesis and angry cars so why don't you do this so actually we can do this and I will show you how so let me check the time oh I can even tell you this slowly so so we we know how to express choice so we have this plus operation that allow us to say oh I want to have this comes this factor or this other function so we can sort of say I want to literal a plus or a times but we don't know how to describe its constructors so we don't have a generic way to say oh this is an integer and this has an R and an R and an R so what we are what we are looking forward is to have something like this so we have this plus which is like an or represent a choice of constructor and then inside every part we want to define what is the structure of the constructors so for this we need some some things so we need first of all some way to say oh this recursion so we can think oh there is some kind of recursive pattern factor which represent this I will show you later how we can define this just try again have a bit of faith that this will work out we have this we have this whole we had before the whole which represent a constant thing we can represent this thing that oh here is an integer oh here is a whole for an integer and what we need also is to put something together so we need to have sort of a tappling but we need this to be extensible so we have to have some kind of and operation so what we had before that our arithmetic expressions they are now this is going to be represented this way so you either have an integer or two recursive position or two recursive positions and we we forget completely about the names of the of the constructor they are not important in this case because we can always know what we have chosen by means of knowing if we've gone left right in this case or left left so so okay this combination actually exists and they have this nice property that you can you get you give it two functions and you get a new function so we know about holes we know about choice we have a product of functions which is just two things together so you have F and G applied over a because this needs to be a factor then it's f of a or G of a there it is we have we can always express we can express recursion but if we remember we express recursion later on the fixed point by this our operation so we only actually need to to have the same operation here so this are is really like an identity you do nothing to the to the parameter and and then well if we are going to do this to the end then we also need some extra thing for a constructor we have no information so how would you represent a list with only this without this well you cannot do this because you cannot express something like nil you cannot say oh this has no information attached because you always have to choose some of these functions so we need to express an extra one which is unit which is like nothing no information attached here so we just forget about our a completely and doing this we have anonymous data types so we have data types in which we don't give it a name we only give it a structure a shape so our list can be represented as either unit so that's the nil case or a cons which is a whole of type a and then recursion and then our list are going to be fix of this thing and if you want to go all the way down you can define nil and cons as just synonyms of this thing so when you have nil is just you go to the left so you go to the first case and well you have nothing to say you have only have unit or if you want to have a cons you have to go to the right so you have the second one and then you either you have to give it a whole and then the recursive thing the fixed one will take care of this working in the way it should so you can do this also for arithmetic expressions so you can define it as either a whole integer or two recursive position for plus or two recursive position for rec and you just can do the same thing with patterns synonyms to have the same name you had before so the nice thing is that ghc already gives you this so it just only give it shorter names which I think are not shorter just because you want to write less is because you want to look more clever because of course if you know what kcp is you are strictly more clever than if you know what hole is which acts a hole so that's that's the names that gives so instead of well the Sam and approach are the same and instead of go left and go right they call it L1 and R1 and there is a reason why they are called L1 and R1 and L and R directly but yeah that that's just make it another day so so we have you need to have products so now we have we actually have all the building blocks to have first-class data types on our compiler so the only thing that is missing is that if you write Haskell code you usually write normal data types so you wouldn't write list in doing a pattern factor and then taking the fixed point and writing the pattern synonyms so you want to use normal Haskell code apart from the fact that it's completely irrelevant that it will using this will be like ten times lower but yeah so what they did in ghc is okay it's telling you okay if you want to work with your normal data types do it and if you want to use this generic representations please give me a way to convert from your data type to a generic representation so this is the generic type class which is like the whole idea we've been working on on the compiler so you have to give me if a is generic if a can be described with all this fancy pattern factor you have to give me what is the representation so if you haven't seen this this type in a class forces you to to to give a definition of a type when you implement this class so it's sort of a method well not a method it's a method which is a type it's like a function which should return a type and this is a colon associated type family and then you have to give ways to convert from a to the generic representation and the other way around so this is this is how you want to do this so if you think about it if you want to give the instance for list so we already have seen what is the instance for list so we have to give an unit and then a whole and a recursive position so this is how this is done so there is just one a small detail generics don't use this fix operations that when you have a recursive position you just say oh this is like a constant of the recursive type so you have here k1 of type list of a this is a small difference and why you do this is a small difference style so I think that the other one is a clearer style but this one it's a bit more performant so you want to lose some of your performance but maybe not all of them all of it so and then if you have to give tell me how you move from nil and cons to the generic representation and the other way around so okay you want to use this technique but seriously are you gonna write this code so are you going to get a scrap piece of paper figure out what is my pattern factor let's write everything and imagine you have like I don't know imagine you have something with more than two things which actually will mean that this will like three lines that's terrible so yeah just ask the compiler to do it for you because this is automated so you can add the right generic at the top of your source file in Haskell and say oh please derive generic for me so yeah if I want to give you all this thing for my arithmetic expressions I will just write this and it will generate all the code for this so so we are good we don't have to work too much we only have to add well one line per thing because the the other one you only have to one per source file so this is amortized about all your so if you put all your data types in just one big file this is like completely negligible cost so so then we can use the same techniques this data types a la carte approach to define data type generic equality so you have this deriving EQ which does it for you but you could have written it directly by using this data type generic kind of stuff so this is exactly the same thing so you have to give a type class and then for each of the possibilities which now are not they are not any kind of pattern factor there our basic pattern factor you want k1 plus and times you say what you want to do and and if you think about and this is how you would actually think about a structural comparison so this is telling you okay if I have two tuples they are equal if they are equal in both their components if you have a choice of constructor these are equal if they choose the same constructor and then their information inside are equal which is exactly what you are saying there so if you have L1 and L1 then you continue looking but if you if they are different then you already know that they are not equal and you can give false as an answer so this is how you implement equality usually how you think about it and then the only thing that is missing is a wrapper because if you want to use equality you would you don't want people to know that you are doing all these generic combinations so you want a wrapper which goes from here and of course you need to to have generic here but people have to write the right generic I think it's a fair amount of code they have to write to be able to use this the problem is okay you can implement equality but you cannot implement show what that's what I said I would let you know how to do it and the problem is that we know how to choose a constructor but we lost the information about the name of the constructor so what is the name is it a field how should we need all this information to be able to derive a show instance so what what GC does is add a new constructor M1 M1 from metadata with just does nothing so it doesn't record any information on the on the value level so you have nothing else to do only an M1 extra in your in your data type but but this I and see by the way this is called this is ICFP which is the name of the International Conference of Functional Programming and I think this was a pun from the writer of this thing but but anyway this is information about your data type so if you go to a GHCI you can actually do this if you have I think from version 7.8 or something like this and you and you say well kind of rep which means that please give me the type which results of this type family from this type function rep applied on wool you give me the kind and this and this exclamation mark tells you please also give me the type not only the kind of the type you will get something like this and you see that this what you would expect is to constructor which has no information which are true and false and you can choose about it but there is some metadata which recalls the name so if you ask data type name from true so you need to give it a value but you have true you then you get bull so it recalls what the data type name and if you ask for constructor name it will also tell you the constructor so with this you can and you have more information so what's the model it was defined it is a defined as a record all this information with this you can you can implement a lot a lot of stuff you can implement equality function traversable all of this in a generic way you can do serialization to JSON you can do to binary so you just add derived generic and then you can use all this stuff for free you can do use deep evaluation you can you can use a very nice package I wrote which sort of extends regular expressions into regular expression which speak about any kind of data type so you can sort of say oh please does this match the shape of having a plus and then all this kind of stuff you can even have generic deep function that work over any data type you can have generic rewriting generic transformation from one data type to other all of this generically but there is just one piece of worrying so there are many libraries for for generic programming in Haskell so this kind of things so I usually like GC generics because it has been one of the the newest one so there has been several iteration of this idea and then they thought oh this is good enough to go into our compiler but there are many others there is regular and multi-reg and then you have scrap your boilerplate which is like a different completely approach based on the folds the newest what the new key of the block is generic SOP for some of products and these have all the same ideas reformulated in a slightly different way so if you are going to use this this is a piece of worrying there are many choices to be done and it's completely non-clear for anybody what you should be using yes and I only spoke of this for data type which has like one recursion so if you want to define like mutually recursion yeah so I was saying so this work but I've shown you only works for simple data type so Haskell 98 data type which only have like single recursion no mutual recursion like these data types needs a type of this and this this one no gadds so you can do this if you if you don't have a headache about the after this talk and you want to know just feel free to ask me it's not a difficult so in summary what we see is that we can make our data type first-class object so there is no more discrimination in our language everything is super first-class and we do this by looking at a data type as a partner factor plus a fixed point and then this gives us extensibility of both data types and function using this approach that is called the types hello car which is just having this type class and then having instances for all of this and this is embodied by the gc compiler and you can derive these things we have also seen some free monads which just use this constructor by adding some extra structure but if after all of this which is a nice technique the takeaway I would like you to have is that the free monad thing is really really really useful in like real-world things because you can represent your operation and interpret and this is completely separate so it's very nice from a modularity point of view so yeah I also have homework because you know I work in the university so I'm I'm I sort of mislead by this kind of of talks thing so you can you can read this these papers they are they are nice and easy to read you can wander around the free package which shows all of this construction and it's nice documented you can browse you can basically read a lot of information about this and this has a lot of documentation about how you apply this and yeah and and if you are writing Haskell code uses techniques to write less code that at the same time is more extensible code so complete game so thanks


The haters said it wouldn't happen even after three straight losses, but we knew we hit our parlay run it back starts now Happy Wednesday morning, and we have a pulse ladies and gentlemen run it back right now Sharania Chandler Parsons Eddie Gonzalez and Celtics had a little pride had a little dignity. They showed up last night They got things done down in Miami avoiding Elimination 1 16 99 is pretty big win 18 nothing run in the third quarter The heat were up nine by the way in that quarter Tatum with 33 and 11 butler did have 29 9 and 5 and Tatum did have a huge night Chandler What was different? Well, he saw a couple easy ones go in and the basket got bigger for him And he finally played Like he was the best player in the series that we all expected him to play like throughout the first three games And he played desperate. He played like he didn't want to go home He did not want to go get swept and I think we take for granted how hard it is to sweep somebody and what Denver did on the other side and I thought people just thought that was going to happen um, but The the Celtics they showed up last night and they played hard and they they turned their defensive and Force turnovers and they made that become easy baskets for them on the other end Grant Williams, he was great. I gotta say All the poke in the bear talk he lost this series. He stepped us up last night He had four threes. He played solid defense on jimmy had a nice block on him on the iso Horford stepped up there quite did all all the starters were double digits So this is the way that we thought they were going to play coming into this series and again It's it's hard to sweep. So now now it gets interesting right now the fun starts now We go back to boston and they get that one It's it's anybody's series and you wouldn't think you'd say that after a team is up 3 0 and now 3 1 But the momentum in a series like this can ship so easily that The the Celtics came out and they handled their business but on the flip side the heat It's just one game. All you gotta do is win one more right on next three. So you don't really feel the pressure yet, but Man, you go ahead and you lose game five things get spicy Yeah, the best player in the series Finally looked like the best player in the series in my opinion and what I liked what he did last night is what you're looking at Right there. He got to the paint half of his 14 shots. We're in the paint where layups floaters He attacked and that changed the game for them between that and Al Horford making three threes They were they look like a whole different team last night and and for all the quit we saw In game three we saw an entirely different Celtics They made 18 threes, which is huge for them Uh, especially when you make 10 more than the opponent if they can replicate that And that has been their game all season long make a lot of threes defend and and and beat teams like that And they did that last night And so if Jalen brown ever shows up to this series and they had a decent four quarter last night a big dunk on Bam had an and one layup that essentially ended the game stood in the crowd and let them hear it Uh, if he shows up and has a big game And and and then we got to go back to miami for game six It's getting real dicey because him and marcus smart said it don't let them win one and they did So I I I hit jason last night said one at a time and he hit me back so the exact same thing So that's their focus right now and they're in a real good place and uh, we'll see we'll see what they look like tomorrow But what they just did they can do that again Funny how one win just completely changes our perspective shams you and eddie were in the building last night What was your takeaway? Well, for sure grant williams the way that he played and and joe mazula has Gone away from grant williams at different points second half of the season Had him relegated to a really a 10 minute role He got some dnps in the last round and at the beginning of this series But now that he's finally back in the lineup There's a guy that played 27 minutes a night for the seltics last year on their finals run 14 points last night made threes Clutch on really both ends of the floor and the seltics shot making is the name of the game Right like it's a maker miss league and in game three the heat made so many open threes They couldn't miss i was talking to some seltic staffers before the game They were just sighing because it's one of those things where if if Miami's making shots at the rate that they were making shots in games one to three Boston really There's no hope but last night 19 or 45 from three only eight eight of 32 from miami and Boston is now seven and one uh over the last 14 games when they hit 15 or more threes They're 0 and 6 when they make less than 15 threes. So I guess in game five you got to make at least 15 threes I mean that whole the whole thing about boston saying don't let us get one I mean, I think a lot of us rolled our eyes thinking What are you doing because of what they look like in the other previous three games? But it did seem like we're watching a different team last night chandler. Is this enough? Is this confidence boost going to be enough? Well, again, it's getting fun now, but it gets really fun if they go and they protect home court And they win game five now. We're talking about a legitimate First time ever a team has a chance to come back from down 3o and this team has the potential They have the talent when they're locked in like they were last night and they're flying all over the place And they're crashing the offensive glass and they're playing together and they're getting something from everyone They're one of the better teams in the league and they've done it all year long, but on the flip side Miami the BAM BAM takes seven shots and in a in a game where you can knock off this The two seed and go to the NBA finals and like shams just said they they got their looks and that 180 third quarter run that was that was tough to come back from so they went from up nine to down nine and about three three and a half minutes and That was pretty much it. I need to see bam be more aggressive. I need to see him come out They have nobody to guard him. He's versatile. He has size. He has lengths He needs to dominate game five because again, like we're talking about They said don't let us get one If they get two all of a sudden everything flips and now there's pressure because it's the same thing if this goes back to game seven I got Boston. So it's crazy. Like we said, it it alters every single day And it's it's at least for us and for the fans. It wasn't a sweep again because we want this to go longer We want something to talk about But this is the version of the Celtics that is a championship contender not those first three Teens we saw play against the heat. So it's what can they do it again? Can they make shots? Can they defend? Can they keep getting in transition buckets off their defense getting in passing lanes like they did in this game? We'll see but the heat aren't just going to lay down. We know their dna. We know how tough they are We know jimmy is going to bring these guys with them and they're going to play hard in game five So it'll be awesome Eric exposure was asked a lot. I think even during the game about his team taking their foot off the gas becoming a little bit Lazy, did you see that eddie? Is that what we saw? No, I mean, I'm one takeaway from this is my first time in that arena Is the intensity that that team plays with they're not an overly physical team But they just continue to move on defense and continue to move on offense They don't let up all night and the arena is the same way the crowd is the same way So no, I don't think that they took their foot off the gas I don't know. Eric's social's answer was either they just didn't shoot it as well as they have It pretty much all playoffs is the first time this series. They were held under 100 points They they only shot 25 from three. They had 15 turnovers. It's a little uncharacteristic for them They didn't have that explosive performance from another guy besides jimmy and when they don't have that, you know, uh Gabe vinson had 17 points, but they didn't have anybody Up to that they didn't have anybody in 20 They need a 40 point game from jimmy to keep up with something like this and they didn't have that last night so if Are they gonna play better as the series of those four? I don't know the pressure is flipping now And two of these games are gonna be in boston. So, you know, roleplayers They they typically play better at home than a one home game left it's it's it's gotten very interesting now and What would they what they probably gonna need to win to another one of these games? Is there gonna need playoff jimmy to come back and look like the best player in the world again? And i'm not putting past them Okay, let's let's get real here. Does anybody on this panel Think that the celtics can win three straight games Really all of you everyone. Okay a challenge Listen again, but like eddie just said they're looking at this like a three game series and they have home court advantage They have this was the heat's chance to really Be done with it and obviously give them no hope now. They're going back home Which i know miami just won two games there, but it's different This is their season is literally on the line. They cannot lose and they played last night like the desperate team They were flying around they had more energy last night. They were crashing the glass They were getting their forcing turnovers. I don't know why it took them three games to do that But yeah, you know the heat are feeling that they can say they're not they can say that they're they're okay All they got to do is get one which is true But the celtics were the better team all year long They have two star players that really haven't showed up, especially jaylon brown They're gonna get the home cook and that place is gonna be rocking If there was ever a team to do it it's this celtics team against the eight seed miami heat But again, miami's not just gonna lay down. They're gonna make it very difficult But yeah, I strongly believe that the celtics can go and get three in a row I mean we're talking about history being made here guys three straight And I'm seeing a lot of this this is weird It's just I just I don't see it. Um, meanwhile denver just resting sleeping in having a a little mini vacation If you will shams as president of their bandwagon Who do they want to play? Well, it's crazy in 2020 if they had beaten the lakers they would have played this miami team We'd be talking about a rematch, but I I think if you're denver nicole yoking mike malone I don't think that they're stressing out over either of these teams I think they're very very much locked in on the on themselves and preparing over the next week or so In advance of game one, but I I do think when you look at it from a roster perspective It's hard for you not to argue that boston on paper Has more talent more depth than miami, but again these games aren't one on paper The same could be said about past iterations of boston's team. I remember that 18 19 team That the celtics had the dany age put together kairi erving jason tatum jalen brown al horford Marcus moors marcus smart at that point was their sixth man That team had so much talent they lose in the second round So talent doesn't mean everything channeler knows he's played in the league It takes a lot more than that chemistry which miami has shown more of this series But listen on paper on on talent alone I mean it's Could boston be the first team ever to make this a game seven and potentially win three out I mean, I guess you can make the case, but games aren't always one on on paper Yeah, I think the obvious answer is The the celtics and I think they want them to keep playing I think they want them to beat each other up for at least three more games and the longer this season goes The more of an advantage it is for dember, but i'm with shams. I don't I think they I think they beat whoever it is I think it's I think the celtics like like he just said they have a better team They have a deeper team. They have more star power, but that's not all it's about It's it's a jimmy butler has literally shown us that it is about so many other things and will and how hard you play And doing all the little things that that's what the heat do But I think obviously they want them to keep playing they want this to go to six or seven games Just to continue to kind of can watch film break down get more rest, but I don't think the nuggets really care who they play. I think they're confident against either of these teams They are hot and they're ready to go shams the more stuff is happening It's not just what we're seeing on the courts things are happening behind the scenes coaches are perhaps Being interviewed and maybe hired What do you have for us? So the phoenix sons are down to five finalists for their head coaching job They're gonna have final meetings and interviews in michigan with owner madish via james jones Later this week, but here are the five finalists right there are three championship coaches nick nurse frank vogel Doc rivers and then you have two assistants high-level assistant jordy finandez with the sacramental kings kevin young who's in house in phoenix Uh, and what's interesting here is I think milwaukee and phoenix are kind of on collision courses to potentially make hire sooner than later Over the next week or so potentially Both teams are looking at nick nurse pretty strongly and so both are really far along in their process But I think when you look at the phoenix sons list you have a mix of veteran championship coaches and some youth With the team with kevin dran devin booker. Do you want to go with the first time head coach? Do you want to go with more of a veteran coach? We'll know our answer here soon Hmm channel or anybody on that list excite you Nick nurse I guess would be my pick. I don't think I go with the first year head coach with that situation with that They need to win now. They need experience And all three of those other guys on the left there they have it But again, I think the coaching search and pool is such a cesspool and They just fire doc for not doing what sons want him to do in phoenix that he just failed to do in philly Uh, oh go already got canned from the lake. It's it's it's it's all funny to me But I would I would say nick nurse he has he was a great coach. I don't even know why he got fired in toronto He's young. He could go with these guys. He can relate to players. He's coach star players before um So I would I would probably roll with him. Uh, there's more of a future there with those guys But they're also in a win now situation, but he nothing really tickles me, but I guess I'd go nick nurse No pressure eddie, but whatever you say, we will assume it's what everyone wants. Who should be the coach of the phoenix suns? Yeah, I got a call the other day. I'm I'm in on the process. I think uh, they didn't take my vote for me Me and chandler on the bench, but it's cool. Amazing. Uh, I'm very intrigued by jordy fernandez Who spent six years in damver kind of building up that offense and Uh, you know, sure you're not how to work with nicole. Yoko. It's the best team in the league right now Also on the kings and working with that offense as well I'm very intrigued by that because you got to wonder what he could do With kd and debon booker and whomever else is there next year as they're going to want to keep up with these other teams But I think of you know of the veterans. I kind of echo chandler sentiments about doc It's like, uh, we're what are we expecting from doc at this point? What I think you see with this list is you see a new regime.  I believe they said they're We som said they're gonna be in michigan with james jones and matt ishvia They'll be telling and I think the job is clearly up for grabs with the types of coaches that they put together You have three championship coaches and you have two first time big name assistants including an incumbent who was already on your bench So it'll be interesting to see what they what they do going forward But I think the key in the first question you have to ask those interviews is like What do we do with debon booker and kevin durant? How do we make a championship offense out of those two? And then you work down from there So nerve wracking new jobs are hard Guys we're gonna take a quick break right now When we come back a man who has been doing overtime work.  Um, but I have no idea where you are. Are you still in taiwan? Where are you? Uh right now, uh came to take a little vacation in thailand. So It's almost uh, yeah, it's pretty late here. I've been on the beach Okay, you're living you might be living a better life than chandler This is and that's really hard for me to say street food street food for days Is it fun? Like why why did you just pick it because why you just didn't want to come back yet? well, uh Well, I can't come home until the 31st so I just wanted to get get away for a couple days and I've always wanted to come to thailand The weather is so amazing. The water is crazy Uh, so I've never really been snorkeling and uh, it's the first place that I came to do snorkeling that and I'm having an amazing time It's beautiful. It's beautiful D. H. You put some amazing numbers up in in taiwan. You were shooting three. I think you were in the three point contest Out there doing everything on the floor What was your experience like playing in taiwan? What did you learn by yourself and and how fun was it for you to I know how much you It was uh, it was a crazy experience. Um just After playing in the nba for 18 seasons And then traveling to taiwan on the other side of the world Um 13 hours ahead from anybody at home in Atlanta It was just crazy I just couldn't believe uh that my uh journey in life Took me to taiwan to play basketball Uh, but it was fun, man. I brought some some passion some love Uh back for the game I enjoy teaching some of my younger teammates But really just the fans man Uh, I know channel can Test to this, you know going overseas Staying all the fans in asia It's it's a crazy experience Man, it's it. I'm just thankful. I'm just really grateful for Yeah, deba the last time I was there we were together Yes We had a good time So I know what you're doing, but you recently posted these videos that were hilarious. You may have even been lit I don't know.  I don't know But you reached out to cp kb Dave have you heard back from any of those guys or any of those guys take you up on your office? No It was so crazy. Uh I remember chris paul earlier in the season when Hey v got traded to the suns. He was like, man, we don't win this year You know, I'm gonna go play basketball at taiwan with the white house. I was like, okay He's trying to throw a little jab, you know a sneak look uppercut so, um, I was You know paying attention to the season. I saw when they lost in the playoffs I was like, I'm gonna get him back Instead of just posting. I'm gonna make a video Uh recruiting uh chris paul to come to china, uh taiwan. I'm sorry And uh as I was on my live everybody was just coming to different players That they wanted to see come to taiwan So I just started naming all these different players and trying to recruit to come uh Really just to spread love with basketball man, basketball has given us a wonderful lifestyle as you know channel We've been able to travel the world And it's fans around the world who would love to see all of us just play And that's one thing I got from being over in taiwan. It's just It's people who never watched basketball All of a sudden their basketball fans is 80 year olds coming to the games 90 year olds. It's little kids The first word that they're saying is howl And they can they're saying that dad or mom that coming to the games in the howl And it's just so happy and it's just like man, I would love for more players, uh Just to travel internationally to play basketball or just to travel in general because it's a different world In the white I love what you're doing out there and I love that the stigma Of playing overseas is changing a little bit and much like you're describing. It's a great experience. It's really fun It's culture changing out there Another one of the guys that everybody's wondering and somebody you played with somebody you want to ring with LeBroni into their retirement the other day. You got a pitch for him. You're leaving him alone or what you want?  It's What is LeBron going to do next evening? and uh, he's had a An amazing career. He's done things that no basketball player has ever done in the history of the game I'm so proud of him. I'm so happy for him and grateful for the opportunity that you know, I had to Play alongside of him and win a championship It was one of the best things ever um, and just to see What he's done for the game of basketball Just amazing All right, joy, you know, I have to bring up shack. Um, you know speaking of jabs and uppercuts He threw some earlier in the season talking about the record of your team in taiwan And you guys obviously have a history So do you have any messages for him as he's obviously watching right now and secondly? Dinner plan soon. Like how do we squash the Dwight Howard shack? I mean for years I've said it. I don't have Any beef with shack.  I don't really have no beef or corals to anyone Uh, to be a shack thing. I don't know what it is If we got to go to dinner if we got to come on this show And have a discussion Whatever it is And you know, we're getting old man. We're getting older. Let's squash whatever beef we got And whatever it is and just keep it pushing DH did you have any conversations with teams with NBA teams this year? And is your ultimate goal you think to return to league this upcoming offseason next year? I would love to come back, you know, uh to play in the NBA Also, I do enjoy playing in the national basketball Just the experience Is is one of a kind, you know, it's a different type grind and being in the NBA And I had a chance to experience but I would love to Finish off my career with the NBA team Hopefully win the NBA championship Uh, but if not, you know, I've enjoyed playing basketball for so long And I'm just thankful that I've had the opportunity to traveling and uh Playing the NBA. So this is the best life Another follow-up, you know, looking back at 2020 The the big difference between that Lakers nugget series was they had you jubilee McGee ad all to throw on Nicola yoke and this year Lakers got swept They really just had a couple bodies to throw at him If if if the Lakers this year had you uh to guard Nicola yoke Not saying you could stop because you have contained him a little bit better Than than they might have Well, you know, that's if I was on the team, you know I wish that I had opportunity to play Uh help the Lakers this year. I would love to uh been in there in the heat of the battle Going against Joe Kitch who's obviously got so much better since of the 2020 Playoffs, you know, he's been playing amazing. I think after that series it kind of like sparked It just like something happened. He just came out after that got faster got stronger And he's gotten better and uh, I hope he takes it all the way this year when the championship I think it's going to be a battle between the heat and Denver and uh Hopefully the big man pulls it off in your pitch Yeah sticking with the joker Dwight is he The best one of the best most versatile bigs in your eyes that's ever played the game Oh, no no question him and Embiid are like Ivers they're they're like three or four big man that we've watched Play over over time all in one, you know, Embiid is like He's like Shaq but it's you know, he's big He got soft touch Uh, he got moves like the king Uh, he's he's doing moves like Jordan and and uh, Kobe Uh, so like these guys are ultra talented, man And uh, I'm glad to see that the area is shifting back to the big man And I think Jokic will all he's already all time in Just keep going I'm biased because I was the biggest magic fan. I had you playing for the magic, but right now are you going? Jokic prime Dwight Howard Oh Hey I'm dominated every play with a smile on my face Hey, yeah, yeah, I'm here. I'm here So yes, yes, yes I'm taking You can ask that Chandler knows better Where's the The dark contest Yo, uh, I want to change pace real quick I want to talk about one of your former teammates James Harding. He has a big free agency Opportunity this summer. What do you think he should go? Should he stay in Philly? Should he go back to Houston? Is there another is there another situation you think works for him? man, I really thought that him and uh Him and uh, Embiid were going to work great together in Philly I think going back to Houston would be awesome but uh Come to Taiwan, right?  You look at Pat Beverly He started out overseas Now he's in the NBA and he's worldwide Uh, because of his defense and he started out scoring So it just goes to show you that international basketball Is something that you know people should pay attention to as well Pat Beverly also good with the talking that that that definitely helps. He's a good heel Look you were on he's so good. Uh, you were on season six of The Bass Singer, which I'm I'm so confused by this show, but you made it one show only the first episode and you're out as the octopus What happened is your voice? No, I have a great voice. I have a great voice I had to get ready for the season. I had to train Yeah, so when you do The Bass Singer, you're there every day all day. You're rehearsing I had, uh I had singing coaches.  So in the back, we went over to dance Nobody saw our faces the whole time It was the it was one of the best experiences ever Doing that show The Bass Singer Uh year later to doing that show. I did another show called Special Forces Which happened to be the craziest show I've ever done. It set me on fire We got tear gas We had to stay. Uh, yeah, we had to stay in the desert in Wadi Rum Jordan Um in the desert for 10 days at a army fort And we went through Special Forces training. Uh, we stayed on the fort. Um, wow One one shower everything was outside Uh, we had to do some of the craziest things in my life.   It has been a long time. It's so good to see you. So good to talk to you. Enjoy your vacation Eat all the food Very jealous and we'll talk soon. Thank you so much Thank you for having me. I love you guys so much. It's good to see you, Michelle Everyone else, Chandler Chandler, I gotta see you, dawg.  I miss you, bro I love it. I love it when Chandler has moments. This is my favorite part of the show. Thanks, Dwight And Shoms, we're also saying goodbye to you. It is Wednesday, which means we have a few days off I'll see you. I'll see you next week. Don't work too hard and we will be back after a very short break Well, Eric Spolstra, giving us some good stuff says the play in tournament is the best thing to happen to the NBA in Years, Chandler, you agree? Yeah, I love it. It kind of eliminates tanking a little bit. It gives everybody a hope to have a chance to compete And then you see what happened this year with the Lakers and The heat they're showing you that anything can happen once you get in and that's well worth And then that's much better, you know than a late lottery pick like some of these other teams got so I think The success that had shown this year and how far you can go Uh, you know only helps the case for the plan and also it's it's got a little match March Madness to it where it's it's a single elimination for some of these teams and it's a must win I think it's great for viewing. I think it's great for competition. I think these teams, uh, you know Have to bring it you see a team like Miami who loses their first one against Atlanta Which actually probably ended up helping them of their matchup going forward, but I love it. I agree with Spoe. I think it's great. I don't think we should change this anytime soon Yeah, it feels like 10 years ago. They lost that playing into the Hawks right and and you're wondering how things break If they win that game and then they get Philly them first round and is it a worse match up and it goes on and on But it's been great. I mean The fortunate thing is we haven't had a tendency to get in I believe so They've had LeBron and Steph each year in the in the western conference even even had them play each other Had a ton of star power the uh, the Lakers Well, Timberwolves game this year was great. I went to that. It was playoff atmosphere. It was March madness Uh, they they hit a home run with this and I was super skeptical at first But just that extra week of just tense and important basketball before the real playoffs start And then you get these teams that are successful. I will say this though This same miami heat team whatever happened in the regular season. They went to the eastern conference finals last year They were one game away from the fight one bucket away from the finals So this isn't your typical eight seed But they are an eight seed and and and they got in there by winning a play-in game So yes, it's been a raising success And a hat tip to adam silver and whoever else in the office put that together because they hit a home run Go ahead. Sorry.  They have no chance of it So it's a complete change for me, which I thought it was going to be a flop Uh, I think the guys everyone watching this year is thinking maybe to just sort of shoot for the bottom Because this has been a very weird season and it has worked Moving forward. Shaq said that if he was healthy I love I love arguments to start with that His 2011 Celtics would have beaten the heat the one of course with LeBron And Wade Eddie you buying it Well, like is he talking about if he was in his prime? Like, yeah, then it's way different I don't know if people this was Shaq's last season. He started 36 games He didn't even average double digits look like an absolute shell of himself No, I don't know how healthy he wanted to be Shaq and Cleveland didn't change things Shaq and Phoenix didn't change things I love Shaq, but uh, he's bugging right here with this one Yeah, it's funny when guys like Giannis can say the same thing this year, right? Like a lot of guys can say the same thing whether they were happy That's that's part of the game And like Eddie said Shaq is a great. I think he's the most dominant big guy of all time Is it 2001 Shaq? Is it because 2011 Shaq? I don't see it Um, In this way, Derek was not going to let that team lose and that's still I think that's still the worst team to Everyone in championship. I think that's the most impressive championship a star's ever done That's for another day, but I gotta disagree with the big fella here. There's there's his His career was kind of winding down at that point anyways, and No, I can't I can't get behind this one I love how politely you guys both were like no with smiles. That was well done. That's very diplomatic I don't I don't need Shaq beef like like the white. I'm cool. No all of Shaq Yeah No Mention the Mavericks by the way, they've been mentioned as a possible landing spot for deandre Aten Channel you buying that I love it. I think it works. I think you'd be the first, you know, big physical talented Center that luke has had I think it's it's dicey on who they got to get rid of I'm assuming they got to get rid of their pick and either hearty or green And I love both of those guys potential. I think they both can play off the ball They both can handle the ball Especially jade and hearty he can go get a bucket when luke is on the bench So as long as they don't get rid of both of those guys And they can get off like a tim part away junior or a bertons or one of these big contracts that they don't want I love it because it adds then size it adds toughness It adds another talented option in the post that luke and kairi luke has never had And now you're starting to resign kairi erving now you have a Legit bona fide trio And generator is young that he can grow with luke kairi is still shockingly not that old So I really really do like this and and again I think dallas feels that they need to make moves now they need to maximize the time that they have with luke They've come up short and he's a generational talent that they need to take advantage of these years. So I'm all for it And I think it makes perfect sense Yeah, I think look it's easy to say Uh, yoke's dominated him and and and think less of de under eight now, but we see what yoke is We see what he just did that to anthony davis, you know, that doesn't that doesn't make de under eight any sluts I think he's a great fit with luke. He luke needs that big who can roll the rim Who could pop a little bit the da loves the mid range? He loves the floater I think is a great fit for them and and like chandler said if you can get Get them for the right package and and you're not giving up kairi or something dramatic like that I think he's great for them and then they have it's something they have to figure out the other piece I think they need to figure out as well is how's he going to get along with jesson kid and that coaching staff And and and I know you're not supposed to talk with them before you make a trade And he's on another team, but it's definitely something you want to figure out because his issues with money Williams They go back and they're they are Much story, you know, we've heard about him over and over again and now we have reports It's just the organization having issues with de under eight and then You know, you want to do your reconnaissance there, but we know mark cuban. He loves the gamble He loves to see talent. This is the number one overall pick same year luke was drafted. I think he's a great fit I think there's some smoke here and there might be some fire Chandler you and mark cuban obviously know each other quite well He likes to take these sort of chances and and like eddie just said gamble a little bit Do you think maybe we play it conservative this time? I mean, we still don't know what he's going to do with kairi necessarily, but maybe not gamble too much And this is more of a calculated risk than the kairi thing, right? You can trade this guy's locked up under contract at least There's no mystery of whether de under eight and can resign and kairi are Irving is an unrestricted free agent this summer So that was a lot scarier in my eyes for mark and for that front office and nico and those guys But this makes sense. This gives this gives luke another look This shows you that I am willing to make another risk and another bold move to to get you help And as ball dominant as luke is and as much as he wants to be the star and as much as he can be difficult to play with He wants this and he needs this for him to and he's you know He's watching the playoffs right now and as as that kind of talent and what he can do on the floor He's still is he's not playing on the biggest stage and that hurts and adding a guy like de andre eighton And not losing too much whether it's the 10th pick and again You can offload one of these big contracts these guys that are a role player at this moment And then you give up one of those young guys and green or hardy I think it works and I think it works for phoenix as well that they get something in return So I like it. I don't think this is too big a risk. You know what you get with the andre eighton You know, we can be productive. You know, there's some issues there off the court But that's just who there who isn't who doesn't have that in the NBA, but I think it's a good move I'm gonna move on the next question really quickly, but are there any guys that aren't watching the playoffs like is that a thing? Yeah, I mean if if you love basketball, which I think most guys do you can act and say All the different things, but you're watching the playoffs. I've been out three years in this one game Before leaving last year before I was doing media stuff like you watched the playoffs I was I wondered that and if they just kind of shut it down and wait uh blazers by the way number three pick Are you buying eddie the speculation that maybe they trade that away? No, that's that's ridiculous. I mean In either scenario where they want to keep game or they want to get off game and build around number three Number three is valuable. You're getting a franchise player. Whether it's scoot hannison. Whether it's brandy miller You're getting a premier talent with this pick I I can't believe this is even being speculated of it's kind of silly I mean, I guess if you're getting a superstar back But if you're trying to build this franchise for years going forward Yeah, you got to take this pick and you got to hit with this pick as well Yeah, I think it depends on what you get for it Can you get a guy that can come in and help Damian Lillard stay and win right now and add pieces around those two? I'm sure I'd explore it But eddie just said these guys scoot these guys brandy miller They could arguably be the number one pick in the draft if there wasn't this french freak of nature That's traditional. So I think dame Doesn't care about the process dame doesn't care about, you know, brandy miller being really good in five years So I think that's going to be a driving force in this but it all depends on on on who they can get back And how much can they actually get for this pick because whoever they get is going to be a good NBA player So it's tough because the portland trailblazers are thinking Life after dame, but dame is thinking life right now. So it's it's tough But I I would definitely be exploring it seeing what all the options are Well, yeah, if I can get jaylon brown, if I can get jaylon brown, I'm thinking about that a little bit But why are the Celtics doing that? Like it's it's it's a tricky proposition. If you're gonna all start back Yeah, let's talk. Let's think about it. But I don't see that happening. Anyway, take your pick Like I know I know picks have been shaky for Portland for many many years, but take this one. Let's make it work I like the optimism One of the one of the speculations or at least one of the rumors is the nets have basically said They were not going to consider trading mckel bridges for that blazers number three pick So there's a possibility chandler. Are you buying that? That's the right move I wouldn't do that if I was portland, you know, I mean can mckel bridges right now make damey lillard a contender in that team I don't think so. I love his game. I think he's great. He's one of the last absolute Amazing versatile two-way players that cares about defense just as much as offense He guards the best player every single night. I can go on and on for days about this guy, but He's not quite a number one option. He's a very good two option A really really good three option and I think the nets have a better chance of keeping him and adding somebody else I like dame lillard on the nets with him more than I like him on the nets with with dame lillard So I think the pieces they have and and I think he showed that he can do a lot more than his role was in phoenix But I don't think this combo of the third pick and bridges make sense for either team Yeah, chandler nailed it if i'm trading anything with portland, it's not mckel bridges It's ben Simmons and I want dame lillard back The tricky thing with mckel is he'll be 27 by the next time they play basketball And so we're not talking like some young buck. We're talking a guy who's on his He's coming close to his third contract at some point Would you have him on that team and you want to build around him now? So I don't think you necessarily if you're trying to make that trade you're saying hey, we're going to restart Again after we just restarted a few months back No, I think their timeline is now they want to be as good as they can be now And and build that mob over there with jagvon. So if anything, they're probably asking about dame lillard way before they're asking about the third pick So many moving piece. It's gonna be a fun off season no matter what happens Break time, but you're gonna want to come back because we get to do something We don't get to do very often on this show we get to Rag about ourselves. Well chaylor does it all the time, but we get to brag about ourselves eddie when run it back returns When nba playoff games tip off there's no better place to bet than fan duel america's number one sports book Because now you can build a same game parlay after the game has already started live sgp Is just one of the new features added for the playoffs So go check it all out right now on the fan duel sports book app Make every moment more with fan duel official sports book partner of the nba and I feel good reading that today because Well, we nailed ours. I mean no big deal all three of us Did it it finally happened anybody want to accept the the honor here? I mean eddie yours is pretty good Yeah, just just regular experts. It's a ralaba vulgaris times three over here We we smoke that one.  They all went well over so congrats I know we are great. I mean people don't say it enough, but we are great You know who's not great half the dudes in this next set of videos coming up man the shame that man has a family y'all We start with jaylon brown That's the side of the the court I was sitting on that was absurd Two foot dunk on them like that. He had to stop all this momentum Uh, man, we need jb to have a good game man To have one of those second team all nba games, but this is a good start This is the perfect This is the perfect advantage for jaylon brown because he had a step on him bam What I had to make crazy play here to get a block on this But it makes for a really really good poster when he kind of didn't even really body him He was he kind of beat him to the punch Way to hate channel. I love it Basketball's a fast game. Uh, bam. It was not you don't have to wait too long. This is back to game three It's it's all back and forth revenges are here and there Yeah, this This is crazy because he literally looks like he broke his ankle In a on a post on a post move and there was no slip There was no trip. There was no stepping on the foot here. This was a grown man move And it was the game. It was the give back season I feel like I feel like bam listens to the ringer mba podcast because somebody on here said he doesn't he's not a good leaper And he's been dunking all over the silver jar since that show drop. So Uh, congrats to my guy at the ringer. He heard you I think more of this All right more of this please bam. I mean, look here we go What are they talking about? Like what's going on here? There he is goodness I mean the fact that this man took seven shots last night is absurd Shout out to max juice great pass buddy I didn't know he had this in his bag Yeah, since winter streus and dunk and robinson these guys are making plays off the dribble throwing lobs now Just running the the dho right into the pick and roll like goodness. They're coaching those guys up over there Yeah, it really is kind of fun Williams when it rains or pours Look at this. We get to go back in time a little bit some Lakers nuggets. I know I like this. This is fun I don't want to I don't want to hate but this is absolute downright gold-tending The ball is really going down. I feel like no one even really complained about this or took a look at that But that is the definition of gold-tending Bill Russell is physics Bill Russell is rolling around because you got to keep that in bounds. You got to keep that in bounds for your guys There's I'm with Taylor. That's it's clearly gold-tending It looks really clear It looks cool, but that and listen it was a great play But the fact that none of the referees see this and they're all looking right at it is pretty shocking By the way, if the basketball gets blocked to me in the stands in row three, I'm leaving They're not gonna track you down quick enough. I'm out of there. I'm not giving them back For the basketball it's baseball rules. I take it with me. Have a nice day. Yolk itch this This is what dreams are made of My goodness. I love it. How is that even? You know, it's you know, it's bad when that man has a family is a is a three-pointer How crazy These have been posters and bodies all year long and now we got this guy doing this and by the way He's had like three or four of these which is just yeah That's the craziest part is he's that like he did this in game one You do this in horse everybody in the court gets mad like all right and it's over ad like it's not just oh It's a fun shot. No, it's just it's everything. It has everything you could possibly want It's it's more offensive than him dunking on ad It's way more offensive and game one and game one ad laughs, right? In this video right here, he just shrugs his shoulders. He's just like whatever bro. Like he just moves on started getting up the court It's like a soccer throw in and it's just great cash That's a good call.  I want to see like a video of him in the practice So they like like rehearsing these shots like doing them over and over because there's no doubt he does I'll watch that. I'll watch that video guys. That's it for us today. We are off Monday for the holiday Enjoy that but we will be back Tuesday and Wednesday and Jaqueline Nandale making an appearance Spurber spur got to get that in. See you next week