Modern Mother and Daughter

"Modern Mother and Daughter" is a sketch from the third series of French and Saunders, written by and starring Dawn French and Jennifer Saunders. The sketch later served as the basis of Saunders' sitcom Absolutely Fabulous in 1992.

Modern Mother and Daughter
WritersDawn French
Jennifer Saunders
ActorsDawn French
Jennifer Saunders
First appearance"French and Saunders" (19 April 1990)

Plot

Saffron is an ordinary teenager, busy completing her homework in her bedroom one evening. Her mother, Adriana, enters, dressed in a brightly-printed kaftan, with an acid house-inspired outfit underneath. Adriana tries several times to persuade Saffron to join her party downstairs, inviting her to "share a joint" with her and her guests, to Saffron's disapproval.

Adriana continues her attention-seeking questioning, disrupting her daughter's attempts to complete her homework. She questions Saffron's university plans – studying physics in Aberdeen, her reluctance to join her mother on holiday, and her warm relationship with her father. (Adriana, by contrast, has nothing but hostility towards her ex-husband.) The sketch ends with Adriana saying she's "hoping" her boyfriend Jean-Pierre will stay over, to which Saffron hands a pack of condoms to her mother, saying she was aware her mother had run out of them.[1]

Writing

The sketch transposes the traditional roles of mother and daughter, with the daughter behaving and dressing conventionally while the mother rebels. This characterisation and the relationship between the two characters was later carried over into Saunders' sitcom Absolutely Fabulous. In the series, Saunders reprised her role as the mother, renamed Edina, while Julia Sawalha played her role as the daughter, Saffron, replacing French. Lines from the sketch were reused in the series, such as Adriana's insistence that it is possible to be a socialist while employing household staff, and Saffron's nickname from her mother of "Sweetie".

gollark: I didn't do any horrible homoglyph hacks with THAT.
gollark: It uses the function, yes.
gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.

References

Citations

  1. Dawn French and Jennifer Saunders (1991). A Feast of French and Saunders. Heinemann. p. 67. ISBN 0434272876.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.