Now you guys just got that secret in-class information on the midterm.  Okay, so we've seen that a type system, right, so a type system, a developer has specific types and a type system defines basic types, right, and then the type system also allows the programmer to create and construct new types using these basic types. So here we have some types that are declared based on we're defining type centimeter as an integer, we're defining an RGBA as an array of 0 to 4 of ints, and we're defining a PNG as an array of RGBAs. And the important thing where we left off what we were talking about is specifically types, types with no names, right? So anonymous types are types that have no name, right? So for y here, y is a variable here, the type of y is a structure that has a field int a and another field character b. What's the name of the type of y? There isn't one, yes, it's anonymous, it has no name, right? The difference would be if we declared some type called foo, and we said that foo is a structure like this, and then we said y is a foo, then we know y's type has a name called foo. So this becomes important when we start talking about how do we decide if two types are compatible or not, right? How do we know if two types, so for instance, when we do assignment, right, what is allowed by the type system and what's disallowed by the type system? So for instance, can I do a equals b? Well, just by looking at this, you have no idea if this works, right? So what if a is an int and b is a float? Do you do that? One is more extensive than the other. What's a pentagon? Is it a trunk at the floor? Doesn't it depend on what's allowed in the system? Yeah, so this is the big thing, right? So in C, is this allowed? You get that loss of precision. I think it's just trunking. I actually don't think it would work. I don't think you can go from a float to an int without a specific cast. I think you can do it and do the specific cast because you're losing information going from b to a, right? You could do it without a C. What was that? You could do int to float and C. Yes. Exactly. So then if we flip them, right? So we say a is a float and b is an int. I don't know if this would work. Can a float hold up to 2 to the 32 or 2 to the 31 integers? Test it. Yes? Somebody create that open. Yeah, I should test this. The important point is that it really doesn't matter because the type system itself has to define if this is allowed and good. And a, if it's allowed and b, what are the exact semantics of doing this, right? In some cases it makes sense, right? Assigning a character to an int makes sense because a character is only 8 bits, right? So it's 2 to the 8th, so we can store that value inside an int. But we actually want to allow a programmer to do that because from the type system, characters and ints are different things, right? I mean, if you think about it logically, right? Why would I want to treat a character, an element as part of a string as an integer? It seems kind of weird. So type compatibility. Type compatibility is the rules about what's allowed and type inference allows us to say what are the types of expressions or some other constructs. So how do we infer types? So this is exactly what you're doing in project 4. For project 4, you're automatically inferring the types of variables in your program based on their usage. But the compiler has to do this as well for other types of expressions, right? Like what's the type of A plus B? It's an assumption. Yeah, we have no idea. We don't know anything about the types. But there must be a type of A plus B, right? Because you can assign that to another variable and you want to know if that type checks. So there needs to be the expression A plus B, right? Has to return some type. And so if A is an int and B is a float, what's this going to return? So A is this going to type check? What do you mean by type check? Is it allowed by the type system? Well, it depends on what rules. In C, yeah. In the project it's not, right? Correct. In the project it's not. What about C? Yeah. In C it is. And what's the type that it returns? Float. What is it? Float. Float? Yeah, so it's automatically going to convert that int to a float and then return a float. But another language is like ML or OCaml. This will actually throw an error. You can't add an int and a float together. You have to explicitly convert from an int to a float. So is this, I don't know, is this good? Do you think that would be a huge pain? Yes. Yes. What? Could it prevent errors, right? Where you mistakenly are adding a float to an int but you really didn't want to do that. You thought that A should have been a float itself, right? So there's this very weird trade off between when things are implicit like this and just work like A plus B, well your, yes it's easier in some sense to write a program but it could cause errors in your programs. What about A times B? If A is an int and B is a float, what does it return? What does it return? Probably a float again. What if A is a string and B is an int? You said in Python you can do that. I did say in Python you can do that. Yeah, that's the next thing. Right? So it depends on the language, right? The language has to define what does this mean? You can do that in Python. Yeah, it's an error in most languages and it returns a string in Python which still bugs me. It's actually really useful but it's super annoying because it doesn't make any sense conceptually. Like why is string multiplied by an integer means repeat that string that many times like that, yeah. You're asking why would you want to do that? Oh, I do it when you're doing like security testing and stuff and you want to see how big like a buffer is. You want to pass input to a program and you give it consecutively larger and larger inputs. And so with this you can use just like an A times whatever number and you can just keep increasing that number to get more and more input. So it actually is really handy in those cases but these are one of those really weird corner cases where it doesn't make the code any more readable, right? Especially if you have variables, right? If it's A times 10. Okay, then maybe I know A is a string but... And JavaScript's even worse. You can do this in JavaScript. I believe it will try to figure out, it'll try to look at A, see if it can convert A to an integer and then do the multiplication. So it'll actually try to see if you pass the value as like if the string of A is 10, it'll interpret that as the integer 10 and the new 10 times B. And then if not, I don't know if it returns zero or not number is really crazy, so. And we've seen this is kind of a... So this is just about type inference saying that the expressions, right, have to have some sort of type, right? That way you can make sense of them. This is why in project four when we say something plus something, so from plus it's defined for everything with integers with ints, right? Something, an int plus an int returns an int, right? That's the type of that expression. So that's part of type inference. Okay. So the main question we want to answer with type compatibility is, are these two types equivalent? Right, so let's look at some examples to try to understand, well, this seems like a trivial problem, right? It's really easy to see if two things are equal, right? So let's say we have a centimeter, a type centimeter, so we're defining, we're constructing a new type called centimeter that's defined as an integer, and we're defining a new type inch that's defined as an integer. And we have variable X which type is centimeter and variable Y whose type is inch. So we can say, can we say X equals Y? We guess they're both integers. Types are not. So I want arguments for one side of the other. So should you be able to do this and if so, why? Or should you not be able to do it? I'm going to say no because at the time of type checking it's going to look at X and say this is a centimeter, look at Y and say this is an inch, they're not the same, can't assign. Okay. But I mean, like, okay, when you, characters work like that though, because a character is the underlying type of a character is an inch, right? It's a byte, actually. It's only because it's a smaller inch. So it's eight bits, or is it an integer if you do 32 bits. But are there primitive types that have, like, underlying types? Float and inch are both 32 bits. Okay. So I mean, in this case they are the same underlying types. So they should be able to do this. So you should be able to do this. I mean, unless it's like mission critical, in which case not. Unless it's mission critical and you don't want it to happen? Well, yeah. So the compiler should know that this is mission critical code. Well, in most languages, those two are not types. So like, I guess the person defining them should have a way to make them unequal. Yeah. I think you should be able to do this because centimeters and inches are not the same thing. So if you set centimeter equal to inch, it's just not going to be right. For example, if we have one inch and set x equal to it, it's still not actually one inch. It's one centimeter. Yeah. So what do you want to happen as a programmer? Yeah. Not. Wait, as a responsible programmer? What other kind of programmer are you? Are you an irresponsible programmer? You could make it do the conversion for you. That's true. You could make it do the conversion for you. Interesting. Well, that just depends on how the assignment operator works under the hood. Question about the potential of a test. Like, when you ask something, is this valid, like x equals y? And like, do you want us to answer that question yes or no as in like, in the C languages? Is this a valid thing? Yes.  This is a discussion question, not like a test question. We'll see the different types of type equivalents. And then I'll ask, hey, would this be equivalent in name equivalents and structural equivalents and the different types of equivalents? Yeah. Anybody else have any other thoughts on whether you would want this or not want this? Well, this kind of goes back to the previous question. We asked earlier, you know, into flow, flow to N. Only one of those is actual support. And that's more a language specific thing. Right. So in this case, I mean, in that case, an N and a flow are both numbers. So they're easily convertible. I mean, an inch and a centimeter are not, they're both measurements, but they're both very different numbers. They have different conversions. Are they easily convertible then? They are easily convertible, but that has to be supportive of them. There you go. We don't know if it's supportive. So there's a couple of issues at play here, right? One is the developer is creating these new types. Right? So, yeah, I agree with, actually, you guys have touched on a lot of issues, right? So I agree with, from a programmer's perspective, this should not, we do not want this to just happen. Right? Because we don't want to be able to just, one inch is not the same thing as one centimeter. Even though it's the underlying system, it's representing, you know, to the underlying system it's representing it as integers. Right? I mean, to the underlying system, everything's ones and zeros, right? So then we don't need a type system. So this helps us not shoot ourselves in the foot, because here we can actually define a new type as centimeter, right? And we know that anytime we assign it, we're only assigning centimeters to centimeters, right? As opposed to being able to accidentally assign inches or feet or whatever other kind of value we have. Actually, the comments on automatic conversion is actually very good. There's languages like Scala do, you can define new types, and then you can define, it will actually, I think if it sees something like this, it'll try to look and see if there's a function that will take in an inch and return centimeters. And so it'll try to automatically convert for you between those two values. I think maybe you have to specify exactly what those functions are, but yeah, it's kind of nice because you can say, you can use this, and that way anytime you use a centimeter or an inch, you don't have to worry about the conversion between the two. I also feel like that could backfire rather magnificently if you weren't thinking too hard about it. Lots of things get backfired. If it's trying to use the wrong function or you've previously defined a function incorrectly, I mean you can dig in through. Oh yeah, it's kind of the same argument against C++ and operator overloading, right? When you look at a program, it's really hard to know what functions are going to get called because this equal sign may actually be some really complicated function that gets called and all these other things. Actually that also brought up a good point, right? So centimeter, can you actually convert from centimeters to inches without losing precision? Not as an integer. Not as an integer, right, which is how they're defined. So that's another interesting point. So, the main thing is, this is trying to get you to think about what does the language do and how is that good for me, the programmer, right? Is this actually the behavior that I want? So we're going to look at, I believe three, this is why you should never number things. We're going to look at some different types of type equivalents. So the first one is the very kind of easiest example and it's name equivalents. So just using your powers of inductive reasoning, what would you think it's going to check for to say that two types are equivalent? The name of the type. The name of the type is equivalent. Yes. So they must have the exact same name to be equivalent. So, in this case, if we have a centimeter and an inch and we say, can x equal y, would this be allowed with name equivalents? No. No, because it's checking the exact names of x and y and say, okay, the type of y is inch. The type of y is centimeter. Those are not the same type. Therefore, this is an error. We can't do this. Do you want us to print out an error? No, I want you to know how to use this name equivalence to be able to look at type definitions and say whether two types are equivalent or not equivalent. So where is this? So this seems very straightforward, right? Okay. Where is it tricky? So there's one thing that we talked about in this sentence. So let's think about it this way. Do all types have names? Unnamed types. Not unnamed types, close. Anonymous types. Yeah, that's the specific word for that. So we want to look at another example. So let's say we have a, which is an array 0 to 4 event, b, an array of 0 to 4 event. So we want to say is, okay, so yes, we're declaring a variable a that's an array 0 to 4 event. We're declaring an array b of array 0 to 4 event. So is this allowed a equals b? Well, we have to make an argument for one way or the other. Based on what we just learned about name equivalence. No. No, I know. I think it is. We'll think about this in terms of c. Maybe you're just pointing this. You're just assigning the pointer. So technically. I don't think about it in c. I want to think about it a bit more abstractly using what we just saw. Well, neither of them have names that technically do. I guess that is the philosophical point. Okay. Types must have the exact same name to be equivalent. This is what type name equivalence means. Right? The types must have the exact same name. So what are the types of a and b? Array. Array. Array. Array. Array. Array. Array. Array. Size of the array. Is that part of the name of the type? Yes, it's part of the type. Okay. Yes. So the type of array specifically has the size or the range we call it. And then the type of each of the elements of the array. So they're both in. It's close. Yeah. So these are both anonymous types. Right? So the type of a is anonymous. The type of b is anonymous. What does it mean for something to be anonymous? Has no name. So if it has no name, can it have the exact name to something else? Well, technically, they're not a name. And not a name is equal to a not another name. So I guess. It really just depends on how you define it. It does, but I'm trying to guess the thing. You're fishing for a specific answer. If somebody was anonymously wrote, let's say, feedback to me or something on your reviews, if I get two pieces of anonymous feedback, I wouldn't say, aha, these are the same person. How do you know? I don't, but I can't assume that they are. This says they have to be exactly the same name. So if I have two types with no name, that could be the same, but they could not be the same. So in the case of anonymous typing, we have to assume that they're not the same unless specifically defined as the same person. Yes, specifically for name equivalents. So name equivalents, they have to have exactly the same name. They don't have names, so therefore you can't do equivalents on things that have no names. So this is not allowed under name equivalents, right? But is this what you want from your type system? Sometimes. That's not really enough. Was that enough? It's not enough. It's not enough? And not enough in what sense? Capability. So we would, I would like the ability to say that these two arrays are the same type. So it needs to be able to figure out that, oh no wait, even though they don't have names, they're, when you look at it, they're the same. By any means, some sort of signature. Right. So it's, the thing is, yes, so they're, they have no names, but they have, well okay, well it's actually, we're going to look at some other things. We're going to get back to this about, sometimes the structure of them are the same, right? Okay. Let's, okay, so on that example, right, we had A is an array, I'm just going to say array of int. So I have a variable A as an array of int. So what about, and here I had B is an array of ints. Does the size not matter in this case? Yeah, for space reasons I'm not drawing the size. Okay. So what if I declare, so we saw in project four, right, in a lot of programming languages, you can define a variable kind of on the same line, right? So you can say that, well I have variables, let's say A and B, and the types of A and B are both arrays of ints. Should A and B be equal here? Why? Because we define them on the same line, they're in the same state. Okay, so we define them on the same line so they should be the same type, right? I mean we're saying, like if we say, I don't know, X and Y are both ints, right? We should say X is equal to Y, right? So can we do this under name equivalence? With the integers yes, with the arrays not smart. X and Y yes, because the names are identical, right? The name of the type is int, the ints are identical, yeah. Can you just give the type array of int a name? Yes, so that's one way we can do it, definitely. So we can say, like in our language, we can say foo, the type foo is an array of ints. And then I can say, well A is a foo, and B is a foo, right? So then can I say A is equal to B under name equivalence? Yes, because they have the same name, exactly. But what if we go back to this case? So by name equivalence, right, what's the name of the type of A here? It doesn't have one. It doesn't have one, and the name of the type of B. Also anonymous, doesn't have one, right? Under name equivalence could be different. So under name equivalence, we cannot do this, right? So it's an error. But does this make sense? Okay, it makes sense for a name equivalence, which is good. But is it what we want? No. No, right? Because we're defining these two. So what's the big difference between these two? They're independent statements. Right, so here up top, I'm declaring a variable A, and then maybe 100,000 lines later, right? I'm declaring some variable B with the type of array of int, and it just happens to be that they have the same type. But here, I'm declaring on the exact same line, I want two variables, and I specifically want them to have this type array of int. That line says that they're both the same signature. Same type, the same anonymous type, right? So there's still no name here, but because these are declared on that same line, as a programmer, I'm basically telling the compiler, seriously, these have the same type, right? How do they not have the same type? They have the same line, right? So this gets to the next type of equivalence that we're going to talk about. So we just saw up, right? So under name equivalence, this is not allowed because this has no name. But it doesn't make any sense, because we're defining variables, multiple variables, and we're saying these have exactly this type. Okay, and we saw this. We can say we can do this, right? Because we've both given a name to this array, and so now we know, great, these are definitely the same type. Okay, so the next type of equivalence is internal name equivalence. And this is kind of a little bit peeling back the hood of the compiler just a little bit. The basic idea is if the program interpreter, so the interpreter or compiler, would give the same internal name to two different variables, they share the same type. And this specifically covers this case, right? So internally, just like you know you're doing project four, internally you have to have some way of representing the types. And so when you see a new anonymous type, you're creating some new type for that new anonymous type. So the compiler does exactly the same thing. When it sees this line, it sees, okay, new anonymous type array, and okay, A is also this type and B is also this type. Then when it sees this declaration C, it's going to create a new internal type for this array zero to four of it. Because it's an anonymous type, it's never seen it before, so it has to create some new type for it. So with internal name equivalence, now can I say A is equal to B? Yep, yep. Why? Both array side zero to four. Yes, internally they have the same internal name and we know that because they're declared on the exact same line. And it actually follows more closely of what our intent as programmers are. We're declaring that these are exactly the same on this line, so we should be able to do this. But can we do A is equal to C? No. No, because the compiler's going to give this a completely different name because it's a brand new anonymous type that's never seen before. Questions on this? Equivalence, slightly more expressive than our low, I guess, less restrictive than name equivalence, right? So it allows you to do this. Any questions? Here. 15 minutes, nice. But I guess we still have to ask the question, does this really make sense that A and C I can't assign them one to the other? Not really. Yes, but it's not what we wanted to do. They're the same. Yeah, I mean it makes sense in some ways, right? It goes back to the same argument with inches and centimeters, right? We're using these arrays for completely different purposes, right? And so I want them to never be able to assign to the other. But it also makes sense that, well, really they're the same things. They're structurally exactly the same, right? You could copy, you know, the size of each array, so you could copy every element from C to A, and then you successfully copy one to the other. So this is where we get to structural equivalence. So the idea is the compiler is going to try to determine if these types are structurally equivalent, so if they have the same structure. So we build this up, we have a series of rules basically. So the first thing is, right, built-in types are the same built-in types are structurally equivalent, right? Makes sense. That's kind of, if you think about this, this is a recursive definition, so this is our base case, right? So at the end of the day, we're going to have built-in types. Then any pointer to structurally equivalent types are structurally equivalent, right? So in this case, in structural equivalence, right, I have centimeters, I have inches, these are both the same built-in type, right? So this is a loud-in structural equivalence, which as we'll see gives us some nice properties, but it kind of also hurts us in this way. So for pointers, right? So I have, yeah. Shouldn't the equivalence kind of be hierarchical, I guess? So the very first thing it looks for is your name equivalence, which in this case, it would pass, and then that's where it stops. But if it can't name equivalence, then it goes to the internal type of equivalence, and then it goes to the structural equivalence. You can think of it like that, but it's not what's actually happening. I mean, so for two things to have the same name, they're going to be structural equivalent. And for two things to have an internal name, they're going to be structurally equivalent. So you can kind of think about it both ways, right? So the structural equivalence rules kind of imply those other ones, right? Or, sorry, the name equivalence implies structural equivalence. Again, that would be a good check, I guess, on the test or something. Because they both have integer. But these are not name equivalent, right? So that actually doesn't show here. But if you have two integers, right? Two integers are name equivalent, and because they're name equivalent, they must have the same structure, right? And if two types are internal name equivalent, they also must have the same structure. So let's look at pointers. So we have an int star a and a float star b. Are these structurally equivalent? So we first have to peel this back, right? So we first check, and we say, okay, a and b are both pointers, right? So that's structurally equivalent. But, as we saw in this rule, pointers are structurally equivalent only if they point two the same, point two structurally equivalent types. So we see they're pointers. Yes, okay. That's structurally equivalent. And then we see, okay, but this is an int. Int structurally equivalent to a float? No. No, because only built-in types are structurally equivalent. So this would be not structurally equivalent because the int and float are not structurally equivalent. Now a big problem becomes, so basically what we're doing here, all these rules are going through all the type constructors, right? And saying, okay, here's how you create new types. Here's how you construct new types, and here's how you can tell types are structurally equivalent. So now we need to do, so how do we determine if two structs are structurally equivalent? What do you think? What makes sense?  Yeah. To look at the elements of the struct and see if they're the same, and if they are, then you treat it just like you did with the pointer. Yeah, so elements of structs are the same, right? So you could say, well, what about the elements of the struct? They need to be of the same type. Yeah, so you need just the same type where you've got a bunch of ints on one and one ints on the other. They're the same type. Same type, same quantity, same order. They need to be the same struct. Wow. Well, I guess they had to be the same order if a struct is made of multiple primitive types. But even then, I don't know, I don't think they would be the same order necessarily. We assign structs type names, and that just handles this for us because if they have the same type name, everything inside should be the same. Yes, so if they have the same name, then they're name equivalent, right? Which means they must have the same structure. But like in the previous cases we saw, we want to see if these two types are structurally the same. So we have to assign one to that. Exactly, yeah, so we don't have that. They're two anonymous types, right? We have no idea. In the internal structure, every element has to be name equivalent to the other structure. So if it doesn't necessarily have to be the same order, but if it's two n's in type A and A and B in both structures, regardless of what their order is, then they're the same. Yes, let's think about this. So we have two structures, right? So we have structure two, which has fields x1, which have type w1, and we have structure two, which has fields y1 through yk, y1 through qk, right? So the first thing that makes sense, right, is that the number of elements of records in the structure, fields in the structure have to be the same, right? So that's why we have the k here. So k means they have the exact same number of fields. So actually, well, a couple different ways to think about this. So we say that, okay, two structures are structurally equivalent, and now it really depends, right? So there's actually two ways to think about this, right? What is a structure? Is a structure, are the fields and the field names of the structure more important than the order? What do you mean by that? Fields are defined in. Let's think about this. We'll give it a name. I have an int called A, and I have a, well, something that's definitely not an int. Charm. Yeah, I can find it. There we go. So I have struct foo, and I have a struct bar. So, are these structurally equivalent? Arguments for both? Yeah. So when you call upon elements of a struct, it doesn't really matter where it is. You just call struct. whatever you're looking for. And in array, in array it matters. So I think you think of a struct kind of like where it has an index, and it's in a specified order. That does matter. But is the name just an alias for the index? I don't know. Yeah. These two structs could potentially be different sizes based on the length of the string. Ah, let's say that the string is like a current pointer, so it's only a fixed. But yeah, that is a good point, right? If that was a dynamically sized thing. Yeah. I'm not even on the language, I would say, but to be honest with you, in C, I don't think these two would be equivalent because I would say a thrown error that this struct, if you would like put them as equal, you would say error because it's expecting struct with int string, and you gave it a struct string int. So that would be an error in C. And like for example, in C, struct would be the same thing. But there are languages in which if the int a and int a in both situations is the same and then the string are the same length as he said because the length could be different. Okay. If you see other equivalent and then you try to use a byte offset instead of like an arrow or the dot to access the new current other problems, you'd have to like disallow that. Yeah, okay, so this is actually where we get what is a struct. Abstractly, a struct just groups types together. And it gives us a way to reference each of those grouped types. So actually abstractly I would say that yeah, you'd actually kind of want these maybe to be the same type. The problem is once you can start thinking concretely about how this is actually implemented. So in C, a struct is just a contiguous chunk of memory. So if we said that the string was actually a char star, this would be 4 bytes for character pointer and then 4 bytes for an int. Right? This is contiguous memory and the other way, right, we have an int followed by a character pointer. So in C, the way it's actually implemented, the names mean nothing. It's the order that means the most. Because this character pointer the int is essentially it's kind of like thinking about it as an array. The int is the second element of this structure. But the int here is the first element of this structure. So I'm trying to assign these to each other or copy one to the other into the memory is going to completely mess things up. It's like a key. In what sense? Which is the key. They're both different keys. They're both, so the problem is the order here, right? So this is the way we're going to think about structs, is this kind of C style where the order of the elements in the structure matters the name. In fact, the name doesn't matter at all. So in our structural equivalents these would not be structurally equivalent because the order is different. But if we had let me get rid of this guy the order is the key. The order is the key, yes, and only the order. So if I had some struct bar that was an int d and a string e would these be structurally equivalent? Yes. So they have the same number of elements and each element the types are structurally equivalent. We have an int, we have an int, we have a string, we have a string, these are structurally equivalent. So though they are structurally equivalent, what if you don't want them to actually be able to become equivalent? You can't. You have to have some way in your type system to construct a new type that is different from an int. Kind of like a new basic type in some sense, but in structural equivalents just not its own you could. More the ideas looking at this idea of how do we define if two types in this sense, but also data structures kind of, if they have the same so this is exactly what this says. Structure 1 and structure 2, they are structurally equivalent if and only if w1, which is the type of the first field, is structurally equivalent to q1 and the same thing of w2 is structurally equivalent to q2 and so on and so forth all the way to wk and wk and qk. So just matching the types notice we don't say anything about the names of each structure. We don't care at all about the names here. So, we've seen here we have a structure A which is an int followed by a float structure B which is an int followed by a float so if we declare a variable A called foo and a variable bar with type B we say can we do foo is equal to bar? Yes, so specifically note, even though the names are completely backwards and weird the types are the important thing here and the same thing as we just looked like we have an int and a float and a float and an int because the order is the important thing here these are not going to be structurally equivalent. There are compilers that will optimize the order of structs so that they don't waste memory Usually no. Well the size would still be similar to what we were Yes, but oftentimes you need to be able to cast a random memory into a structure to be able to interpret that so that's like a lot of the networking protocols when you get a packet you cast it to that struct because you know the first two bytes should be this field and the next three bytes are this field so you represent it as a struct but really it's just a sequence of bytes that came off the wire and so that's how you actually interpret it so oftentimes theoretically they could but I don't think it's C and it could be a keyword you can specify that says like never change structure is layout yeah okay and so arrays are done very similarly so if we have two arrays T1 which is an array of range 1 and T2 is an array of range 2 we'd say they're structurally equivalent if the ranges are the same the ranges have the same number of dimensions and the same number of elements which makes sense and T1 and T2 whatever are inside the arrays are structurally equivalent okay so the sizes are the same and what's inside them the order doesn't really matter right because everything inside an array is the same type so we're saying that the type of everything inside both arrays must be the same so the last thing functional equivalents so we say that two functions are functionally equivalent if so we have two functions right what would you guess what are some of the conditions here yeah if the types and the orders for the parameter list are the same and if they return the same thing yeah right it follows very similarly right so A it has to have the same number of parameters right so we have to have K so the same number of parameters and all the types of the parameters are structurally equivalent right in the order and the return types are structurally equivalent cool it's an extension of an array it's an extension of an array kind of actually you can think about an array that is a function that maps an int to the type of the array but okay so when we come back, oh god it will be next week we'll do how to determine structurally equivalent because we'll see it's actually not as straightforward as we just saw because we can have recursive types or types that refer to other types that refer to the factor themselves so how do we determine structurally equivalent tonight


