X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=exercises%2Fassignment2_answers.mdwn;h=04c103c47aada473c00873f21eba7c69d90db46e;hp=6d0e5aa450db8eef97a90f69de5459e0fdba34be;hb=7888d341776f23849c60cd82ca816ed13e5bc9c2;hpb=6dc0f03a2b7a5081fa378f0a1af4e37682b7242c;ds=sidebyside diff --git a/exercises/assignment2_answers.mdwn b/exercises/assignment2_answers.mdwn index 6d0e5aa4..04c103c4 100644 --- a/exercises/assignment2_answers.mdwn +++ b/exercises/assignment2_answers.mdwn @@ -199,6 +199,7 @@ Folds and Lists reverse xs = fold_right (f, []) xs in reverse + *Here is an elegant, efficient answer following the [[hint|assignment2 hint]]* Suppose the list we want to reverse is `[10, 20, 30]`. Applying `fold_right` to this will begin by computing `f (30, z)` for some `f` and `z` that we specify. If we made the result of that be something like `30 & blah`, or any larger structure that contained something of that form, it's not clear how we could, using just the resources of `fold_right`, reach down into that structure and replace the `blah` with some other element, as we'd evidently need to, since after the next step we should get `30 & (20 & blah)`. What we'd like instead is something like this: