Mam standardowy typ danych reprezentujący formuły logiki predykatów. Funkcja przedstawiający zasadę eliminacji dedukcja naturalna dla alternatywy może wyglądać tak:Funkcja zwraca "Brak rozwiązania" Zamiast "Nic"
d_el p q =
if p =: (Dis r s) && q =: (Neg r) then Just s else
if q =: (Dis r s) && p =: (Neg r) then Just s else
Nothing where r,s free
x =: y = (x =:= y) == success
zamiast oceniać na nic, gdy zjednoczenie się nie powiedzie, funkcja zwraca żadnych rozwiązań w PACKS
:
logic> d_el (Dis Bot Top) (Not Bot)
Result: Just Top
More Solutions? [Y(es)/n(o)/a(ll)] n
logic> d_el (Dis Bot Top) (Not Top)
No more solutions.
Co mi brakuje, i dlaczego el
nie ocenia się na Nothing
, gdy unifikacja się nie powiedzie?
Językiem używam jest curry, do programowania langauge funkcjonalno-logiczna (patrz znaczniki). – danportin
oh - przepraszam ... ignorancja może być dość zawstydzająca ... – Carsten
Jak zapewne wiesz, "curry" to również termin, który ma znaczenie w innych językach (jak na przykład Haskell), więc może powinieneś [ dodaj trochę treści do strony wiki Stack Overflow dla tagu 'curry' (http://stackoverflow.com/edit-tag-wiki/45806). – MatrixFrog