んーなんとなく分かって来ました。

From: Nobuo Yamashita <nobsun / sampou.org>
Subject: [haskell-jp:46] Re: **, ^, ^^
Date: Fri, 28 Feb 2003 15:23:20 +0900 (JST)

> 「よく似た」計算という謂は曲者で、たとえば、(+) と (++) はよく似た計算
> といえば言えなくないですし、ruby ではたしか、+ でどちらも書けたと思います。
> でも、これを同一視することは、いわば、Num と String を同一視する抽象化です。

Num, Integral, Floating等のクラスと
Int, Ratio, Float, Double, Complex等のデータタイプを
混同してたから混乱したようです。

SchemeやCLではクラス階層がそもそも

 <number> → <complex> → <real> → <rational> → <integer>

というものなので、

 (power (x <number>) (y <number>))
 (power (x <rational>) (y <integer>))
 (power (x <integer>) (y <integer>))

みたいな定義ができるわけですが、Haskellのクラスはむしろ
「どういう操作が可能か」という観点でまとめられた抽象化、なのかな。

--shiro












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