タイプクラスの代わりにf限定ポリモリズムを使用する理由はありますか?タイプクラスの代わりにf限定ポリモフィズムを使用する理由はありますか?
どちらも、A
が与えられた操作(メソッド)のセットをサポートしなければならない(関数を実装する/型定義のインスタンスである)関数f(a:A):A
を書くことの問題を解決します。
タイプクラスの代わりにf限定ポリモリズムを使用する理由はありますか?タイプクラスの代わりにf限定ポリモフィズムを使用する理由はありますか?
どちらも、A
が与えられた操作(メソッド)のセットをサポートしなければならない(関数を実装する/型定義のインスタンスである)関数f(a:A):A
を書くことの問題を解決します。
エンドユーザーコードは、よりシンプルに、より短く、よりよく見えるかもしれません。
例:
def first[A](s: Seq[A]): A = s.head
Seq
は型クラスだった場合、ユーザーは、代わりに次のように記述する必要があります:
def first[A, F[_]](s: F[A])(implicit S: Seq[F]): A = S.head(s)
です。したがって、このマクロはhttps://github.com/mpilquist/simulacrum/blob/です。 master/README.md – jhegedus
Simulacrumは型クラスバージョンの 'first'の左側を助けません。 – OlivierBlanvillain
お役立ち情報... – jhegedus
いいえ、理由がありません。まあ、それは冗談です。私はあなたの質問は、実際に意見に基づいて広範だと思う。 – ZhekaKozlov
共通の分母は型ですが、これらは異なるトピックです。真実はあなたがそれらを一緒に使うべきである(実用的な真実)。猫やScalazのソースを見てみると、あなたは両方を見ることができます。 – sebszyller
同じ問題を解決すると、どちらが他のものより優れていますか? – jhegedus