はてな使ったら負けだと思っている deriving Haskell このページをアンテナに追加 RSSフィード

 | 

2010-03-13

唄うTH

| 02:33 | 唄うTH - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク - 唄うTH - はてな使ったら負けだと思っている deriving Haskell

singingth.hs:

import Language.Haskell.TH
-- ver. 1 
lib1 = let{l=LetS[ValD(VarP$ mkName"it")(NormalB(f"be"))[]];f=VarE .mkName}in DoE[l,l,l,NoBindS$ f"oh",l,NoBindS$ AppE(AppE(f"speaking")$ f"words")$ f "wisdom",l]

-- ver. 2
lib2 = let{l=LetS[ValD(VarP$ mkName"it")(NormalB(f"be"))[]];f=VarE .mkName}in DoE[l,l,l,NoBindS$ f"oh",l,NoBindS$ InfixE(Just$ f"speaking")(f"words")(Just$ f"wisdom"),l]

in practice:

Prelude> :s -XTemplateHaskell
Prelude> :l singingth.hs
[1 of 1] Compiling Main             ( lib.hs, interpreted )
Ok, modules loaded: Main.
*Main> $( return lib1 )

*** Exception: hsSyn/Convert.lhs:(427,14)-(428,33): Non-exhaustive patterns in case
*Main> $( return lib2 )

*** Exception: hsSyn/Convert.lhs:(427,14)-(428,33): Non-exhaustive patterns in case
*Main> :q
Leaving GHCi.

hint: ppr

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20100313
 |