我想解決以下問題 - 給定所有選擇器(e^i_n)和一些布爾函數({f_1, f_2, f_n}
)枚舉閉包中的n個參數的所有函數(在[f_1,f_2,.. f_n] )。Haskell布爾函數實現
所以,我實現了BooleanFunctionClass和existencial BooleanFunction類型。 他們是哈斯克爾的狂妄精神嗎?
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。
將布爾函數建模爲BooleanFunction {arity :: Int,f :: [Bool] - > Bool}'會更容易。 –
我會嘗試這種方法,但它不是數學風格。 – KAction
你能舉一個你想要它做什麼的例子嗎? – augustss