Concatenate Vanishes ==================== * A common script for all our Concatenate Vanishes examples. * Completed. * Interesting rewrites: push, innermost, unfold-rule * It works for all three examples, but I doubt it would work for *any* concat vanishes example. * Notes: unsafe uses of RULES with pre-conditions. Fibonacci (Tupling) =================== * Example of Tupling transformation. * Completed and published * Interesting rewrites: ww-split tactic, case-split(-inline), fold, remember (and fold/unfold remembered defns), let-tuple Fibonacci (Stream Memoisation) =================== * Example of Memoisation. * Completed. * Interesting rewrites: ww-split tactic Flatten ======= * Another concatenate-vanishes example, based on the Reverse example. * Completed. * Main rewrites: any-call Hanoi ===== * Another tupling transformation * Completed. * Interesting rewrites: ww-split tactic, case-split(-inline), fold, remember (and fold/unfold remembered defns), let-tuple Map === * List unrolling. * Completed. * Main rewrites: simplify, any-call, unfold, case-split(-inline), remember. Haskell 2012 Paper ================== Fibonacci (Unrolling) --------------------- * We unfold fib once to show how things operate overall. * Main rewrites: any-bu, inline Reverse ------- * Our larger, low-level reverse example. * Main rewrites: any-bu, unfold Append ------ * A demonstration of GHC RULES (no use of HERMIT). IFL 2012 Paper ================== Fibonacci (Tupling) ------------------- * Example of Tupling transformation. * Interesting rewrites: ww-split tactic, case-split(-inline), fold, remember (fold/unfold remembered defns), let-tuple Last ==== * A classic simple example. * Completed. Nub === * A new (that is, unpublished) worker/wrapper example. * There was a bug in Andy's original pen-and-paper derivation. * A corrected version is in the files named "Revised". * There has been no attempt to mechanise this revised derivation as yet. Quicksort ========= * Another concatenate-vanishes example. * Completed. * Main rewrites: any-call Reverse ======= * Higher-level script than in the Haskell 2012 paper. * Completed. Lower-level version has been published. * Main rewrites: any-call Talks ===== * This directory is for the code that Neil intends to demo at Nottingham, IFL and Haskell. * Don't mess with it without telling him! To Do ===== * Life - Can we translate to a stronger type? * Kansas Lava example?