diff options
author | rrt <unknown> | 2001-02-26 15:44:59 +0000 |
---|---|---|
committer | rrt <unknown> | 2001-02-26 15:44:59 +0000 |
commit | 81027250abf0099f1dbaef1ddb8534547268ad41 (patch) | |
tree | 6f5c60f1fe1d6e7c7e867a31256d604e788e6df4 /ghc/compiler/ilxGen/tests/test12.hs | |
parent | 44637383d831bd3ca8f3aa3cf80e6a0c90986b41 (diff) | |
download | haskell-81027250abf0099f1dbaef1ddb8534547268ad41.tar.gz |
[project @ 2001-02-26 15:44:59 by rrt]
ILX back-end. WARNING: this is code copied in that was previously added to
4.06. It's not remotely sane to try to compile it at the moment; that's what
I've got to do next. Don't worry, it's all #ifdefed at the moment.
Diffstat (limited to 'ghc/compiler/ilxGen/tests/test12.hs')
-rw-r--r-- | ghc/compiler/ilxGen/tests/test12.hs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ghc/compiler/ilxGen/tests/test12.hs b/ghc/compiler/ilxGen/tests/test12.hs new file mode 100644 index 0000000000..216c792f32 --- /dev/null +++ b/ghc/compiler/ilxGen/tests/test12.hs @@ -0,0 +1,44 @@ +class NewFunctor f where + new_fmap :: (a -> b) -> f a -> f b + +data N a = Z a | S (N a) + +nmap f (Z x) = Z (f x) +nmap f (S n) = S (nmap f n) + +tag (Z x) = x +tag (S n) = tag n + +instance NewFunctor N where + new_fmap = nmap + +--class Strange f where +-- zero :: a -> f a +-- suc :: f a -> f a +-- tag :: f a -> a + + +--class FMonad m where +-- (>>=) :: m a -> (a -> m b) -> m b +-- (>>) :: m a -> m b -> m b +-- return :: a -> m a +-- fail :: String -> m a +-- +-- m >> k = m >>= \_ -> k +-- fail s = error s + + + + +--instance Strange N +-- where +-- zero x = Z x +-- suc y = S y +-- tag n = gettag n + +twice :: NewFunctor f => (a -> a) -> f a -> f a +twice f x = new_fmap f (new_fmap f x) + +main = putStr (tag (nmap (\x -> x) (Z "hello world\n"))) +--main = putStr (tag (nmap (\x -> x) (Z "hello world\n"))) +-- main = putStr (tag {- (twice (\x -> x) -} (Z "hello world\n")) |