While India has been itself battling terrorism for many decades with great resolve, these proposals have been framed with the interests of the entire international community in mind. It is time that all nations walk the talk against terrorism and commit themselves to the goal of zero tolerance.


The team keep it clean before we get into this video. I gotta let y'all know we're good as far as everything with the hurricane We're good. We're straight Feel like we got like a million messages over the past like 24 hours Which I really really really really really appreciate a lot of people just checking in making sure everything was straight Hoping that everything will be straight and I appreciate y'all we're good But at the same time, it's a lot of people that are not good So if you got people in, Florida in south, Florida in central, Florida Northern Florida wherever in Florida Check on them. Even if you didn't hear about their particular area being impacted by the hurricane Please check on them because a lot of people lost power a lot of people lost their homes There was a lot of flooding in a lot of different places so please check on them because They will really really appreciate it because a lot of people they lost a lot and they need like all the Encouragement that they could possibly get and whatever support you can offer if you can be there physically for them Do that if you can be there monetarily for them do that if you can just be there emotionally for them Do that because they needed a big time, but I love y'all. I really really appreciate y'all Because y'all care like like we always talk about team keeping clean. They just for YouTube videos It ain't just for the it ain't just it's not just for that. It's like a family man So I appreciate y'all a whole lot and they will appreciate y'all just as much if not even more For the ones that are really suffering right now. So check check on your people throughout Florida, man I appreciate y'all now On to good news. Well slightly better news Oh, I got a got an issue apology to got an issue a pilot an apology because the video yesterday I did something different with the settings when I edit the video and it just It didn't turn out good the one about the Ronnie Stanley slander that episode of question from subs It was just yeah, that was really annoying to me when I because and it's funny because every single video that we upload Especially the edited ones are always watched them first before I upload them and that was the one time I decided not to watch it like you know, let me just upload it and stuff like that happened So my apologies. I know that was probably very annoying to watch for me. It was very annoying to see Cuz I'm over here talking like this and the words are coming out like two seconds late It's just really really annoying and I'm no perfectionist as y'all know We are definitely not a perfectionist, but that was just very annoying to me because I just don't like stuff like that Now a positive note before we get to the sad stuff Lamar Jackson he won AFC player of the month not the week. He should have won the week He should have won the week a couple times But he didn't win a FZ player of the player of the week, but he went off AFC offensive player of the month So shout out to Lamar Jackson for that That just just continues to show man. He's been doing this thing Through these first three games of the season just been killing it and we hope that he gets even better We hope that stuff gets even better Because if it got even better than what it is now And we know not every game he's gonna go off like that I mean, we hope he does but we know it's gonna be some games where struggles a bit more Defenses may play them a bit differently and Raven may not have all the answers for it right away But it's it's part of the season. It's part of the grind. It's part of making adjustments It's part of him doing this thing. It's part of just everybody. So That's cool. And one last thing before we get into the bad news I gotta say y'all y'all gotta chill out me Y'all gotta chill out Because we got a new team keeping clean channel member shout out to my guy Lou King Lou shout out to you and shout out to your son But then we got another Flex flex game be no He decided like hey, you know what?  So I'm like man Yeah, y'all got to chill out with all the support man Yeah, y'all be going crazy with support man like crazy with it But I appreciate y'all a whole lot man y'all y'all just every single day y'all just kill it with support man Whether it's becoming a patron whether becoming a channel member whether just watching the videos Taking the time out of your day every day to watch the videos There's a lot of people that I see that comment on every single video some people come in once in a while And some people come in every day some people come in once a week once whatever but I appreciate it And thank you all for leaving likes on the videos too because that really helps spread the word. All right, so We've been talking about a lot of other stuff, and I love y'all so much. I know it's gonna be somebody Oh, hey, what didn't you get to the news buddy? But we're here now so John Hall ball After the game on Sunday John Hall ball He let us know without letting us know This is why I continued to say that with John Hall ball with his words that he spoke about Michael Pierce It sounded like his season was over sound like he was gonna be out for a very long time Because John Hall ball said Michael Pierce. He has a decision to make and Usually when a coach especially John Hall ball talks about a player has a decision to make They usually always alludes to that player needs to decide whether he's gonna try to go through rehab For an injury or just gonna try to have surgery for that injury So Today Michael Pierce he announced it on his Instagram that he would be having surgery for What his torn biceps? So with him having surgery that Puts him out for the remainder of the season So that is a wrap on Michael Pierce for 2022 Unless by somehow some but yeah, probably not no that that ends his year So that sucks that's terrible now that is a bad news Michael Pierce in my opinion has been probably the most underrated signing of the Ravens free agency Now I said underrated. I did not say the best signing. I didn't say the flashiest signing I didn't even say the most impact signing even though he's been really good He's been impactful But I think he's been the most underrated signing can't call markets we was underrated signing because that was 70 million dollars So you signs about even 70 million dollars you expect him to make 70 million dollars worth of place but With Michael Pierce, he was very underrated and a lot of times and I've told y'all this before When I reflect back on Ravens all season a lot of times I forget that they was they signed Michael Pierce Like I remember even During the preseason Well, I think it was week one and They it was on the first drive of the preseason. I forgot who the Ravens played I feel like it was so long ago because we in regular season now we going in the week for but anyway Ravens were playing whoever they were playing a week one of the preseason and I saw this defensive lineman He was all over the all in the backfield I'm like, man. Look 58. Who's that? Oh? That's Michael Pierce, man, I forgot all about him and He has been disruptive. He's been making noise.  It's a terrible situation Because he was uh, he was a welcome back party He he left Baltimore a couple years back went to join the Minnesota Vikings It didn't work out there. I know he sat out for the covert year Then he has injuries and whatnot and the Vikings are like, uh, we're gonna go in a different direction and then He ended up coming back home He ended up coming back home to the Ravens where everything started and he was off to a really really really really good start And now that's a wrap It's over It's finito. It's done So you got a feel for Michael Pierce, man, you got a feel for him mentally Because when you go through a process like that, you're like, man, I'm gonna take a chance on myself I'm gonna go jump out here See we'll see what else the world has to offer the NFL world has to offer you go to a new team And then things just don't work out and then you have an opportunity for redemption And then when you get there and things are going smoothly now it all comes to a crash So that that's really unfortunate for for Michael Pierce. It sucks for him But now what did the Ravens do because I know of course, there's a saying that Ravens fans I'm sure are tired of hearing and I know we are very tired of hearing this saying But it is what it is next man up next man up So who is the the next man up or next men up? Well I Feel like Travis Jones who who just came back from injury played in his first game last week against the Patriots He is going to go through an extreme growth process That what he wasn't expected to take on this large of a role But his role will certainly be increasing a lot a whole lot He will have a lot of a lot more added responsibility put on his shoulders Simply because he will get a lot more playing time. I believe he played like 29 snaps this past week So I would expect that to double So Travis Jones, he's gonna be called upon to hey rookie You still a rookie, but yeah, it's time to really grow up now Justin Matabique Anabique who's um, he's been making some plays this season First game he was loud second game. He's a little bit quiet than a third game.  He's already relied upon a lot So his role his role won't be changing But the Ravens also have some options. They got some options on to where they could end up getting some help So I would expect them with Michael Pierce being a Having a surgery. I would expect him to put him on in reserve Probably today at the latest tomorrow, but I don't think it will happen probably today So we'll see how it goes, but um, it's tough But they could uh, they could dip in free agency as well They could go to the practice squad first I know a popular name that's been floating around as far as giving the Ravens help is Isaiah Mack So that could be an option But if they feel like hey, you know what we want to bring in a veteran too because we got a lot of young guys Young guys that can make some plays, but we still want that veteran presence at the interior of the defensive line You got some options out there. You could bring back another familiar face That be being Brandon Williams Not even though that that might get a little awkward like hey Brandon Williams welcome back. Oh, hey y'all hey I'm glad to be back. What y'all still got my jerseys my 98 and Travis Jones gonna be looking like So we'll see how that goes, but oh well, maybe we'll see how it goes. Maybe not but you know what Brandon Williams, um Last year just it was it was kind of rough It was not his best year We saw a lot of decline. He was never a pass rusher. So that was never expected, but even in run defense You saw this this decline there So I wonder if Ravens will take that into consideration Or they will continue their reunion party that they really been trying to have this year Remember they try to they try to bring bags there and spit to it. Hey, come on. Come on. Come back Come back home, baby But yeah, that didn't quite work out so well, but it's all good, man um There's a domicant suit to That's been a name that he hasn't retired. So he's he's still out there I remember I heard he was talking to the Raiders or the Rams before I think of the Raiders But that obviously nothing happened with that. So he's still out there So that could be another option for the Ravens if they want to go that route But they they have option. I know somebody mentioned in the video Linvale Joseph Um So Raven's gonna have some options on on how they decide that what their next move is gonna be On the interior of that defensive line, but all the young guys they um, they got a tough task in front of them Ravens run defense. It hasn't been what it was I really rate the Ravens whole defense hasn't been what it was, but they said before it's a turnover So hey gotta take the good with the bed now, and we're gonna be having a video later on probably tomorrow Talking about the Ravens defense specifically and exactly what's going on with it The issues and some possible fixes for it And I'm sure y'all are really really appreciate that because we got a very very special guest on For that video. So that that video is a lot of fun but anyway We'll see how the Ravens end up addressing this thing I would anyway team keeping clean. I love y'all. I appreciate y'all again Remember, please check on your people in Florida. We're good. I appreciate y'all checking on us We're good, but check check on your people your friends your family anybody that you know in any part of Florida Just to make sure they're okay. I love y'all. I appreciate y'all and like Michael Pierce Unfortunately is now for the remainder of the season. We out


