1

haskell.org から失われたので、archive.org からTemplate Haskell チュートリアルを読んでいたところ、ランダムな部分が取り出されたかのように破損していることに気付きました。

彼らの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 にあるものは何ですか?

4

2 に答える 2

1

ちょっとした検索で、Simon Peyton-Jones 自身が書いた" Template Meta-programming for Haskell "というタイトルの論文が見つかりました!

お役に立てれば!

于 2011-04-22T18:33:53.620 に答える
0

私が知る限り、この論文で見られる zipN の実装は、GHC の公開されたバージョンで実際にコンパイルされたものではないことに注意してください。自分でコンパイルしようとしたところ、このメールに記載されているエラーが表示されました。

http://www.haskell.org/pipermail/template-haskell/2003-July/000126.html (パターン スライスは実装されていません)。

これは 2003 年には実装されていませんでしたが、今日でもまだ実装されていません: http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/template-haskell.html (パターン スライスはサポートされていません)

ただし、テンプレート haskell を使用して zipWithN の実装を見つけることができます。

http://www.haskell.org/haskellwiki/Template_Haskell#zipWithN

于 2013-05-27T05:40:18.223 に答える