Back to Index

Fast.ai APL study session 14


Transcript

>> Hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, hello, how are you? I'm good, very good, glad I made it, how about you Jeremy, how are you doing? Oh, can you hear me? It's the same thing again. I know, it's all good, it's fine.

Oh, it's all good. How are you Jeremy? Good. Sweet, sweet, sweet, it's beautiful and sunny. Yes, beautiful and sunny. Like nearly every other day. Apparently it's going to be 27, which is pretty good for winter, I've got to say. Yeah. Definitely not the experience of my first 37 years of my life.

Yeah, not 37. This is sometimes closer to the distance from the zero on the number line from the other side, you know. I mean, yeah. >> Oh, I'm having trouble getting, I'm just going to get my screen organized and I'm not quite used to being on a Mac. There we go.

I've also tried buying a, one of the magic track pad things, so that takes some, that's an advising amount of getting used to as well. >> Oh, those are great. >> Things just take a little bit more adjusting than I'm used to. >> What is it? It's a track pad, right?

>> Yeah, it's just the, you know, the magic track pads that they use on Apple devices. I mean, it's just not like that, but I guess I'm so used to using a thumb track pole that I, my brain's like, what is this strange thing? >> Track pad is the most hated piece of equipment for me of computer technology.

Like, you know, I remember the ThinkPods, they had this tiny little like gizmo that you could use instead of the track pad. I'm not sure if you -- >> At some point, I think they called it, yes. >> Yeah, that was wonderful. >> I like those, yeah, they were great.

>> And like, I even hate using the mouse, so track pad is like one level below, but yeah, I'm also in the, in this club. >> Yes, that's good. >> After reading Rachel's poster, I made the jump and like, I don't even think about it anymore. It's -- >> Yeah, I had to change because my RSI was terrible.

That made a big difference. So I'm planning, this might be crazy, but I'm planning to like, power through a lot of myths today. So that's my hope. And I'll just also mention, I guess I'll share my screen. See, I'm already pressing the wrong button on this track pad. >> I kind of got stuck on the end code, which is the t-shaped clip.

>> Okay. I guess we'll hopefully get to that today then. Hopefully we'll get to as many as possible. All right, I'm sharing my screen. You can see it okay? >> Yep. >> Just wanted to briefly mention, oh, that's not good. I broke everything. How about that? Your mic is not as good as the other day, Jeremy.

>> That's why on the other side of my computer. Thanks for letting me know. Okay. Is that better? >> Yes, everybody else is too polite to say anything. >> Yes, people being polite is the bane of my existence. Nothing worse than being polite. >> I didn't even notice. It sounded fine to me.

>> All right. Okay. >> That's amazing that we get along, Jeremy, then, because I'm like chronically polite. >> I know, you're disastrously polite, Ratatoum. >> It's the bane of my existence as well, since I remember. That is complicated. Why on earth do we not have a website anymore? So, GH pages.

So, if you're ever trying to debug broken GitHub pages, if you actually go to the GH pages branch -- oh, there you go. It's empty. So, that's why it says we don't have a website. So presumably something broke. Build website. Oh, there you go. I don't know. That's not good.

All right. No worries. I will fix that later. You don't have to watch me do that. What I was trying to tell you is that I've broken up the notebook into four sections. A bit about arrays and numbers and strings, a bit about some basic functions, some basic operators and then the APL competition stuff, because I thought it was getting a little bit unwieldy.

Now, there is some helpful stuff about glyphs to cover on the forums, which I think -- yeah, this is probably a good place. So, thank you, RogerS49, for this list, and I think some of you else, maybe Serato had one too. And so some of these are pretty easy to get going with.

So, what I might do is just move this one out of the way so I don't get distracted. So, some of these are pretty basic functions. I might just add them over here. Maybe this factorial count is a basic math operation or I wonder what we have as basic math operators.

>> I guess it's factorial as well as binomial. >> Exactly. I'm going to call it basic. Okay. Presumably, they call this something like exclamation mark or exclamation point. Oh, and let's run this line. Okay. Help. Exclamation mark. Okay. I guess it doesn't really matter if it's exactly perfect, but exclamation mark.

