Разбор лямбда-функции, описывающей часть логической схемы - Lisp

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, друзья! Очень прошу помочь в следующей задаче (-исчисление): - имеются константы следующего вида: - xL ;логическое НЕ - xLy ;логическое ИЛИ - x(yL)L ;логическое И - имеется булева функция: f (x,y,z) = x & y & z, т.е. два последовательных конъюнктора (первый с входами X, Y и второй с входами ВЫХОД ПЕРВОГО, Z (т.е. включены каскадом)). Эта же функция в лямбда-исчислении: xyz.(x(yL)L)(zL)L (до точки входные значения лямбда-функции, после точки - тело функции) Как можно видеть, b = x(yL)L - это первый конъюнктор, c = b(zL)L - второй. Проще всего решать через подстановку первой части функции (см. выражение C), т.е. разбирать схему с хвоста Необходимо сделать разбор входной строки с функцией вида "xyz.(x(yL)L)(zL)L", на выходе получить запись вида: И, вход: x, y, выход: b И, вход: b, z, выход: c Реализация желательна с использованием CommonLisp. PS. Сам могу написать эту прогу хоть Ассемблере, хоть на C, Pascal, PHP и иже с ними. Но LISP, а надо на нем, уже выкушал мне моцК. Все никак не могу выбрать то ли со строкой работать, то ли преобразовать ее в список и убиваться с ним. PSS. Очень надо... Общая задача намного сложнее, это ее малая часть, но там я уже сам по-аналогии.

Решение задачи: «Разбор лямбда-функции, описывающей часть логической схемы»

textual
Листинг программы
(task '(x L y))
 
==> (OR x y)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы