0
class A a
instance A (Int -> Float)

動作せず、

class B b
instance B Int

動作するHaskellの関数を最初のクラスとし、(Int-> Float)が(*)具象型ではないのに間違いなく型である場合、関数をクラスのインスタンスにできないのはなぜですか?

4

2 に答える 2

7

はい、Haskellでは関数型はそれほど特別ではありません。

module Test where

instance Show (a -> b) where
    show _ = "(function)"

shkの回答で指摘されているように、ドメインの型や範囲を修正したい場合は、FlexibleInstancesのような拡張機能が必要になりますが、これは関数型とは関係がなく、次のような他の型構築アプリケーションに必要になります。Maybe Int同じように。

于 2012-12-24T13:08:48.140 に答える
3

FlexibleInstances拡張機能を使用すると、次のことができます。

{-# LANGUAGE FlexibleInstances #-}

module TestFlexibleInstances where

class A a

instance A (Int -> Float)
于 2012-12-24T12:58:19.063 に答える