Okay. So, the mathematic version is factorial, which probably -- does anybody not know what factorial is? One thing to be aware of is that these are always prefix operators. So, that's going to be confusing. And I guess in operators, we could then mention that factorial is probably going to be the same as times slash iota, right?

So, maybe we could use that here. So, times -- oh, I'm going to do apl thingy. Okay. Times slash iota five. And factorial -- there we go. Look at me. I'm not doing apl. All right. I guess we should probably look it up in case they do weird things with negative numbers or something.

Oh, here we go. Negative numbers. So, I guess like a factorial of a non-integer is a gamma function. Is that -- yes. Great. Look at me remembering math from university. I've never used that since, but I'm sure it comes up for some reason. What's the keyboard shortcut to insert the lamp, the comment character?

It's back to comma. Comma. It's not working, I guess. Yeah, I thought it would be an a-board or an e-board. Sometimes when I put a couple of spaces, it seems to be a dot. All right. Someone asked me to explain gamma because I damned if I remember what it is.

Maybe if there's interest, at some point we should come back to that. And I guess they're probably going to call this binomial or something. Yeah, yes. Double space on Mac is period. Oh, it's a Mac thing. Is there a way to turn that off? I suppose so. Not sure.

That's right. I'll look at that later. Thanks for letting me know who to blame. Okay. Probably worth mentioning how to define binomial. One more. I'm going to use the factorial. The results are derived from the beta function. I don't remember that at all. That sounds like an interesting thing to relook up one day as well.

Okay. So R is the number of selections of X things from Y things. That's basically the definition of binomial that we learn in university. Actually, high school. At least in Australia we did it in high school. Over-enthusiastic with the use of non-integer versions. I'd be inclined to do something like say iota 5.

Oh, we haven't done iota yet. No, we haven't done iota. Not at this point. There we go. So there are five ways of selecting one thing from five things, 10 ways of selecting two things from five things, and so forth. And I guess one way of selecting zero things.

Does that make sense? All right. Next. How about we do these other Boolean ones? They're probably going to be nice and easy to zip through as well. Okay. So, Boolean ones, here we are. Let's start here, shall we? Greatest common divisor slash or is nine. So this is going to be quite fun.

Because I love the way they don't just do or. Classic generalization trick, which is to say, well, or is just a special case of GCD, which is a very nifty insight. Now, something I don't know is, or haven't really thought about it is that there's some fundamental reason why that is, or it's just a coincidence.

The greatest common divisor is the same as or. Greatest common divisor. Yeah. So the greatest common divisor, Radek, is zero and zero. It's zero. The greatest common divisor of one and zero is one. I thought those were binary numbers. These are also binary numbers. This is also a binary truth table.

So this is true. This is true both for GCD and for the or truth table. No, no, no, but so the way I'm reading this, and maybe this is wrong, the result is the number that's greater than any of the two numbers above. Right. So how can it be the greatest common divisor?

No, no, no. This is not a number. Space means create a list in APL. Yes, yes, yes. But all right. So it still operates on a single item. And it's just that I saw zeros and ones. I thought, oh, wow, maybe there's a binary number. Does that happen? Got it.

Got it. One or zero. Okay. That's interesting that this is, I mean, that or can be, yeah, that's cool. That's cool. They also have a similar interesting point about not having XOR, exclusive or, because that's, yeah, but maybe that will be in a second. Oh, and then you can also operate on numbers that are not binary numbers that are, okay, got it.

Sorry. Yeah, it makes a lot of sense. Great. So I think the header, you have equal underbar slash there. Oh, thank you. And what is this thing actually called? I think it's just, let me look it up. And I accidentally started with dyadic. Is there a monadic version of it?

I think so. There isn't, no, not defined. Wow, they've actually got a spare character they can play with. Looks like it's just called logical OR, I guess. That's easy. Logical OR. Yep. And logical AND is same thing, no dyadic. Yep. Lowest common multiple OR AND. Okay. And all right.

So this is lowest common multiple OR. Oh, website is up again. Our website is up again. That's what the chat says. That's weird. Well, it looks like maybe he fixed it. Oh, got a champion. Okay. So yeah, so we've got multiple things here now, as you see. Thanks, Vassim.

