我正在阅读来自 archive.org 的Template Haskell 教程,因为它从 haskell.org 丢失,并注意到它已损坏,好像随机部分已被取出。
我希望了解他们的 zipn 实现。他们唯一的代码是:
\ y1 y2 y3 >
case (y1,y2,y3) of
(x1:xs1,x2:xs2,x3:xs3) > (x1,x2,x3) : ff xs1 xs2 xs3
(_,_,_) > []
mkZip :: Int > Expr > Expr
mkZip n name = lam pYs (caseE (tup eYs) [m1,m2])
where
(pXs, eXs) = genPE "x" n
(pYs, eYs) = genPE "y" n
(pXSs,eXSs) = genPE "xs" n
pcons x xs = [p| $x : $xs |]
b = [| $(tup eXs) : $(apps(name : eXSs)) |]
m1 = simpleM (ptup (zipWith pcons pXs pXSs)) b
m2 = simpleM (ptup (copies n pwild)) (con "[]")
这对我来说毫无意义。谁有好的教程副本?或者archive.org上的内容是什么?