File: TH_recursiveDoImport.hs

package info (click to toggle)
haskell-ghc-exactprint 1.7.1.0-1
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 6,044 kB
  • sloc: haskell: 32,076; makefile: 7
file content (25 lines) | stat: -rw-r--r-- 483 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{-# LANGUAGE RecursiveDo #-}
{-# LANGUAGE TemplateHaskell #-}
module TH_recursiveDoImport where
import Data.IORef
import Language.Haskell.TH

data SelfRef = SelfRef (IORef (IORef SelfRef))

recIO :: ExpQ
recIO = [e|
    do rec r1 <- newIORef r2
           r2 <- newIORef (SelfRef r1)
       readIORef r2 |]

mdoIO :: ExpQ
mdoIO = [e|
    mdo r1 <- return r2
        r2 <- return (const 1 r1)
        return r1 |]

emptyRecIO :: ExpQ
emptyRecIO = [e|
   do rec {}
      return () |]