He's meant to be on vacation in Melbourne. Why is he fixing our website? Another kind of person. You know, like. Well, maybe he's getting in trouble with his girlfriend for doing that instead of checking out the coffee in Melbourne. All right. And I'm going to guess it's eight. Nope.

Zero. I've noticed that most of the time, there's something pointing down, the key to the right of it is going to be pointing up. Oh, that seems to go down and up a lot of times. Cool. Okay. Next, squiggly versions. The not versions. Okay. Makes sense. And these are now the equivalents to order through them, of course, that makes sense.

And they also are the equivalent shifted versions. Oh, it's not so pretty in this font. Oh, well, let me publish it. It should look pretty. Oh, this is only nor, is it? Wow. Come on. Hope it had some weird fancy way. Okay. Truth table for nor. Wow. So it's actually an operator that does very little.

Just one thing. I can just imagine as Adam is watching this, he's madly searching math to prove us the wrong kind generalizations of nor so he can put it in the next version. And this kind of embarrassment in the future. There we go. There's a nice talking font. Okay.

You don't think man is going to be just as disappointing there. I think it is makes me wonder why we bother the universe is just helping you get through a lot of symbols. Yeah, well, quite. Yeah, trying to do a world record here. Okay. Everybody happy with our those so far.

And we've got Tilda somewhere. Tilda somewhere. I'll just type it. I don't know how to type Tilda. Tilda. Oh, of course, it won't be in the language bar. I don't need it in the language bar. Oh, Tilda. Okay. There we go. Diatic and monadic. Monadic. Tilda is not. I don't know why they've got four things.

Trying to make it look more fancy than it is, I guess. Okay. What happens if we do 9 or -2.3? Doesn't like it. There you go. Not a bit of a disappointment as well. I'd be inclined to have it work like Python where anything that's not zero or an empty string is turned into one.

I quite like that. It does have a dyadic version. Don't worry. They're coming. Without or excluding. Okay. 3, 1, 4, 5 without 5, 1. Looks like it's removing the actual numbers. Makes sense. It's tough that doesn't appear on the right. Yeah, exactly. And it's doing them on whole kind of arrays, which you can see in this case remembering that a string is just an array of characters.

So presumably if we did something like 1, 2, 3 without 1, 2. That's interesting. Oh, I probably need to be careful with my parentheses. Interesting. How is that different? You have to enclose the 1, 2 on the right. Make it a scalar. Oh, I see what you're saying. This is actually not 1, 2 at all.

This is actually just a parenthesized array. Yes, I see. What's the keyboard shortcut for enclose again? Oh, good job, Isaac. Thank you. Thank you, thank you. And I don't think, well, I don't think I need that parenthesis because the space should be tightly bound. Yeah, yeah, yeah. Okay. Let's check the docs to see if there's anything else.

I don't think you need the parenthesis on the right either. No, I guess I don't really, do I? Yeah. And if that actually makes it more obvious what's going on. Yeah. Thanks. Okay. So it's checking for equal underbar. Makes sense. And they use hash tables. Okay. Makes sense too.

Which is basically the same as Python. Actually, the problem with looking just at symbols is that we miss out on some. And did Serana put a list, I think, on the main topic? Yes, she did. Okay. She's got all these ones. This is going to be more complete, I think.

All right. I guess we're out of all the ends. So maybe we should do this one. Presumably this is something like the other shoe. I thought we did that last time, no? Did we? I thought we did the opposite direction. We definitely did the left shoe. Yeah, we got left shoe.

Oh, no right shoe. Okay. Now the shoe's on the other foot. We also got up shoe and down shoe as well. Oh, really? Yeah. Okay. What's the keyboard shortcut? So it'll be X, I believe. I'm just pasting it at the moment. Okay. Help. Oh, yes. You believe right, Isaac?

Okay. We have chord ML one. So this is disclosure first. The dyadic is pick. Okay. All right. Well, these examples are nice and straightforward. Oh, interestingly, though, in the second case, it's also like unboxing it or whatever the word they use is. Unenclosing it, is it? Why is that?

