X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=topics%2Fweek1_advanced_notes.mdwn;h=1f58f61a9a40e730be92dfaaedbbf6f503ceb5a6;hp=d843ee72790c1be59b1b59235ed2e7dca3ed44ff;hb=defe9acbbc95965b07929c7a5b78e9d00a0526b3;hpb=7a8d016ba68d0c03c37ab5ce52e1b12b7c97c568 diff --git a/topics/week1_advanced_notes.mdwn b/topics/week1_advanced_notes.mdwn index d843ee72..1f58f61a 100644 --- a/topics/week1_advanced_notes.mdwn +++ b/topics/week1_advanced_notes.mdwn @@ -51,7 +51,7 @@ I agree it's annoying that these conventions are so diverse. There are plenty ot A function value doesn't have any structure---at least none that's visible to the pattern-matching system. You can only match against simple patterns like `_` or the variable `f`. -When matching a variable against a λ-generated function value in a `let`- or `letrec`-construction, there's an alternative syntax that you may find more convenient. This: +When matching a λ-generated function value against a variable in a `let`- or `letrec`-construction, there's an alternative syntax that you may find more convenient. This: `let`   `f match` λ`x.` φ`;` @@ -99,7 +99,7 @@ If we get to the `y & ys` line in the pattern list, and the pattern-match succee ### As-patterns ### -Sometimes it's useful to bind variables against overlapping parts of a structure. For instance, suppose I'm writing a pattern that is to be matched against multivalues like `([10, 20], 'true)`. And suppose I want to end up with `ys` bound to `[10, 20]`, `x` bound to `10`, and `xs` bound to `[20]`. Using the techniques introduced so far, I have two options. First, I could bind `ys` against `[10, 20]`, and then initiate a second pattern-match to break that up into `10` and [20]`. Like this: +Sometimes it's useful to bind variables against overlapping parts of a structure. For instance, suppose I'm writing a pattern that is to be matched against multivalues like `([10, 20], 'true)`. And suppose I want to end up with `ys` bound to `[10, 20]`, `x` bound to `10`, and `xs` bound to `[20]`. Using the techniques introduced so far, I have two options. First, I could bind `ys` against `[10, 20]`, and then initiate a second pattern-match to break that up into `10` and `[20]`. Like this: case [10, 20] of [ys, _] then case ys of