# 050: contextorder1b.hs [↑up](bunny_notes) - issued: 2020-04-28 - 分類: A サンプルコードが fail - status: Open ## 概要 [049](bissue049) の少し複雑なバージョン。 $$
{
data A = A1 | A2 | A3
data B = B1 | B2

class MyShow a where
  myshow :: a -> [Char]

instance MyShow A where
  myshow A1 = "A1"
  myshow A2 = "A2"
  myshow A3 = "A3"

instance MyShow B where
  myshow B1 = "B1"
  myshow B2 = "B2"

data Pair a b = Pair a b

instance (MyShow a, MyShow b) => MyShow (Pair a b) where
  myshow (Pair x y) = "Pair " ++ myshow x ++ " " ++ myshow y

main = putStrLn $ myshow (Pair A1 B2)
$$}

## 調査ログ
## 2020-12-17

bunny 0.9.0 で試してみる。testrun の結果:

$$
{
$ bunny testrun contextorder1b.hs 
/home/unno/bunny/0.9.0/bin/bunnyc -d ./jout/contextorder1b --xno-implicit-prelude /home/unno/bunny/0.9.0/lib/Prelude.hs
/home/unno/bunny/0.9.0/bin/bunnyc -d ./jout/contextorder1b --xlibrary-path /home/unno/bunny/0.9.0/lib contextorder1b.hs
Pair A1 B2
$$}

これは runhaskell での結果と同じで期待通り。

## 2021-10-24

全件確認の一環:

$$
{
$ cat contextorder1b.hs 
data A = A1 | A2 | A3
data B = B1 | B2

class MyShow a where
  myshow :: a -> [Char]

instance MyShow A where
  myshow A1 = "A1"
  myshow A2 = "A2"
  myshow A3 = "A3"

instance MyShow B where
  myshow B1 = "B1"
  myshow B2 = "B2"

data Pair a b = Pair a b

instance (MyShow a, MyShow b) => MyShow (Pair a b) where
  myshow (Pair x y) = "Pair " ++ myshow x ++ " " ++ myshow y

main = putStrLn $ myshow (Pair A1 B2)
unno@unno-FMVD70GN7G ~/work/bissues/050 
$ runhaskell contextorder1b.hs 
Pair A1 B2
unno@unno-FMVD70GN7G ~/work/bissues/050 
$ ~/prj/bunny/compiler/bin/bunny testrun contextorder1b.hs 
/home/unno/prj/bunny/compiler/bin/bunnyc -d ./jout/contextorder1b --xno-implicit-prelude /home/unno/prj/bunny/compiler/bin/../lib/Prelude.hs
/home/unno/prj/bunny/compiler/bin/bunnyc -d ./jout/contextorder1b --xlibrary-path /home/unno/prj/bunny/compiler/bin/../lib contextorder1b.hs
Pair A1 B2
$$}