東倒西歪
自從 FLOLAC '08 第一次 derivation 的 tutorial 慘況之後,我就陷入矛盾之中 ─ 一方面我覺得在彰中講這種一堆研究生都目瞪口呆的東西無疑是讓氣氛冰凍的最佳手段,另一方面又暗暗希望學弟們個個聰穎過人嫌我講得太簡單逼我拿 fold-fusion theorem 出來撐場面。不過結果當然是前者 XD。簡介之後我拿 fact = product . descend
當暖身例子,然後從 fibt n x y = fib n * x + fib (n+1) * y
導出 tail-recursive 的 Fibonacci,加上一點 demo 之後還勉強能感覺到下面有點反應。接下來我做 mm f = split (map f) max
然後秀了「用一次 traversal 把 list 所有元素換成最大值」,又繼續解掉 mps = max . map sum . inits
。(全部都是用 unfold/fold transformation 解的,可以想見有多煩…)解到要說明 sum . (x:) = (x+) . sum
的地方才覺得不太妙 ─ 做得太 point-free 了,而且我根本沒特別講 section!可是此時已經騎虎難下,只好不理台下繼續導完,反正台下早就倒得差不多了 XD。scm 老師的目標是讓學生學會 unfold/fold transformation,而我的目標大概只剩下讓他們記住「有 functional programming 這回事」和「functional programs 可以做很像數學的推理」XD。最後補充一點 P vs. NP 的科普常識就趕快放他們走啦 XD。
用 mini-FLOLAC 當藉口混了三天,也該重新上工啦,不然很對不起 scm 老師和 Oleg…
--
還是應該從陳恭老師的角度講比較好 XD。
Labels: 雜記
辛苦啦~
<< 回到主頁