(define(app list1 list2)
(if(empty? list1) list2
(cons (car list1) (app(cdr list1)list2))))
(app ((list "↔" "→" "∧" "⊕" "∨" "¬")) (list "P" "Q" "R" "S" "U" "X" "Y" "Z"))
(define L (list "↔" "→" "∧" "⊕" "∨" "¬"))
(define (f L n)
(if (= n 0) "p"
(string-append "p" (car L) (f(cdr L) (- n 1)))))
(f L 3)
Вы имеете следующее рекурсивное определение Предложение:рекурсивное определение пропозиции
- T, F являются предложения (значение истинности пропозициональных переменных)
- Список пункт
- Пропозициональные буквы P , Q, R, S, U, X, Y, Z являются предложениями.
- Если A - предложение, то ¬A является предложением.
- Если A и B являются предложениями, то A⊕B, A → B, A∧B, A∨B, A↔B являются предложениями.
Напишите процедуру DrRacket, которая будет произвольно генерировать предложение с заданным количеством операций.
Я не мог выполнить функцию. Не могли бы вы мне помочь?
Вы должны сделать перестановки этих списков. Каждое из предложений «P Q R ...» должно быть переписано с помощью другого из «P Q R ...», помещая между ними логический оператор. Пример 'P^Q'' P v Q'' ~ P^Q' и т. Д. Это можно сделать с помощью [map] (http://docs.racket-lang.org/reference/pairs.html?q=map#%28def._%28%28lib._racket%2Fprivate%2Fmap..rkt%29 ._map% 29% 29). –