मैं प्रोपोज़िशनल तर्क मॉडलिंग के लिए हास्केल में कुछ कोड लिखा हैविस्तार प्रोपोज़िशनल तर्क हास्केल
data Formula = Prop {propName :: String}
| Neg Formula
| Conj Formula Formula
| Disj Formula Formula
| Impl Formula Formula
| BiImpl Formula Formula
deriving (Eq,Ord)
हालांकि, वहाँ के बाद से डेटा प्रकार बंद कर दिया है, मोडल तर्क को यह विस्तार करने के लिए कोई प्राकृतिक तरीका है। इसलिए, मैंने सोचा कि मुझे इसके बजाय कक्षाओं का उपयोग करना चाहिए। इस तरह, मैं बाद में विभिन्न मॉड्यूल में आसानी से नई भाषा सुविधाओं को जोड़ सकता हूं। समस्या यह है कि मुझे बिल्कुल नहीं पता कि इसे कैसे लिखना है। मुझे कुछ
type PropValue = (String,Bool) -- for example ("p",True) states that proposition p is true
type Valuation = [PropValue]
class Formula a where
evaluate :: a -> Valuation -> Bool
data Proposition = Prop String
instance Formula Proposition where
evaluate (Prop s) val = (s,True) `elem` val
data Conjunction = Conj Formula Formula -- illegal syntax
instance Formula Conjunction where
evaluate (Conj φ ψ) v = evaluate φ v && evaluate ψ v
कुछ की तरह कुछ की तरह संयोजन की परिभाषा है। हालांकि, यह मेरे लिए अस्पष्ट है कि मैं इसे कैसे लिख सकता हूं ताकि यह काम करे।
आप पढ़ पसंद है, आप पा सकते हैं [इस] (http://okmij.org/ftp/tagless-final/course/lecture पीडीएफ) सहायक। – user2407038