I guess that's interesting. Is that just how it prints them? That's how it prints characters. Yeah. Yeah. Sorry, what you're gonna say, Heather? I don't know if it's, is it disclosing it or is it, I mean, if you just take the one, two in parentheses, then that would not be enclosed.

Right. Okay. So my question then is, I guess, remind me the enclose. Yeah, it's definitely doing that. Okay. So it's taking the first thing and unboxing it. But I guess disclosing is what they use to mean unboxing. Let's see how they describe it. It's the first item. I guess you can't exact, I have a lot of trouble understanding enclose, to be honest.

Because like I don't, like, in J, it's easier. There's a data type called a box, you know, and like you use less than put something in a box and now you've taken that thing and now it's a different data type. It's the box of that thing. It seems in APL, that's not quite what's happening.

It's still, this is still an array that it contains an array. They have this idea of depth instead. And so I guess when you select something like a first element, by definition, you are reducing the depth, you know, because that element is you're going into it to get it out.

I remember Adam said this was brought up also, this is not an array, an array. And he said, oh, look at this epsilon down below. Right. Yeah, I found that confusing. He said it packages it. But like you never get the package, you know, it always acts like an array as far as I can tell.

It makes an atomic thing. So it kind of feels like it's different to J. I think in J, if you select the first element of something and it's in a box, you get back a box and you have to unbox it. Whereas APL doesn't behave quite that way. Do we get how these left shoe and right shoe are the opposite of each other?

I don't understand this concept of first. That doesn't match. Yeah, we do. Because this is, so this has depth two, because end closed took something which was an array and put it inside an array. So we don't have an array with an array in it. So that's depth two.

So here's the same thing. Here's the same thing disclosed, which has taken the first element and therefore it's got a depth one less than we used to have. And so therefore it's done the, yeah, it's taken us back to this. So to put it another way, we could say like A is this.

And then we could say this matches, which is colon. A, I should do it the other way around. A matches this. Okay. And so that's a bit of a weird one. Disclose of the Zelda thing is zero in each case. Alright. So let's look at the direct versions now.

It looks like it's just indexing in. Okay. So if you've got a scaler on the left, it just grabs the third thing or grabs the second thing. This goes into the second thing and then finds the first thing in the second thing. All right. Seems easy enough. Okay. Well, that's fine.

See if there's anything weird about this to know about. Okay. Elements of X, selection and success is with deeper levels. Yep. Simple scaler items may be picked by empty vector items. Arbitrary depth. What is going on here with these ones where they've got two sets going on? So this is row two, column one is JKL.

I'm getting so confused as to which is which. Okay. We're talking about this one at the moment. So this one here is enclose. So that creates an array with an array in it. And then it concatenates one. Wait, isn't that exactly the same as just putting a space between them?

Yeah. Why are they confusing us? Okay. And then, oh, that's interesting. So now they're using that as an index. And why are they building up G in such a weird way? All right. I think we are going to need this example because this is something I... I think with the boxing, this would be made pretty clear what's going on.

Yeah. Okay. And not having the boxing there, I think is making it look a lot harder than it really should be. Really? Okay. Maybe they were running out of room or something that let's see why they don't just do this. Okay. So we've got this weird thing. So I think we index in second row first column gives JKL for first element of JKL for gives you JKL.

Okay. So all this is the index. And we're sorry, what's the keyboard shortcut for X? X. And we need to fix this. X. Okay. So sorry. We go into the second. This has been going to the second row first column. I believe so. Yeah. And then this is the first thing from that.

Well, we should try that on a matrix to confirm. So two rows, three columns of iota 6. Okay. So you can't grab a row from a matrix. Okay. Oh, and you need the left shoe because you want that to be an atomic thing. The index. I think so. Yeah, it's gonna give you an error.

What's the keyboard shortcut for quad? Okay. So that's a second row first column. And if you want to entire row, do you say the entire row? Well, we could try doing this, I guess. No. So I'm not sure you can. We just did it with G, didn't we? No.

No, so the difference is okay. So it looks like you use a plain array to go into an array of arrays as in this one. So this is an array of arrays. To go into a matrix, you need a rank 1 or shape 1 thing, I guess, such as we have here.

