id:bonotake さんに教えてもらった問題。すごく面白い。 ref: http://d.hatena.ne.jp/m-hiyama/20081022/1224640248 この問題を Haskell で言うと、 data Tree = Leaf | Node Tree Tree deriving Eq type Tree7 = (Tree, Tree, Tree, Tree, Tree, Tree, Tree) で定義される普通の二分木と、二分木の 7 つ組を考える。このとき f :: Tree7 -> Tree g :: Tree -> Tree7 の型になる 2 つの関数 f と g を定義せよ。ただし以下の 3 つの条件が満たされるものとする。 Tree 型の任意の値 x に対して x == f (g x) Tree7 型の任意の値 x に対して x == g (f x) f