Members of the Lagos State Executive Council present, Chairman of the Temple Company, Mr. Tunde Folaweyo, Chief Executive Officer of the Temple Company, Mr. Idris Olornibbe, the management of the Temple Company, honored guests, ladies and gentlemen. On the 14th of March 2021, Burner Boy and Whiskey took the entertainment industry by storm, winning the Grammy Awards, and they established themselves as amongst the best musicians in the world. Burner Boy won the Best Global Music Album category for the Twice-A-Stall Album and Whiskey'd the Real Style Boy in the Best Music Video category for the song Brown Skingle. But the real story is that both guys are homegrown. They started here, blew here, and the world heard them, bought their music, and last week, gave them the highest awards in their industry. An exciting story, but there's a problem. Every commercially successful enterprise or individual, whether in manufacturing or agriculture or entertainment, creates a value chain. That is a chain of people and institutions who make money as they render services in support of the talents or ideas of the successful business product brand or person. That is how economic opportunity and development is created. So for example, cocoa farmers create a value chain. In that chain, you have the processing plants, the chocolate manufacturers, and the stores and supermarkets who sell chocolate products. These are all in that value chain. All of them make money from the work of the farmer. The trick is that the more of that value chain that is local, the more jobs are created and the bigger the nation's economy. In the last few years, the entertainment industry in Nigeria has literally exploded and is potentially a billion dollar industry. And we have many outstanding internationally recognized stars, but for the most part, most of them, their lucrative services in the value chain they have created, are performed abroad. Recording, making promotional videos, etc. are done in foreign studios so that jobs and economic opportunities in the value chain created by our stars are appropriated by businesses in other countries. Now I've gone through this rather long story to demonstrate the importance of the launch of the Ogidi Studios for the entertainment industry in Nigeria and the world and for the Nigerian economy in particular. The Ogidi Studios, we are told, is a world-class creative complex, hosting, recording, film production, animation and writing studios. As the owners of the Temple Company point out, this is a full-scale production studio serving the entire value chain in the entertainment and creative industry. But perhaps more importantly, with the Ogidi Studios, Nigeria now operates on the same level of sound and video technology with the major global players. Now the stars, not just Nigerian stars, but from all over the world, have a place in Lagos that is as good as any studio they have ever recorded in. World-class scriptwriting, music recording, video making and editing can take place under one roof at the Ogidi Studios. The entire value chain in music and entertainment can now be local. So we are at the cusp of a revolution in entertainment production, creative talent services and a major economic opening for businesses in Nigeria. The world knows it and the smart money is already going after the trail. Last year, Netflix opened its first African office here in Lagos and is investing millions of dollars to buy and generate authentic African content on its platform. A couple of years earlier, the Universal Music Group established itself firmly here and there are many others waiting to make their bid for a piece of the action. The federal government also in recognizing the strategic importance of the sector for the growth of the Nigerian economy has introduced several initiatives to support the sector. Last year, the federal government handed over the control of the National Theater to the CBN and the Bankers Committee. The Bankers Committee has committed to an investment of 25 billion Naira as initial funding for the development of the Nigeria Creative Center to be located at the National Theater. These funds will receive support from the Central Bank of Nigeria's Creative Industry Funds Initiative, an initiative that gives financial support to the technology and creative sector at single-digit interest rates. The Bank of Industry also in collaboration with the National Council for Arts and Culture also has a 300 million loan package for the creative sector. The package provides the funds to the sector at single digit interest rates with a turnover of four to five years. The Temple Company, owners of the studios bring a great deal of credibility to this enterprise. The Chair, my brother Mr. Tsunde Folauwio is a highly reputable businessman with successful investments in the oil and gas sector in power and communications. The CEO is my dear guru Idris Oloronibbe, young dynamic entrepreneur and man of ideas with solid experience in government and a brilliant track record in talent and events management. So I'm sure the quality of these investors will catalyze even more investment in this sector. This is rarely the private sector putting its best foot forward in the entertainment industry. The future is certainly looking very bright for the industry and we're all looking forward to the exciting days, weeks, months and years ahead. It is now my very special pleasure to officially commission the Ogidi Studio for the benefit of the entertainment industry and the Nigerian economy and to the glory of God. Congratulations everyone. God bless you.