And so here now we've got a shape 1 thing, and then a scalar. So the shape 1 thing is going to go into the matrix to row 2 column 1. And this now contains two items. So this is the first item. Okay. So I think it's one way to get the row is to use the up arrow and down arrow.

Yeah, exactly. Okay. That's weird. So the items of x are simple integer scalars or vectors. Okay. Yeah. So when we enclose them, we're creating a vector. And the vector identifies a set of indices 1 per axis at that level of nesting. Okay. So that description makes sense after I know what it means.

I'm not sure I could have read it to figure out what it means. I still don't know what simple scalar items in y may be picked by empty vector items in x. An empty vector. How do you even create an empty vector? Is that iota 0? No. I don't know.

I might leave that one for now because it's not going to help zip through it. Maybe somebody can try to figure that out. Okay. That was annoyingly long for our hope. But this is live. Should we do the up tack and down tack if that's what they're called? Yes.

Is that what they're called? Does anybody know? Yes, that's what they're called. Okay. And how do I type them? And as in Nancy. So the one with the pointing upward is B and then it goes down and up again. Oh, D? No. B? Nancy and Barry. This one is sub tack.

Okay. And that's only dyadic. Decode. Okay. This should be fun. Okay. Okay. Okay. Okay. Okay. This is very confusing. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Okay. The first element of X has no effect on the result. This function is only the base one. That's okay. It's a polynomial.

Okay. Here's a polynomial that evaluates. So we start with Y1. Okay. This is Y1 times X to the n minus 1 times 2 to the 0. So 2 plus 4 plus oh, sorry. X to n minus 1. X is on the left. Oh, sorry. And that's 0, I guess.

Yeah, that's 0. Okay. So it's 1 times 1 plus 1 times 2 plus 0 plus 1 times 8. It's the usual formula that we use to convert binary to decimal. Yeah. I understand. I'm just trying to see how it maps to that. Yeah. Okay. So this is a binary.

This is the binary number 1 1 0 1 because we're doing it base two. Okay. So then what about base 10? Yep. Makes sense. Whoops. You're telling it what is 1 1 0. Okay. So that's 1 times 10 to the 0 plus 1 times 10 to the 1, blah, blah, blah.

So we should be able to do 3, 4, 1, 1, 2, 3, 4, 5, 6. And that should just be that number, right? Yep. Cool. All right. When you've got an array on the left, each element of X defines the ratio between the units to the corresponding pairs. Okay.

So the ratio, okay. So the ratio of the units is 24 to 60 to start with. So presumably this is like, presumably what this is is two hours, the two days, 40, sorry, two hours, 46 minutes and 40 seconds. So that would be two hours. I've got to do parentheses.

And 46 minutes. And 40 seconds. Okay. Why? So, okay. So, okay. I see. So we start out with 40. And so this unit's considered 1. And so then the next one is going to be 60 times. Okay. So here's the 60 times. The next one will be another 60 times.

Hence, I should write this as 60 times 60 to be more clear. Yes. And I must have pressed insert. I see. And so the 24 indeed is not doing anything. Okay. That's fun. So that's up tech. Higher rank array arguments. Whoa. Okay. Each of the vectors taken as the radix vector for each of the vectors on the first axis, first axis is the rows.

Jeremy, before you move on, do you want to, the last example or the polynomial evaluation is that is a complex number. Do you want to put that in it as well? No. You're right. Sure. So that's going to be 1J1 to the power of 0 plus 1J1 to the power of 1 times 2.

Is that how it works? Yes. Plus 1J1 to the power of 3. Right. To the power of 2 times 3. So 1J1 to the power of 0 is obviously going to be 1. And then 1J1 to the power of 1 is obviously going to be 1J1. That one's times 2.

Okay. And then we've got 1J1 squared, which is going to be 1J1 squared, which is 1 plus i times 1 plus i, which equals 1 plus 2i plus minus 1. Okay. Which is indeed 0J2. Okay. That's another of those. And then that times itself again. Yes, it's easier to see than the polar coordinate.

