次の問題を解決しようとしています-すべてのセレクター(e ^ i_n)といくつかのブール関数({f_1, f_2, f_n}
)がクロージャー([f_1、f_2、..f_n]内)でn個の引数のすべての関数を列挙する場合。
そこで、BooleanFunctionClass と実在する BooleanFunction 型を実装します。彼らは Haskell のアガニスト精神ですか?
class BooleanFunctionClass a where
arity :: a -> Int
instance BooleanFunctionClass Bool where
arity _ = 0
instance BooleanFunctionClass a => BooleanFunctionClass (Bool -> a) where
arity f = arity (f True) + 1
data BooleanFunction = forall a. (BooleanFunctionClass a) => BooleanFunction a String
instance Show BooleanFunction where
show (BooleanFunction _ str) = show str
しかし、セレクター(n個の引数の関数、k番目を返す)を実装する方法がわかりません。欲しいselector :: Int -> Int -> BooleanFunction
。助言がありますか?
PS。ごめん。MarkdownにTeXを挿入する方法がわかりません。