RE: [Template-haskell] Pattern matching against lists.
| > reading through THSyntax.hs I can find no way of matching against | > lists when creating functions. Is there something obvious that I've | > missed or is this something that is relly missing? What's wrong with [d| f (x:xs) = x |] or [| \ (x:xs) -> x |] Simon | > | > /Hampus | | Experimentation is a wonderful thing. (Though so is documentation ;) | ___ ___ _ | / _ \ /\ /\/ __(_) | / /_\// /_/ / / | | GHC Interactive, version 5.05 | / /_\\/ __ / /___| | http://www.haskell.org/ghc/ | \____/\/ /_/\____/|_| Type :? for help. | | Loading package base ... linking ... done. | Prelude> :set -package haskell-src | Loading package haskell98 ... linking ... done. | Loading package haskell-src ... linking ... done. | Prelude> :set -fglasgow-exts | Prelude> :m Language.Haskell.THSyntax | Prelude Language.Haskell.THSyntax> | Prelude Language.Haskell.THSyntax> runQ [d| foo (x:_) = x |] >>= print | [Fun "foo" [Clause [Pcon "GHC.Base::" [Pvar "x'0",Pwild]] (Normal (Var | "x'0")) []]] | Prelude Language.Haskell.THSyntax> | | _______________________________________________ | template-haskell mailing list | template-haskell@haskell.org | http://www.haskell.org/mailman/listinfo/template-haskell
On Mon, May 26 2003, Simon Peyton-Jones wrote:
| > reading through THSyntax.hs I can find no way of matching against | > lists when creating functions. Is there something obvious that I've | > missed or is this something that is relly missing?
[d| f (x:xs) = x |]
Nothing, except that I needed to create pattern matching functions of different lengths (so I need to construct them with the datatypes). I tried conPat with just ":" and "[]" and that didn't work. I also tried reifying declarations to see "behind the scenes", but reification does seldom work for me... The solution was of course to use GHC.base:: and GHC.base:[] and now everything works. One should perhaps not be too quick to ask for help :) (btw. the new names are much better than the old) /Hampus -- Homepage: http://www.dtek.chalmers.se/~d00ram E-mail: d00ram@dtek.chalmers.se "Det är aldrig försent att ge upp"
participants (2)
-
Hampus Ram -
Simon Peyton-Jones