Why is that? Oh, because 45 degrees and 90 degrees, then no. Oh, okay. Sorry. I'm not much of a complex numbers person. So 1J1 is the 1 comma 1 on the Cartesian plane. Is that what you're saying? Right. 1J1 angle phase is 45 degrees. And when you do times, is that the same as multiplying at that angle?

Correct. Power goes, translates to multiplying by phase and also magnitude gets to that power. Okay. Maybe you can find some link or something that explains that for dummies like me and put it in the forum or something for this person, because I never learned any of that when I was studying philosophy at university.

So, this one is 4 by 1, 2, 3, 4, 5, 6, 7, 8. And here's the 8. X is the thing on the left. Still wish they said alpha instead of X. So each of the vectors, each of these vectors is taken as the radix vector for each of these vectors.

But there's three of these rows and four of these rows. How does that work? Oh, I see. It's doing an outer product. So it's doing -- it's doing this with this. And that's what this is. Is that right? I think we need to explain in terms of radix. I don't know what a radix vector is.

It's like the base -- like 13 in radix 2 is 1, 1, 0, 1, just like above. No. Okay. I'm wrong about how these are combined. How do these work? I don't get it either. I think APL Wiki has a better explanation. Oh, great. But still complicated. Then I'll search for decode.

So, examples. The third paragraph. One, two, three. Okay. So we've got these ones. Okay. Okay. We've done this one. One tack. One tack is -- oh, okay. So that's -- I keep forgetting how this works. X is on the left. And then we multiply it by -- oh, that is the sum, right?

One, two, power of anything is one. One pair of anything is one. Yep. So we end up with three times one plus one times one plus four times one, et cetera. It gets tricky when the left-hand side is an array. Yes. Okay. So then, doing it here with a matrix is -- oh, very first thing on.

Let's sum the column. Yeah. Why? What's it doing? Is it doing it to each -- yeah, I guess that's my question. Why? Oh. If the left argument is a scalar, it's converted to a vector filled with that number. Oh. So it's one, one. Which size? Columns. Let's find out.

That one. Okay. So it's basically a lining. So -- okay. So because decode expects kind of a scalar on the left and a vector on the right. Not quite sure. I don't know what 48 did. So kind of the base case seems to be more this version. And then the one where you've got a scalar is just kind of a shortcut for it.

The scalar one is good for converting to bases. Yes. Or de-converting to bases. To base 10. 31 is useful for converting to days and minutes and -- the one that the left-hand side is an array. It's not clear what the use is. The one with the left-hand side is an array.

It's useful for the kind of example they gave here, I guess. So how many seconds is 2 hours, 46 minutes and 40 seconds? Yeah, I meant when the right-hand side is a matrix and the left-hand side is an array. What if you do 2, 2, 2? What would that do?

Just a moment here. There's 12 of these. Okay. So it doesn't like that. So it has to be 3. Okay. And you have to get 2, 2, 2. Is that -- no. Oh. Yeah, 23 is 1 plus 5 times 2 to the power of 2, now to the power of 1 plus 9 times 4.

Is it? No, it's not. It's 1 to the power of 0 times 2 plus 5 to the power of 1. It doesn't even say what it does in that case, does it? The first one is ignored. Oh, it uses the ratio of them. So with this ratio, 2, 2, 2 should have been similar to 1.

So it doesn't really do anything. We will come back to this. I was looking at this before the class also and couldn't figure it out. Yeah, it's something going on here as well. All right. I hope -- I'm not expecting, but I'm hoping down attack is less confusing. Oh, and what was this called?

Decode. Presumably this is going to be something called encode. What is this? All right. Okay. It's going to be the opposite. Okay. All right. All right. All right. All right. All right. All right. All right. All right. Okay. What's going on here? Okay. All right. Okay. All right. All right.

All right. All right. That's a hard one to start with. Okay. So this is decoding 7 to a binary number. Of length according to what it was on the left. Oh, do left-hand size. And columns. Here's 5. Here's 7. Here's 12. Okay. So we should be able to do the same thing.

No. Oh. Yep. Yep. Y and X must both be simple numeric arrays. It's the representation of Y in the number system defined by X. If the first element of X is 0, the value will be fully represented. You're getting the digits of the right-hand side and the basis specified by the left-hand side one by one.

