> type Forest a = [Tree a]
> instance TreeCon Forest where
>      children (Forest tts@(t:_)) = case t of
>                             Branch _ xs -> map (:tts) xs
>                             Leaf _      -> []
> 
> とはできないんですねえ。

そうなんです。型シノニムに対してのインスタンス宣言はできないんです。
型シノニムはあくまでシノニムなので、型構築子 Forest は一人前の型構築子
として認められていないということのようです。

詳しくは Haskell 98 Language Report の 4.2.2 あるいは 4.2.3 
あたりを見て下さい。

http://www.sampou.org/haskell/report-revised-j/decls.html#sect4.2.2
http://www.sampou.org/haskell/report-revised-j/decls.html#sect4.2.3

--nobsun



 


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/