離散数学を解くための私のプログラムでは、ユーザーが一連の論理演算を入力できるようにしたいと考えています。たとえば、ユーザーが を入力すると、プログラムの残りの部分で使用let f (x:y:_) = x && y
する関数が得られます。f
GHCi では、 と入力するだけで簡単にプログラムをテストできますlet f (x:y:_) = x && y
。
このタスクを達成する方法がわかりません。eval
パッケージから関数を調べましたplugins
が、正しい関数ではないようです。Haskellでこれを行うことはできますか?
これを使用する予定のコードは次のとおりです。
type TruthTable = [[Bool]]
type TruthTableResult = [([Bool], Bool)]
solveTable :: ([Bool] -> Bool) -> Integer -> (TruthTableResult)
solveTable f n = let table = truthTable n
result = map f table
in zipWith (\v r -> (v, r)) table result