The Equitable Life Assurance Society presents this is your FBI This is your FBI The official broadcast from the files of the Federal Bureau of Investigation Presented transcribed as a public service by the Equitable Life Assurance Society of the United States and the Equitable Society's Representative in your community Are you one of the millions of Americans covered by social security? If so you will be vitally interested in tonight's commercial message from the Equitable Life Assurance Society The subject is how to build social security into full security Interested then please listen carefully in about 12 minutes to this important message from the Equitable Life Assurance Society of the United States Tonight the subject of our FBI file jailbreak its title The unwilling host The latest issue of the Uniform Crime Survey issued by the Federal Bureau of Investigation Unfortunately shows an increase in the number of crimes An increase large enough in certain respects to call one important fact to your attention All the law enforcement agencies in the world Cannot cope successfully with criminals at the rate society is now producing them However progress can be made must be made Too many crimes reported in the current survey Were committed by those 30 years of age and under and a study of their previous records Revealed a large proportion with the background of crime a background of juvenile delinquency The responsibility for these men and women rests in most cases in the homes from which they came Homes where the parents were too busy Where parental guidance was evaded or never even thought about If you are a parent or a childless but decent citizen look about your community Help improve the moral outlook and character of your younger neighbors The work you do will pay off Will be rewarded in less crime and thus in greater safety for you Tonight's FBI file opens on a busy street in a large Midwestern city a young man walks along the Rove's stores looking at each window for a name Near the corner. He comes to a record shop pauses in front and enters This Jimmy Warren's place. Uh-huh. I'd like to see him I'm an old friend. He's sleeping. Oh Well, if you tell me where he lives, I'll go over living back We I'm his wife. Oh Well, then would you please go back and wake him? Did you want some records? I want to see Jimmy Pardon me. I guess the door stuck wait. It isn't stuck. I Locked it for I wanted some privacy Annie, I think you ought to go up Roy hello Jimmy good to see you again. Why don't you get out? Day before yesterday better turn that thing off Jimmy who is this he was in jail with me Roy, I thought you were in for good. I didn't leave with the warden's best wishes. You busted out. Yeah, that was a general idea Why'd you come here to see you? Well, if you want money, you know What do you want? I'd like to stay here for a while. Roy. We got three small rooms and back It's hardly enough for us.  Oh, hello, Jim. It's caught empty. Yeah Yeah How about a little coffee? It's well, I get it. Yeah, thanks Running into you saves me a trip to your office. What would you want there? We might be on a case together, huh? The railroad police found a freight car in the yards this morning with a man's body His outer garments have been removed and in the corner of the car. They found a prison uniform Turned out to belong to somebody named Roy Carter Carter Escaped two days ago from Sheridan. Hmm. How would the FBI get in on I think you had a detainer on him What for bank robbery? local No, he's never worked this part of the state so far as we know Maybe you're just passing through. I don't think so Why not dick one of the prisoners that Sheridan told the warden that Carter intended visiting an ex-inmate who lived here Any idea who that was no About This torn piece of paper was found in the box car says market Street No address no Probably on the other half we looked for that no trace of it Well, I'll get a copy of Carter's writing have the lab checked to see if he wrote this fine All of you've been in touch with the prison. I wired him as soon as we identified the uniform I asked the warden to send along a list of prisoners from this area Who'd been released since Carter got to Sheridan go ahead and I'll find out about that detainer as soon as I get back to the office Morning, Mrs. Warren. What are you doing out here?  I Like to take chances. What's in the container coffee once I'm yeah, I'll get your cup Where's Jimmy you went out? You sure don't like the idea might be in here much No Just black Yeah Thanks Good coffee Jimmy always says it's too strong. I got an idea that a lot of things is too strong for Jimmy How'd you two ever get together? I Met him right after he got out and put him on the straight and narrow. I Had nothing to do with it. Yeah, and what's with this store? An uncle died and left it to him. Do you have to keep it? He wanted to keep it. How about you? I Do what he says Who are you kidding? When I came in here, I found out who was in charge You want me to tell you what I think Do you what I Think you're in this because nothing better came along. That's not true. Then why'd you want me to stay here? Look, I'll tell you why It's because I happen to be what you're waiting for Is that right? Getting back Never mind just Jimmy Why are you shouldn't be out here? I asked him out for some coffee. Oh Well, I got good news for you Roy. What I ran into a friend of mine Joe Marshall He's got a farm upstate and I told him about you He said you could stay with him as long as you want. That's real nice of you Jimmy But I don't like farms. You can't keep on here cops will nail you sure Jimmy Roy has no money No, was it gonna be Joe Marshall's guests? He can work up there. That'll pay for his keep Don't just arrange Danny Joe's driving up to the farm. You'll meet Roy at the corner of Broadway and Maine at 9 o'clock tonight The essence of any investigation is speed Immediately upon his return to the FBI field office special agent Taylor checked the files He also sent the torn slip of paper bearing the words market street to the crime laboratory Where it was checked against a known sample of Roy Carter's handwriting Wanted notices were run off featuring Carter's picture and fingerprints Late that same afternoon the file room called agent Taylor Roy Carter was wanted by your FBI Upon receiving that message and a lab report on the handwriting agent Taylor hurried to police headquarters to see detective Hopkins Dick, you were right about that detainer. Did you get a report from the lab? Yes, Carter scribbled the words market street on that slip of paper Oh, did you get that list of ex inmates at Sheridan? Yeah, none of them has a market street address How many of them are from around here? Approximately 200 somewhere in other jails and a fewer dad then we get a breakdown of it. I'm having one made up now. Good Detective Hopkins. Mr. Hopkins. I was told to talk to you. Who was this? Never mind that Are you looking for Roy Carter? Yes You'll be at the corner of Broadway in Maine at nine o'clock tonight Hello Hello Jim that was a tip on Carter. He's supposed to be at Broadway in Maine at nine tonight You ready? It's only eight o'clock. It'll take you over half an hour to get there Any come back yet? No Like to say goodbye to her she'll be here before you go Tell me about this Joe Marshall It's real nice guy. Do you know I'm hot? No, I just told him you weren't feeling good and needed a change I'm back here No, I've been waiting to say goodbye to you. I'm glad you did save your trip. What do you mean? I called Joe Marshall's house the guy I'm going away with yeah, what did you do that for? Just checking up. I talked to his wife. What do you think? He's in, California He can't be his wife said she talked to him an hour ago in Sacramento, but I just saw him He's lying Roy. He probably has the cops there waiting to pick you up. Now. Why would I do that? That's a good question Let's try and figure an answer, huh? Look Roy. I'll go to Broadway in Maine with you if it's a frame that wouldn't do me Much good.  No Any Never mind it was a frame, huh? It was a means of getting you out of here That was a sucker move Jimmy all I got to do is And the frame is off In just a few moments we'll get back to tonight's case from the official files of the FBI But right now let's consider the question of family security I want you to meet mr. And mrs. James Hudson a couple with a problem that nearly all fathers and mothers have to face up to Eventually good evening. Good evening mr. Hudson I understand you're worried about how your family would get along if something happened to you Well, that's right. Mr. Keating mrs. Hudson would get social security But 112 dollars a month wouldn't go far with three youngsters to bring up No, it certainly isn't enough to take care of us if jim passed on well and How much more do you think you'd need? I guess it would take quite some time to figure that out No, mrs. Hudson all you need is this fact-finding chart for fathers and mothers Published by the equitable life insurance society now here Let me show you how this fact-finding chart works It's been designed by the equitable society to help you figure out exactly what income your family would need If your husband died suddenly look It guides you every step of the way with easy to understand pictures Every major item of living expense is included so you can get an answer you can rely on Jim we really need this chart. How much does it cost mr. Keating? Not a cent. It's free Your equitable society representative will be glad to give you a copy and after you filled it in He'll be glad to show you how easy it is to turn your social security into full security full security Oh, that's what we need but that's expensive on the contrary With the big head start you already have from social security plus whatever insurance you now own You may need only a very small additional amount of insurance to give you full security So friends, why not get in touch with your equitable society representative soon? Ask him for your free copy of equitable society's fact-finding chart for fathers and mothers That's e q u i t a b le the equitable life assurance society of the united states And now back to the fbi file the unwilling host It is an axiom among law enforcement officers that people get the kind of local police protection they deserve Either good or bad according to the interest they show That point is of vital importance to your fbi and to you Because no agency even one functioning as smoothly and efficiently as the federal bureau of investigation is self-sufficient Tonight's case is an example of the type of cooperation necessary between officers who represent a city county or state and your fbi That cooperation can exist in your community Only if you have an adequate local police force And as a citizen Part of your job is to see that such an organization is protecting you The battlefront against crime is wide Wide enough to cover every corner of the united states Wide enough so that a weakness in any part of the line Will invite defeat Invite an even greater crime wave in the future Tonight's fbi file continues in a sedan on the corner of broadway and main Special agent jim taylor and detective dick huptons are waiting for roi carter Dick it's 10 30. Yeah looks like the tip was bad. I guess um Shall we move? Okay Maybe this was somebody's idea of a joke. I doubt it My feeling is somebody tried to set carter up for us and it didn't work. Oh Well, that's big casino The gym don't turn here. Huh? That list ought to be ready now. Let's go back to headquarters. Okay You seen any part of it? Uh-huh Out of the first 50 names. There were seven ex-inmates not back in jail dead or moved out of town Well, maybe we won't have too many to question Well, if the others call down the same way, there'll be maybe 30 or 35 I know it'll be ready by morning for sure. Yeah, well, it's too late to start contacting people tonight Let's meet for breakfast and get on it then How is he? Well, he's conscious again. Oh good For a while. I was scared about what? That you might have killed him. Oh, I'm sure he'd appreciate that I was only thinking about the police Is it safe to leave Malone in there? I got him tied up Well, I I better start packing, huh? What for? Are we getting out of here? I think we better talk about that What do you mean? Well taking care of jimmy doesn't mean the cops have stopped looking for me That's why you can't stay here. That's right But I better make my move alone And leave me here. I'm afraid so Look, I just saved you from walking into that trap. I know I can't stay here. Honey. I'll be moving fast hitching rides freight cars. Yeah, you have to go that way I gotta go that way. I got no dough Is that the reason you're not taking me? That's a good reason, ain't it? I got a better one for me going along Like what? $5,000 What are you talking about? I can get $5,000. Does that change your mind? Where would you get $5,000? From Jimmy's account. Is it a joint account? No checking. And he'd have to sign a check. That's right I think you could persuade him to do it The following morning Detective Hopkins had a list ready. It contained 34 names These were ex-inmates of the prison from which Roy Carter had escaped Ex-inmates who still lived in that city Now a further breakdown on the 34 names was done They were divided into those living on the north side and those on the south Detective Hopkins and Agent Taylor each took half the city as their assignments And started the door-to-door search for Roy Carter Carter 9 Come in Dick Jim, how are you doing? No good so far I've got five more people to check Where are you? You know if this list doesn't work we'd better give this story to the papers Okay I'll talk to you later Huh? I'm at my next interview Yes, Dick. Oh, sure son Nice catch. Who's that? Okay, Dick. I'll meet you You sign it? Like a little man What time does he's bank open? Nine o'clock You better be getting over there. It's almost that now Don't you think I better wait a while? What for? Oh, it's a pretty big check. If I'm their first customer they might get suspicious They know you're there? Yeah I wouldn't worry And does uh Jimmy have a gun? Yeah Where is it? Out in the shop under the cash register You better get it for me before you go Okay Well, you asked me to get the gun Back door Who uses it? Milkman, delivery boys, lots of people Give me the gun Roy, you're not gonna- I just want the gun You answer the door But why is that? If it's for Jimmy just say he isn't home Go on Yes? I'd like to see Mr. James Warren I'm sorry, he's out May I ask your name? I'm Mrs. Warren Oh, when do you expect your husband? Um, later Maybe six, seven o'clock I never know for sure Do you know where I can reach him? No, he was sick and he went to the doctor What do you want to see him about? I'm from the police Oh I wanted to ask your husband about a man named Carter Roy Carter Who's he? Someone your husband used to know Oh You say you're not sure what time he's coming home? I'm never sure Would you mind if I came in and waited? Well, uh Come on in Don't reach for anything All right Carter Annie, close the door Close it Sorry, we have to meet this way Roy, what did you do that for? He didn't come here by accident He knew something And go cash the check And when you get back, we'll go Doors closed Oh, you work here? Yeah, but we're closed There's another record store on White Street Or on the corner I'm a special agent of the FBI FBI? That's right, man Here are my credentials What do you want? I'd like to see Mr. Warren He's not here A man from the police came a little while ago They went away together No, how long ago was that? About 15 minutes, maybe 20, I don't know I see Thanks very much You're welcome Roy, Roy What's the matter? An FBI man was here Where? In front of the store Want to see Jimmy Is he gone? Yeah, I got rid of him Where's the money? In my purse Roy, let's go All right, this way Why through the back? Just in case that FBI man is waiting out front Hello, Mrs. Warren Roy, it's the FBI Come on, Carter Let go Come on, drop the gun Come on, drop it All right, Carter Now turn around while I put on these handcuffs Roy Carter was convicted in state court for murder And sentenced to life Mrs. Warren was convicted for harboring a federal fugitive And sentenced to a federal prison After the arrest of Roy Carter and Mrs. Warren Special Agent Taylor released Detective Hopkins and Jimmy Warren He had returned to the record shop after leaving Because he found evidence that Mrs. Warren's story wasn't true Her husband couldn't have left with Detective Hopkins Because the detective's car was parked a few doors down the street And so not only was an escaped killer captured But Jimmy Warren was able to do what so many other Ex-convicts are doing today Trying to live their lives as decent human beings Even more prisoners can be rehabilitated if you the public will help The reward will be worth your effort Because every ex-prisoner who rejoins society And lives as an honest member of the community Is another vital cog in our defense effort Our defense of democracy Now just two things to remember About the Equitable's fact-finding chart for fathers and mothers First, it shows you exactly what monthly income your family would require If the breadwinner should die unexpectedly Second, this pictorial chart doesn't cost you one cent Ask your Equitable Society Representative for a free copy Or send a postcard care of this station To the Equitable Life Assurance Society of the United States Next week we will dramatize another case from the files of the Federal Bureau of Investigation It's subject, counterfeiting, it's title The Flying Felon The incidents used in tonight's Equitable Life Assurance Society's broadcast Are adapted from the files of the Federal Bureau of Investigation However, all names used are fictitious And any similarity thereof to the names of places or persons Living or dead is accidental Tonight the music was composed and conducted by Frederick Steiner The author was Jerry D. Lewis Your narrator was William Woodson And Special Agent Taylor was played by Stacey Harris Others in the cast were Whitfield Connor, Georgia Ellis, Paul Richards and Carlton Young This is your FBI is a Jerry Devine production This is Larry Keating speaking for the Equitable Life Assurance Society of the United States And the Equitable Society's representative in your community And inviting you to tune in again next week at this same time When the Equitable Life Assurance Society Will bring you another thrilling transcribe story From the files of the Federal Bureau of Investigation The Flying Felon on this is your FBI Stay tuned for the adventures of Ozzie and Harriet There's fun for the whole family when Ozzie and Harriet come your way next This program came to you from Hollywood