我正在尝试解决以下问题——给定所有选择器(e^i_n)和一些布尔函数({f_1, f_2, f_n}
)枚举闭包中 n 个参数的所有函数(在 [f_1,f_2,..f_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。