Oh, there you go. That's the difference. So if the first element is 0, then it's going to make this as big as it has to be to get the whole number here. If it's not 0, then it truncates it. Makes sense. What truncate is a very special case when the thing is 10?

Not really. If the thing is binary, this is a truncated binary representation. It's the least significant digits in that representation. Right. Okay. Yeah. You're getting the digits one by one in that basis. This is how you get the least significant digits. Okay. I see what you mean by truncated now.

So here 75 in base two is probably column one. I don't understand column two. Oh, okay. So that's representation of 75 in base eight. Yeah. And the other one is hex. Hexadecimal. Except we don't have letters. B4, after all, 3, 1, 1. binary, 1, 1, 0, 1, 0, 1, 0.

It's hard to imagine that one would want to do this. I mean, it could be some kind of performance like things sometimes. Where you need multiple representations at once. I don't think we need it for a quick like one of these glyphs. Yeah. All right. Makes sense. Wait, we've done these.

Yeah, which one is the booleans? We've done that. All right. So let's do up and down shoe might be easier ones to work on. These ones here. Yeah. Does that make sense to go with left shoe and right shoe? Not really. It's unique intersection and union. It's what they are.

Oh, okay. All right. Let's tell them they don't really match with those. Duplicate. Rest of the clits. The rest. I guess we could give it a number. Okay. All right. How do I write these? They're going to be C and the V. This is a script to be called up shoe.

And what are their names of the things they do? Up shoe is just intersection. It's just dyadic. It's only dyadic? And then it's called set intersection more precisely. Oh, I see, dyadic. Set intersection means intersection. Yeah, sorry. You're saying, okay, this one's V, right? Yep. That one, the monadic is unique and the dyadic is union.

Okay, that looks straightforward enough. So intersection of 22 appears here, AB appears here, FG does not appear here, and vice versa. Okay. This is similar to something we saw before, right? The tilde, I think, but it would be, you have to use the tilde going both directions. You'd have to use it twice, I think, to get the intersection.

Yeah, right. Can we try to do that then? So if we wanted the intersection of Yeah, so this is wrong, isn't it? It should be like this answer to this should be one. So in Venn diagram, tilde is stuff that is outside the difference. Yeah. Yeah. So it's the set minus this and minus this.

Okay. Yeah, union of those two. Yes. Okay. Great. Anything weird about this? These actually match the math notations for once. Yes. All right. That's nice and simple. Okay. Okay. Okay. Okay. Okay. So the dyadic version seems pretty simple. The monadic also looks pretty simple. And we've learned a way to do this before.

Using not equal. Yes, exactly. Reduce. Was it slash not equal? Yes, that sounds right. I mean, not equal. It's like a four or a six. Is it that one or the one with the three things? That one. Right, which is back to the index into index. I think you're right, actually.

Yes. And I think we looked at doing this. Put it another way. It's this. Yes. And then did we come up with a way to do that with a with a train? You should be able to whenever A is on both sides. Yeah. I mean, it's an ugly version of it, I think.

No. Why is that wrong? I thought this means put it on both sides. That does. But the tilde in between, shouldn't that be a jot? This one. Oh, it does have to be a jot there. Yes. I think so. Looks familiar. Yes, yes. What is jot? Change. There we go.

Oh, do we need that tilde inside, Prince? Yes. I think so. Let's see. We applied this to the A. And then, yeah, because we have to reverse it. This actually has to go on the right hand side. Because it's here. If it's on the left hand side. If it's on the right hand side, it would be fine.

But we need to not be called to apply to the left hand side. So we have to reverse the order of slash. So, yeah, interesting question as to how to do this more neatly. I'm sure there's a way. Okay. Okay. That's that. Okay. Let's leave it there. I'm going to do an extra one tomorrow if people are around.

In the hope that we can get close to polishing this off. This is like learning Chinese, isn't it? Glyphs. Oh, there's less to learn than Chinese. Thankfully. They're more complicated to understand what they mean than Chinese glyphs, though. You would know better. All right. Thanks, all. Bye. - Bye-bye.

- Thank you. - Bye-bye.