0
런타임 중에 변수를 어떻게 바꿀 수 있습니까?하스켈 - 런타임 중 변수 변경
data Ausdruck = K Wahrheitswert -- Logical constant
| V Variable -- Logical Variable
| Nicht Ausdruck -- Logical negation
| Und Ausdruck Ausdruck -- Logical and
| Oder Ausdruck Ausdruck -- Logical or
| Impl Ausdruck Ausdruck -- Logical implied
| Esgibt Variable Ausdruck -- "exist"
| Fueralle Variable Ausdruck -- "all"
deriving (Eq,Show)
type Variables = Variable -> Bool
variables1 :: Variable -> Bool
variables1 (Var N1) = True
variables1 (Var N2) = False
variables1 (Var N3) = True
variables1 (Var N4) = True
variables1 (Var N5) = False
evaluate :: Prop -> Variables -> Bool
evaluate (K bool) belegung = bool
evaluate (V var) belegung = belegung var
evaluate (Nicht ausdruck) belegung = not (evaluate ausdruck belegung)
evaluate (Und ausdruck ausdruck2) belegung = (evaluate ausdruck belegung) && (evaluate ausdruck2 belegung)
evaluate (Oder ausdruck ausdruck2) belegung = (evaluate ausdruck belegung) || (evaluate ausdruck2 belegung)
지금 내가 한정사 "모든"을 추가 할 :
나는 이것을 얻었다. 그래서 N1을 False로 바꿀 때 여전히 진실론이라면 명제법을 확인하고 싶습니다. 그러나 런타임 중에 변수를 어떻게 변경할 수 있습니까?감사합니다 마크
'variables1 (Var N1) = False'와 같이 프로그램의 상태를 변경하는 사용자 입력을 제공하고 싶다는 점을 정확하게 알고 있습니까? –
'evaluate'은 이미 매개 변수화되어 있습니다. 두 번째 인수로'variables1' 이외의 함수를 전달하면됩니다. – chepner
Btw, Füralle은 완벽하게 합법적 인 생성자 이름입니다. – augustss